warnock@prism.clemson.EDU.UUCP (04/13/87)
In response to the recent request for a program to determine the speed of
another program, I submit the following to the net. It consists of:
SPEED.FOR - the program itself
SPEED.CLD - the command definition
SPEED.DOC - the documentation
(simple enough, right ?)
It's NOT in make format - it's just appended to this message.
I'll be happy to answer any questions I can !
Todd Warnock
Clemson University
ARPA: Warnock@PRISM.Clemson.EDU
CSnet: Warnock@Clemson.CSNET
BITnet: Warnock@Clemson
---------------------- SPEED.FOR -------------------------------------------
c********************************************************
c *
c Written by: Todd Warnock *
c VAX Systems *
c Clemson University Computer Center *
c Clemson, South Carolina 29634-2803 *
c *
c (803) 656-3703 *
c *
c BITnet: Warnock@Clemson *
c CSnet: Warnock@Clemson.CSnet *
c ARPA: Warnock@PRISM.Clemson.EDU *
c *
c Copyright (C) 1986,1987 Todd Warnock - permission is *
c hereby granted for the reproduction of this software, *
c on condition that this copyright notice is included *
c in the reproduction, and that such reproduction is *
c not for purposes of profit or material gain. *
c *
c********************************************************
program speed
implicit integer*4(a-z)
character terminal*20
character term_symbol*20
character speed_string*5
integer*2 channel
structure /iostat_block/
integer*2 iostat
byte transmit,
+ receive,
+ crfill,
+ lffill,
+ parity,
+ zero
end structure
record /iostat_block/ iosb
structure /characteristics/
byte class,
+ type
integer*2 width
union
map
integer*4 basic
end map
map
byte length(4)
end map
end union
integer*4 extended
end structure
record /characteristics/ charbuf
include '($ttdef)'
include '($iodef)'
c Get the symbol name from the CLI
c
call cli$get_value('TERMINAL',terminal)
call cli$get_value('SYMBOL',term_symbol)
speed_50 = tt$c_baud_50
speed_75 = tt$c_baud_75
speed_100 = tt$c_baud_100
speed_134 = tt$c_baud_134
speed_150 = tt$c_baud_150
speed_300 = tt$c_baud_300
speed_600 = tt$c_baud_600
speed_1200 = tt$c_baud_1200
speed_1800 = tt$c_baud_1800
speed_2000 = tt$c_baud_2000
speed_2400 = tt$c_baud_2400
speed_3600 = tt$c_baud_3600
speed_4800 = tt$c_baud_4800
speed_7200 = tt$c_baud_7200
speed_9600 = tt$c_baud_9600
speed_19200 = tt$c_baud_19200
status = sys$assign(terminal,channel,,)
if (.not. status) then
type*,'SPEED-F-DEVNOTFND, device not a terminal device'
goto 100
endif
status = sys$qio(,%val(channel),
+ %val(io$_sensemode),iosb,,,charbuf,%val(12),,,,)
if (.not. status) call lib$stop(%val(status))
if (iosb.transmit .eq. speed_50) term_speed = 50
if (iosb.transmit .eq. speed_75) term_speed = 75
if (iosb.transmit .eq. speed_100) term_speed = 100
if (iosb.transmit .eq. speed_134) term_speed = 134
if (iosb.transmit .eq. speed_150) term_speed = 150
if (iosb.transmit .eq. speed_300) term_speed = 300
if (iosb.transmit .eq. speed_600) term_speed = 600
if (iosb.transmit .eq. speed_1200) term_speed = 1200
if (iosb.transmit .eq. speed_1800) term_speed = 1800
if (iosb.transmit .eq. speed_2000) term_speed = 2000
if (iosb.transmit .eq. speed_2400) term_speed = 2400
if (iosb.transmit .eq. speed_3600) term_speed = 3600
if (iosb.transmit .eq. speed_4800) term_speed = 4800
if (iosb.transmit .eq. speed_7200) term_speed = 7200
if (iosb.transmit .eq. speed_9600) term_speed = 9600
if (iosb.transmit .eq. speed_19200) term_speed = 19200
status=ots$cvt_l_ti(term_speed,speed_string,,,)
if (.not. status) call lib$stop(%val(status))
status = str$trim(speed_string,speed_string,len)
status=lib$set_symbol(term_symbol,speed_string(1:len),)
if (.not. status) call lib$stop(%val(status))
100 end
------------------------ SPEED.CLD ------------------------------------------
DEFINE VERB SPEED
IMAGE SPEED
PARAMETER P1,LABEL=TERMINAL,PROMPT="terminal",VALUE(REQUIRED)
PARAMETER P2,LABEL=SYMBOL,PROMPT="symbol",VALUE(REQUIRED)
------------------------- SPEED.DOC ------------------------------------------
SPEED - Accepts, as input, a terminal and a symbol, and returns
the terminal speed to the symbol specified.
The following steps are used to install SPEED in the SYS$COMMON:[SYSEXE]
directory (to make it accessible from all cluster nodes.)
No special privileges are needed to run SPEED.
$backup/log speed.exe;0 sys$common:[sysexe]speed.exe;0
$set prot=(w:e) sys$common:[sysexe]speed.exe
$!
$! Optional, depending on whether you want SPEED shared or not.
$!
$install
replace/open/head/share speed ! the default is sys$common:[sysexe]
exit
The image must be INSTALLed each time the system boots, so it should be
placed in the system startup file. Also, the command must be added to the DCL
tables (if you so desire).
$ set def sys$library
$ set command speed /tables=dcltables/output=dcltables
Note: If the image SPEED is put anywhere OTHER than SYS$SYSTEM, the
file SPEED.CLD will have to be modified to reflect the location of the
image. (DEFINE IMAGE where$it$lives:SPEED)
------