#-h- address.bld 1129 asc 03-jul-84 14:10:35 dpm (dave martin) $! This command file causes the address file in ~msg to be rebuilt. $! It is suggested that this command file be run whenever the system $! reboots, as well as whenever the system accounting file is changed. $! This command should be run from a priveleged account, and assumes $! that the software tools logical names have already been defined. $! $! set verify $ addr:==$st_bin:addr $ @st_bin:dcldef/out=nla0: $ addr >~msg/address $! $! The following line is commented out, but may be re-enabled if $! you wish to eliminate some accounts from the mail system. A $! typical `nomail.sh' file might look like $! $! find <~msg/address -x "%account-1" "%account-2" ... | cat >~msg/address $! $! The -x option to find causes all lines but those matching the $! pattern[s] to be copied to standard output. If more than 10 accounts $! must be eliminated, the output of the find command can be piped $! into another find command, etc., until all of the undesirable accounts $! are eliminated. $! $! sh -v ~msg/nomail.sh $! $! This line assures that ~msg/address has the correct protection $! $ set protection=(g:r,w:r) st_msg:address. #-h- arcdel.sh 16 asc 03-jul-84 14:10:36 dpm (dave martin) ar t $1 | rm $2 #-h- arclist.sh 39 asc 03-jul-84 14:10:36 dpm (dave martin) alist $1 $2 $3 $4 $5 $6 $7 $8 $9 | lpr #-h- asm.sh 24 asc 03-jul-84 14:10:37 dpm (dave martin) rm $1.obj mac/nolist $1 #-h- asmlib.com 598 asc 03-jul-84 14:10:38 dpm (dave martin) $! $! Assemble "optimized" Software Tools library routines $! $ macr /nolist /object chcopy.mar $ macr /nolist /object clower.mar $ macr /nolist /object concat.mar $ macr /nolist /object cupper.mar $ macr /nolist /object equal.mar $ macr /nolist /object fold.mar $ macr /nolist /object gtftok.mar $ macr /nolist /object impath.mar $ macr /nolist /object index.mar $ macr /nolist /object length.mar $ macr /nolist /object scopy.mar $ macr /nolist /object stcopy.mar $ macr /nolist /object strcmp.mar $ macr /nolist /object strcpy.mar $ macr /nolist /object type.mar $ macr /nolist /object upper.mar #-h- asmprm.com 822 asc 03-jul-84 14:10:38 dpm (dave martin) $! $! Assemble the Software Tools primitives $! $ macr /nolist /object cctype.mar $ macr /nolist /object chmod.mar $ macr /nolist /object chown.mar $ macr /nolist /object closef.mar $ macr /nolist /object crelogsup.mar $ macr /nolist /object decnfo.mar $ macr /nolist /object devtyp.mar $ macr /nolist /object directory.mar $ macr /nolist /object fdel.mar $ macr /nolist /object gets.mar $ macr /nolist /object main.mar $ macr /nolist /object mark.mar $ macr /nolist /object myopen.mar $ macr /nolist /object openf.mar $ macr /nolist /object point.mar $ macr /nolist /object puts.mar $ macr /nolist /object rablst.mar $ macr /nolist /object rdpmpt.mar $ macr /nolist /object reads.mar $ macr /nolist /object rename.mar $ macr /nolist /object system.mar $ macr /nolist /object writes.mar $ macr /nolist /object getpriv.mar #-h- breakup.sh 524 asc 03-jul-84 14:10:39 dpm (dave martin) # this script file may be used to break monster fortran programs into # individual files. To use, simply type # # breakup fortfile [>main] # # breakup will place each function and subroutine on a file with the # same name and the extension .qq. If a main program appears # at the beginning of the file, it will be placed on standard output. # tr <$1 A-Z a-z |@ ch "[!#c][!#]*subroutine" "[!#c][!#]*function" "%?*$" "#-h- &@n&" |@ ch "%#-h-" "- ?*subroutine" "- " |@ ch "%#-h-" "- ?*function" "- " | asplit -v -t.qq #-h- build.com 695 asc 03-jul-84 14:10:40 dpm (dave martin) $ on error then continue $ if f$search("''p1'.fmt") .nes. "" then rename 'p1'.fmt st_tmp:'p1'.fmt $ fort/noopt/nolist/object='p1'.obj 'p1'.f $ open/write file temp.opt $ write file "''p1'.obj,-" $ write file "rlib/incl=(tools$main),-" $ if shared .eqs. "y" then write file "rlibshare/share,-" $ if shared .eqs. "Y" then write file "rlibshare/share,-" $ write file "rlib/libr" $ close file $ if f$search("''p1'.exe") .nes. "" then delete 'p1'.exe.* $ link/notrace/nomap/exe='p1'.exe temp.opt/options $ delete temp.opt.* $ if remfor .eqs. "y" then delete 'p1'.f.* $ if remfor .eqs. "Y" then delete 'p1'.f.* $ if remobj .eqs. "y" then delete 'p1'.obj.* $ if remobj .eqs. "Y" then delete 'p1'.obj.* #-h- build1.sh 281 asc 03-jul-84 14:10:40 dpm (dave martin) # # Create sect1 (Section 1 of the Tools Manual) from the ".fmt" files in # the ~tmp directory created by the build procedures. # cd ~tmp ls .fmt | ch .fmt | tee temp | ch "%?*$" "format &.fmt >& ; rm &.fmt" | sh -v rm sect1 ar uv sect1 &" | sh -v ar uv &" | sh -v ar uv &" | sh -v ar uv $1.com ch 'p3'.p1 $ ratp2 <'p3'.p1 >'p3'.f $ @build/out=nla0: 'p3' $ rm 'p3'.p1 'p3'.f #-h- dcldef.com 23 asc 03-jul-84 14:10:44 dpm (dave martin) $ define dcl_tools yes #-h- directory.cmd 297 asc 03-jul-84 14:10:45 dpm (dave martin) $ set verify $ if f$search("directory.cob") .nes. "" then delete directory.cob.* $ libr/extr=(AUXFMT,CLOSDR,DECNFO,DIRECTORY,DIR_INIT,FMTUIC,GDRAUX,GDRPRM)/outp=directory.cob rlib.olb $ libr/extr=(OPENDR,PR_INSTAL,PR_LOOKUP,RESUIC,SRTTIM)/outp=t.o rlib.olb $ appe t.o directory.cob $ delete t.o.* #-h- directory.ml 102 asc 03-jul-84 14:10:45 dpm (dave martin) AUXFMT CLOSDR DECNFO DIRECTORY DIR_INIT FMTUIC GDRAUX GDRPRM OPENDR PR_INSTAL PR_LOOKUP RESUIC SRTTIM #-h- dodcl.com 2027 asc 03-jul-84 14:10:46 dpm (dave martin) $ set noon $ @st_bin:ttdef/out=nla0: $ np1 := 'p1' $!!! $!!! the following line exists to cause general symbol definitions to be $!!! performed for the process. It is assumed that the logical name $!!! sys$manager has been defined, and that logdef.com contains symbol $!!! definitions which are normally done during login for each user $!!! $! @sys$manager:logdef.com $! alltools $!!! $!!! the following lines exist to permit Eunice images to be invoked from $!!! the software tools shell. Upon spawning of DCL to execute the verb $!!! passed to this command file, the Eunice directory is first searched $!!! for the corresponding verb. If found, an appropriate symbol definition $!!! is made, and the image invoked. $!!! $!!! In addition, if the verb is of the form ~eu/name, this forces $!!! the spawning of a Eunice image. Likewise, ~lo/name forces $!!! the execution of an image from the current working directory. $!!! Finally, ~st/name causes the software tools image to be activated. $!!! This is especially useful for spawning Software Tools images from $!!! within Eunice images. $!!! $! n = 'f$locate("/",p1)' $! if n .eq. 'f$length(p1)' then goto doit $! dev := 'f$extract(0,n,p1)' $! n = n + 1 $! if dev .eqs. "~LO" then goto iscd $! if dev .eqs. "~lo" then goto iscd $! if dev .eqs. "~EU" then goto iseu $! if dev .nes. "~eu" then goto tryst $! iseu: $! np1 := 'f$extract(n,20,p1)' $! goto doit $! tryst: $! if dev .eqs. "~ST" then goto isst $! if dev .nes. "~st" then goto trycd $! isst: $! zzzzzzzzz := $st_bin:'f$extract(n,20,p1)'.exe $! np1 := "zzzzzzzzz" $! goto doit $! trycd: $! if dev .nes. "~" then goto doit $! iscd: $! zzzzzzzzz := $'f$logical("SYS$DISK")''f$directory()''f$extract(n,20,p1)'.exe $! np1 := "zzzzzzzzz" $! doit: $! exist := $st_bin:exist.exe $! exist bin:'np1'.exe $! if $status .ne. 1 then goto go_on $! 'np1':=="$bin:''np1'.exe ''np1'" $ go_on: $ deassign sys$input $ assign/user 'f$logical("TT")' SYS$INPUT $ 'np1 'p2 'p3 'p4 'p5 'p6 'p7 'p8 $ if $status .gt. 1 then exit 101 #-h- dsplog.com 684 asc 03-jul-84 14:10:47 dpm (dave martin) $! $! Display values of Logical Names required for Software Tools $! $ write sys$output "" $ write sys$output "st_bin = ", "''f$logical("st_bin")'" $ write sys$output "st_lpr = ", "''f$logical("st_lpr")'" $ write sys$output "st_man = ", "''f$logical("st_man")'" $ write sys$output "st_msg = ", "''f$logical("st_msg")'" $ write sys$output "st_node = ", "''f$logical("st_node")'" $ write sys$output "st_src = ", "''f$logical("st_src")'" $ write sys$output "st_timezone = ", "''f$logical("st_timezone")'" $ write sys$output "st_tmp = ", "''f$logical("st_tmp")'" $ write sys$output "st_usr = ", "''f$logical("st_usr")'" $ write sys$output "" $ exit #-h- dummail 1 asc 03-jul-84 14:10:48 dpm (dave martin) #-h- fbuild.com 4086 asc 28-feb-86 14:31:50 dpm (dave martin) $! $! Build Software Tools utilities from sources $! $! $! Define some DCL symbols $! $ FORTRAN_build := @build/out=nla0: $ TCS_build := @tbuild/out=nla0: $! $! $! Build bootstrap utilities from FORTRAN sources. $! $ FORTRAN_build ar $ FORTRAN_build cat $ FORTRAN_build echo $ FORTRAN_build get $ FORTRAN_build ratp1 $ FORTRAN_build ratp2 $ FORTRAN_build rc $ FORTRAN_build rm $ FORTRAN_build sh $! $! Zap existing configuration file. $! $ rm config $! $! Create "portable" utilties which use the standard build procedure. $! $ TCS_build acat \src $ TCS_build admin \src $ TCS_build alist \src $ TCS_build apropos \src $ TCS_build ar \src $ TCS_build args \src $ TCS_build asam \src $ TCS_build asplit \src $ TCS_build axref \src $ TCS_build banner \src $ TCS_build bargraph \src $ TCS_build box \src $ TCS_build cat \src $ TCS_build ccnt \src $ TCS_build ch \src $ TCS_build cmp \src $ TCS_build comm \src $ TCS_build cpress \src $ TCS_build crt \src $ TCS_build crypt \src $ TCS_build date \src $ TCS_build dc \src $ TCS_build delta \src $ TCS_build detab \src $ TCS_build diff \src $ TCS_build echo \src $ TCS_build entab \src $ TCS_build expand \src $ TCS_build fb \src $ TCS_build fd \src $ TCS_build field \src $ TCS_build find \src $ TCS_build form \src $ TCS_build format \src $ TCS_build get \src $ TCS_build grep \src $ TCS_build incl \src $ TCS_build intro \src $ TCS_build isam \src $ TCS_build kwic \src $ TCS_build lam \src $ TCS_build lcnt \src $ TCS_build ll \src $ TCS_build ls \src $ TCS_build macro \src $ TCS_build man \src $ TCS_build mcol \src $ TCS_build mv \src $ TCS_build number \src $ TCS_build os \src $ TCS_build pack \src $ TCS_build pl \src $ TCS_build pr \src $ TCS_build printf \src $ TCS_build prlabl \src $ TCS_build pwd \src $ TCS_build rar \src $ TCS_build ratp2 \src $ TCS_build rc \src $ TCS_build rev \src $ TCS_build rm \src $ TCS_build ruler \src $ TCS_build sched \src $ TCS_build sedit \src $ TCS_build sepfor \src $ TCS_build sh \src $ TCS_build sleep \src $ TCS_build sort \src $ TCS_build spell \src $ TCS_build split \src $ TCS_build tail \src $ TCS_build tee \src $ TCS_build tr \src $ TCS_build tsort \src $ TCS_build ttt \src $ TCS_build txtrpl \src $ TCS_build ul \src $ TCS_build uniq \src $ TCS_build unrot \src $ TCS_build wc \src $ TCS_build wcnt \src $ TCS_build xch \src $ TCS_build xfind \src $ TCS_build xref \src $! $! Create VMS-Specific utilities which use the standard build procedure. $! $ TCS_build chmod \vms $ TCS_build chown \vms $ TCS_build cp \vms $ TCS_build cron \vms $ TCS_build exist \vms $ TCS_build fc \vms $ TCS_build kill \vms $ TCS_build ld \vms $ TCS_build lpr \vms $ TCS_build mkdir \vms $ TCS_build ps \vms $ TCS_build pstat \vms $ TCS_build resume \vms $ TCS_build send \vms $ TCS_build suspnd \vms $ TCS_build timer \vms $ TCS_build whereis \vms $ TCS_build who \vms $! $! Create utilities which don't use the standard build procedure. $! $! $! Build VMS version-dependent ADDR $! $ get \vms/addr.tcs >addr.w ??config $ ar x addr.w $ if( (vmsv3 .eqs. "y") .or. (vmsv3 .eqs. "Y") ) then goto addr3 $ ratp1 addr.r >addr.p1 $ goto addrx $ addr3: $ ar x \vms/rlib.w v3def $ ratp1 v3def addr.r >addr.p1 $ addrx: $ ratp2 addr.f $ @build/out=nla0: addr $ rm addr.p1 addr.f $ sh -c "ar t addr.w | rm" $ rm addr.w $! $! Build the text editors $! $ get \src/ed.tcs >ed.w ??config $ ar x ed.w $ ratp1 ed.r >ed.p1 $ ratp2 ed.f $ @build/out=nla0: ed $ rm ed.p1 ed.f $! @dbuild bigeddef ed biged $ @dbuild edef ed e $ sh -c "ar t ed.w | rm" $ rm ed.w $! $! Build the fancy shells $! $ get \src/sh.tcs >sh.w $ ar x sh.w $ @dbuild eshdef sh esh $ @dbuild hshdef sh hsh $ sh -c "ar t sh.w | rm" $ rm sh.w $! $! Build other RatFors $! $ get \src/ratfor.tcs >ratfor.w ??config $ ar x ratfor.w $ copy ratfor.fmt st_tmp:ratp1.fmt $ copy ratfor.fmt st_tmp:rat77.fmt $ @dbuild rat77d ratfor rat77 $ @dbuild ratford ratfor ratfor $ sh -c "ar t ratfor.w | rm" $ rm ratfor.w $! $! And the other directory lister... $! $ get \src/ls.tcs >ls.w $ ar x ls.w $ @dbuild ddef ls d $ sh -c "ar t ls.w | rm" $ rm ls.w #-h- foreign.com 581 asc 03-jul-84 14:10:50 dpm (dave martin) $ n = 'f$locate(":",p1) $ dev := 'f$logical("SYS$DISK")' $ colon = 0 $ if n.eq.'f$length(p1)' then goto getdir $ n = n + 1 $ colon = n $ dev := 'f$extract(0,n,p1)' $ getdir: $ start = 'f$locate("[",p1)' $ stop = 'f$locate("]",p1)' $ n = stop - start + 1 $ dir := 'f$directory()' $ filst = colon $ fillen = 'f$length(p1)' $ if stop.eq.fillen then goto getfil $ dir := 'f$extract(start,n,p1)' $ filst = stop + 1 $ fillen = 'f$length(p1)' - filst $ getfil: $ file := 'f$extract(filst,fillen,p1)' $ n = 'f$locate(".",file)' $ root := 'f$extract(0,n,file)' $ 'root':==$'dev''dir''file' #-h- genrevlev.sh 385 asc 03-jul-84 14:10:51 dpm (dave martin) # this script generates the current revlevels of the .tcs files found in # \src and \vms on this disk # ls \src/.tcs | ch .tcs | ch "%?*$" "echo &; pl 2 \src/&.tcs" | sh -v >temp ls \vms/.tcs | ch .tcs | ch "%?*$" "echo &; pl 2 \vms/&.tcs" | sh -v >>temp ed - temp <$1 rm temp #-h- hispmt.cmd 503 asc 24-feb-86 20:53:03 dpm (dave martin) $ set verify $ if f$search("hispmt.cob") .nes. "" then delete hispmt.cob.* $ libr/extr=(EDLINE,LEDPMT,LOGEND,LOGPMT,PLOG00,PLOG01,PLOG03,PLOG04)/outp=hispmt.cob rlib.olb $ libr/extr=(PLOG06,PLOG07,PLOG08,PLOG09,PLOG10,PLOG11,PLOG12,PLOG13)/outp=t.o rlib.olb $ appe t.o hispmt.cob $ delete t.o.* $ libr/extr=(PLOG14,PLOG15,PLOG16,PLOG17,PLOG18,PLOG19,PLOG20,PLOG21)/outp=t.o rlib.olb $ appe t.o hispmt.cob $ delete t.o.* $ libr/extr=(PLOG22,PLOG23)/outp=t.o rlib.olb $ appe t.o hispmt.cob $ delete t.o.* #-h- hispmt.ml 175 asc 03-jul-84 14:10:52 dpm (dave martin) EDLINE LEDPMT LOGEND LOGPMT PLOG00 PLOG01 PLOG03 PLOG04 PLOG06 PLOG07 PLOG08 PLOG09 PLOG10 PLOG11 PLOG12 PLOG13 PLOG14 PLOG15 PLOG16 PLOG17 PLOG18 PLOG19 PLOG20 PLOG21 PLOG22 #-h- library.com 87 asc 03-jul-84 14:10:53 dpm (dave martin) $ if f$search("rlib.olb") .nes. "" then delete rlib.olb.* $ libr/create rlib.olb *.obj #-h- lnedit.cmd 866 asc 03-jul-84 14:10:54 dpm (dave martin) $ set verify $ if f$search("lnedit.cob") .nes. "" then delete lnedit.cob.* $ libr/extr=(LE_ALPHAN,LE_BCKUPC,LE_D2EOL,LE_DNOISE,LE_DS,LE_FCLOSD,LE_FGDRPR,LE_FLUSHQ)/outp=lnedit.cob rlib.olb $ libr/extr=(LE_FOPEND,LE_GTHIST,LE_INSSTR,LE_LEDIT,LE_LEINIT,LE_LERROR,LE_LL2PL,LE_LNGEST)/outp=t.o rlib.olb $ appe t.o lnedit.cob $ delete t.o.* $ libr/extr=(LE_MVCURQ,LE_NGETCH,LE_NGTNUM,LE_PBCMD,LE_PBINIT,LE_PBSTR,LE_PUTBAK,LE_PUTCHF)/outp=t.o rlib.olb $ appe t.o lnedit.cob $ delete t.o.* $ libr/extr=(LE_PUTCHQ,LE_PUTSTF,LE_PUTSTQ,LE_RAWIO,LE_RAWTXT,LE_RECOGF,LE_SAVELN,LE_SCN4CH)/outp=t.o rlib.olb $ appe t.o lnedit.cob $ delete t.o.* $ libr/extr=(LE_SCNBBW,LE_SCNBCK,LE_SCNBLW,LE_SCNEBW,LE_SCNELW,LE_SPAWND,LE_SPNBCK,LE_UPDLIN)/outp=t.o rlib.olb $ appe t.o lnedit.cob $ delete t.o.* $ libr/extr=(LE_WHITES,LNEDIT)/outp=t.o rlib.olb $ appe t.o lnedit.cob $ delete t.o.* #-h- lnedit.ml 407 asc 03-jul-84 14:10:55 dpm (dave martin) LE_ALPHAN LE_BCKUPC LE_D2EOL LE_DNOISE LE_DS LE_FCLOSD LE_FGDRPR LE_FLUSHQ LE_FOPEND LE_GTHIST LE_INSSTR LE_LEDIT LE_LEINIT LE_LERROR LE_LL2PL LE_LNGEST LE_MVCURQ LE_NGETCH LE_NGTNUM LE_PBCMD LE_PBINIT LE_PBSTR LE_PUTBAK LE_PUTCHF LE_PUTCHQ LE_PUTSTF LE_PUTSTQ LE_RAWIO LE_RAWTXT LE_RECOGF LE_SAVELN LE_SCN4CH LE_SCNBBW LE_SCNBCK LE_SCNBLW LE_SCNEBW LE_SCNELW LE_SPAWND LE_SPNBCK LE_UPDLIN LE_WHITES LNEDIT #-h- locate.sh 38 asc 03-jul-84 14:10:55 dpm (dave martin) who | find $1 $2 $3 $4 $5 $6 $7 $8 $9 #-h- manhdr 652 asc 03-jul-84 14:10:56 dpm (dave martin) .de hd .pl 60 .bp .in 4 .rm 72 .he '$1 $2'$3 $4 $5 $6 $7 $8'$1 $2' .fo ''-#-'' .fi .in 8 .ti -4 NAME .br $1 - .en .de sy .sp 1 .ti -4 SYNOPSIS .br .nf .en .de ds .fi .sp .ti -4 DESCRIPTION .br .en .de fu .fi .sp 1 .ti -4 FUNCTION .br .en .de di .fi .sp .ti -4 DIAGNOSTICS .br .en .de re .fi .sp .ti -4 RETURNS .br .en .de fl .fi .sp .ti -4 FILES .br .en .de ex .fi .sp .ti -4 EXAMPLES .nf .br .en .de im .fi .sp .ti -4 IMPLEMENTATION .br .en .de sa .fi .sp .ti -4 SEE ALSO .br .en .de am .fi .sp .ti -4 ARGUMENTS MODIFIED .br .en .de ca .fi .sp .ti -4 CALLS .br .en .de bu .fi .sp .ti -4 BUGS/DEFICIENCIES .br .en .de au .fi .sp .ti -4 AUTHORS .br .en #-h- mintro.fmt 1602 asc 03-jul-84 14:10:57 dpm (dave martin) The Software Tools on-line documentation is divided into several sections. The standard manual sections contain the following information: .sp .in +2 .ti -2 1 Writeups on the utilities available in the system (e.g. ed) .ti -2 2 Writeups on the virtual machine system calls available to ratfor programmers. .ti -2 3 Writeups on library routines available to ratfor programmers. .ti -2 4 Primers on some of the more heavily used utilities. .in -2 .sp In addition, other site-dependent manual sections may be maintained by your system manager. .sp Three utilities are currently available for perusing the on-line documentation: intro, apropos and man. Specific information can be obtained on each of these utilities by performing a command of the form: .sp man NAME .sp where NAME is replaced by intro, apropos or man. .sp In addition, some of the more heavily used forms of these commands are listed below. .sp .in +5 .ti -5 man -s .br List all available manual sections. .sp .ti -5 man -s1 .br List all available entries in manual section 1. .sp .ti -5 man ed .br List the manual entry on `ed'. If entries exist in more than one section, only the first is displayed, with a note concerning the other entries displayed following the first entry. .sp .ti -5 man -a -s2 .br Display all entries in section 2. .sp .ti -5 man -a .br Display all entries for all sections (the entire manual). .sp .ti -5 intro -s2 .br Display a one-line synopsis of all entries in section 2. .sp .ti -5 apropos mail .br Display a one-line synopsis of all entries in the manual that match the pattern `mail'. .in -5 #-h- mkboot.sh 1195 asc 24-feb-86 20:53:04 dpm (dave martin) von date # # Generate files necessary for bootstrapping # ar x \vms/extra.w ar x \vms/rlib.w # # Extract the assembly-language routines from their archives # ar x prim.m ar x lib.m # # Generate the FORTRAN boostrap for the ratfor routines # rc -r prim.r ar x prim.r defns ratp1 v3def defns spawn | ratp2 >spawn.v3 ratp1 defns spawn | ratp2 >spawn.v4 rm defns mv prim.f prim.ff ar x lib.r rc -r arsubs.r rc -r ds.r rc -r help.r rc -r hispmt.r rc -r imsort.r rc -r misc.r rc -r packsub.r rc -r pattern.r rc -r pb.r rc -r rawpmt.r rc -r tabsubs.r rc -r tb.r # ar x lnedit.w rc -r lnedit.r ar t lnedit.w | rm # cat arsubs.f ds.f help.f hispmt.f imsort.f lnedit.f misc.f packsub.f >lib.ff rm arsubs.f ds.f help.f hispmt.f imsort.f lnedit.f misc.f packsub.f cat pattern.f pb.f rawpmt.f tabsubs.f tb.f >>lib.ff rm pattern.f pb.f rawpmt.f tabsubs.f tb.f ar t lib.r | rm ar t \vms/rlib.w | rm # # Create the FORTRAN sources necessary for bootstrapping. # mkboot1 ar mkboot1 cat mkboot1 echo mkboot1 get mkboot1 ratp2 mkboot1 rc mkboot1 rm mkboot1 sh # # ... and one more by hand ... # get \src/ratfor.tcs >ratfor.w ar x ratfor.w ratp1 ratp1d ratfor.r | ratp2 >ratp1.f ar t ratfor.w | rm rm ratfor.w date #-h- mkboot1.sh 116 asc 03-jul-84 14:10:59 dpm (dave martin) # # Create the FORTRAN bootstrap for a utility. # get \src/$1.tcs >$1.w ar x $1.w rc -r $1.r ar t $1.w | rm rm $1.w #-h- mpath 8 asc 03-jul-84 14:10:59 dpm (dave martin) 1 2 3 4 #-h- msghlp 10594 asc 03-jul-84 14:11:02 dpm (dave martin) #-h- banner 106 asc 23-apr-82 11:54:56 j (sventek j) Software Tools MSG System type ? for help type # for news type % for intro #-h- first 46 asc 21-oct-80 07:15:39 The following commands are recognized by msg: #-h- a 565 asc 23-oct-80 08:15:23 a[nswer] message Answer message number: This command causes sndmsg to be spawned as a sub-process, with the To field being the sender of the indicated message, and the subject field consisting of the string "Re: ", where is replaced by the subject of the indicated message. In addition, the message header of the answering message will contain the line "In-reply-to: Your message of " where is replaced by the date of the indicated message. The user will be prompted for Cc addresses and the message to be sent. #-h- b 329 asc 21-oct-80 07:15:39 b[ackup] to previous message and type it Backing up - previous message is: This command displays the previous message (i.e. current message - 1). It is the inverse of the Next command. The current message number is decremented. If the current message number is 1 when Backup is invoked, an error message is displayed. #-h- c 271 asc 21-oct-80 07:15:40 c[urrent] message number and file Current message is nn of mm messages in file This command displays: 1. the number of the current message 2. the total number of messages in the message file 3. the file name of the currently active message file #-h- d 371 asc 21-oct-80 07:15:41 d[elete] message(s) Delete (message sequence) This command marks the messages specified in MSG-SEQUENCE as deleted, as indicated by an asterisk following the message number in the headers of the affected messages. The actual messages in the message file are not affected unless an Overwrite, Exit or Write command is executed before leaving MSG. #-h- e 242 asc 21-oct-80 07:15:41 e[xit] and update old file Exit and update old file [type SPACE to confirm] This command overwrites the current message file, but permits the user to leave MSG rather than re-reading the message file as Overwrite does. #-h- f 284 asc 21-oct-80 07:24:01 f[orward] message Forward message number: This command causes sndmsg to be spawned as a sub-process, with the message consisting of the header and message body of the indicated message. The user will be prompted for To, Cc and Subject fields upon entry into sndmsg. #-h- g 578 asc 21-oct-80 07:15:42 g[o to] message specified and print it Go to message number: This command permits explicit changing of the current message number. If is not in the range of acceptable values (i.e. it is less than 1 or greater than the number of messages in the file), an error message is displayed and the current message number will remain unchanged. Legal inputs for are: 1. a number in the range 1 <= n <= NMSGS 2. f for the first message (message number 1) 3. l for the last message 4. for the current message number (a noop) #-h- h 724 asc 21-oct-80 07:15:43 h[eaders] print headers of message(s) Headers (message sequence) This command displays the headers for the messages defined by the specified message sequence. Headers corresponding to deleted messages have an asterisk printed after the message number for that particular message. The format for the headers is: The headers are displayed a screenful at a time. After a screenful has been output, if there are more headers remaining to be displayed, the user is prompted with the string "[type SPACE to continue]". A response of SPACE will cause the next screenful to be displayed. Any other response terminates the listing of the headers. #-h- i 185 asc 21-oct-80 07:15:44 i[nformation] on command displayed Information - type command character: This command displays full help information for those commands listed by the ? command. #-h- j 275 asc 21-oct-80 07:15:44 j[ump] into shell - return by typing logout to shell Jump into shell [type SPACE to confirm] This command drops the user into the Software Tools shell. All normal commands may be executed while in the shell. Control returns to MSG by typing logout to the shell. #-h- k 54 asc 21-oct-80 07:15:45 k[ey] encryption-key *** UNIMPLEMENTED *** #-h- l 539 asc 21-oct-80 07:15:45 l[ist] message(s) in print format on file List (message sequence) on file name: This command lists all the specified messages on the file specified (overwriting the current contents of . A preface page, consisting of a FORMFEED character and the headers of the selected messages is output first, followed by each message preceded by a FORMFEED character. The file output by List can be disposed to a printer using the lpr shell command, resulting in a message on each page of the output. #-h- m 341 asc 21-oct-80 07:15:46 m[ove] message(s) to another mail file and mark them deleted Move (message sequence) into file name: This command is a convenient combination of the Put and Delete commands. It will first put the selected messages into the file specified and then mark the messages as deleted in the header information. #-h- n 292 asc 21-oct-80 07:15:46 n[ext] message is typed Next message is: This command displays the next message (current message number + 1) and increments the current message number. If the current message is already the last one, an error message is displayed and the current message number remains unchanged. #-h- o 260 asc 21-oct-80 07:15:47 o[verwrite] current file and re-read Overwrite old file [type SPACE to confirm] This command will overwrite the current file (specified by ), eliminating any deleted messages. It then re-reads the file, re-numbering the messages. #-h- p 399 asc 21-oct-80 07:15:47 p[ut] copies of message(s) in another mail file Put (message sequence) into file name: This command will put the messages specified by into the file specified by . If the file does not exist, it will create the file and write the messages into it. If the file already exists, the messages are appended to those already in the file. #-h- q 173 asc 23-oct-80 08:10:18 q[uit] leave MSG without updating current file Quit [type SPACE to confirm] This command allows the user to leave MSG without modifying the current message file. #-h- r 313 asc 21-oct-80 07:15:48 r[ead] in another mail file Read file name: This command allows the user to use MSG on files created by previous Move or Put invocations. The current message file is closed with no modification, and the file specified is read, displaying the headers before prompting for the next command. #-h- s 287 asc 21-oct-80 07:24:03 s[ndmsg] invoke SNDMSG to send a message (and return to MSG) Sndmsg [type SPACE to confirm] This command causes SNDMSG to be spawned as a sub-process, allowing the user to send a message without leaving MSG; when SNDMSG exits, MSG regains control with no changed to files, etc. #-h- t 557 asc 21-oct-80 07:15:49 t[ype] message(s) on standard output Type (message sequence) This command displays the messages specified. If more than one message is specified, the user is prompted with "[type SPACE for next message]" after each message. In addition, if a particular message is larger than one screenful, the user is prompted after each screenful. A negative response to this latter prompt results in the termination of the display of the particular message, while a negative response to the former results in termination of the Type command. #-h- u 127 asc 21-oct-80 07:15:50 u[ndelete] message(s) Undelete (message sequence) This command undoes the actions of the Delete command. #-h- w 74 asc 21-oct-80 17:03:18 w[rite] current file, sorted by date field *** UNIMPLEMENTED *** #-h- news 54 asc 21-oct-80 07:15:51 #[news] print MSG news No news is good news! #-h- help 32 asc 21-oct-80 07:15:51 ?[help] print this list #-h- intr 908 asc 21-oct-80 07:15:52 %[intro] type an introduction to MSG (for first-time users) If you are a new MSG user, you probably need ONLY the following commands: t type message(s) on terminal; common options are `a' for all messages or `' (where is an integer) for message . d delete a message after reading it; common options as above. e exit MSG and move messages which have not been deleted to your mail file (`mbox' in your home directory). q quit MSG without updating your mail file; if there are any messages left, you will be notified when you next login (or the next time you run `postmn'). NOTE: These command characters should NOT be followed by a RETURN. When you type one of them, MSG will immediately prompt you for more input. To print a copy of the MSG primer on the lineprinter, type sh -c "msgprim | lpr" #-h- last 53 asc 21-oct-80 07:15:52 For more information, use the i[nformation] command. #-h- sequ 717 asc 21-oct-80 07:15:53 (1) Any single message number, as listed in the headers. (2) Any two message numbers separated by `:' or `-'. This implies a range of messages (e.g. 2-5). (3) Any sequence of the previous two types, separated by commas. For example, `1,3,5-7,10'. (4) Special types of sequences, determined by the first character typed in response to the `(message sequence)' prompt: RETURN The current message. a All messages. d All `deleted' messages. f All messages whose `From:' field match a string. s All messages whose `Subject:' field match a string. u All `undeleted' messages. (The user is prompted for the string in the `f' and `s' sequences.) #-h- msgprim.sh 12 asc 03-jul-84 14:11:05 dpm (dave martin) man -s4 msg #-h- msgtest.sh 3086 asc 03-jul-84 14:11:06 dpm (dave martin) cat <= 3.0. Toolgen.doc in this directory is an annotated dialogue of a TOOLGEN, with user replies in boldface. [...DOC] Archive files containing the format input files for the manual entries in sections 2-4 of the manual. [...MSGSYS] The initial distribution of the Software Tools Distributed Mail System. [...OLDMSG] The TCS archives for the previously released mail utilities. [...SRC] The source for the portable VOS utilities. [...VMS] The source files for the VMS-specific tools and primitive -4- Release Notes functions. -5- Release Notes On Disk Structure of the Tools VOS The tools system uses 6 directories which may be scattered over one or more of your disks, with an optional seventh directory at the discretion of the site management. Each known directory is defined as a system logical name; each logical name is of the form ddnn:[dir...] - i.e. a device AND directory specification. st_bin This defines `~bin', the directory in which the distributed images are built and kept. This directory should have the protection [rwe,rwe,re,re]. st_usr Site-specific tools, scripts and other known files should be kept here (~usr). The protection should be [rwe,rwe,re,re]. st_tmp The scratch files created by the tools are kept here (~tmp). As such, the directory must have the protection [rwe,rwe,rwe,rwe]. In addition, all users of the tools must have a quota on the disk which st_tmp points to, if quotas are enabled on that disk. st_lpr The files formatted by the `lpr' tool which are queued to the print symbiont are kept here (~lpr). The protections and quota considerations are the same as for ~tmp. st_msg The known files for the mail system are kept here (~msg). The protection should be [rwe,rwe,re,re]. st_man The archives and indices used by the `man' and `intro' utilities are kept here (~man). The protection should be [rwe,rwe,re,re]. st_src (Optional) The source files for the tools modified locally should be placed here (~src). In addition, the VOS requires two other system logical names to run: st_node - the name of your node in a network; if you are not a member of a net, pick one that appeals to you. st_timezone - the three character mnemonic for the timezone in which the machine is situated. Only the first character is used, as routines exist in the library to determine the state of standard/daylight time. -6- Release Notes Two other logical names can be defined at the discretion of site management: sys_tools - This should be defined as the same value as st_bin. It is only for compatibility with previous releases. st_new_versions - If this is defined to be the value "YES", then the tools will create a new version of a file when writing a file. This feature has just been added, so there may be some complications with its use. The logical name can be defined in any of the three name tables and have the desired effect. As such, it is an individual option to define it at LBL. -7- Release Notes Runtime requirements The system logical names described above. The file st_bin:tooldef.com defines the tools as foreign symbols so that they can be invoked from DCL. Invocation of the command file from a system login file guarantees the symbol definitions for the tools for all users when they log in. Alternatively, interested users may invoke @st_bin:tooldef in their individual login.com files. Several of the images need to be installed with enhanced privilege to provide full functionality to all users. They are: * ps (GROUP,WORLD) - lists valuable information on processes in the system. * who (GROUP,WORLD) - lists who is logged into the system, and other info. * send (OPER) - inter-terminal write facility that is not specific to any particular type of terminal. * sh (DETACH,CMEXEC) - the DETACH privilege is required by the shell to permit the user to spawn background processes. If this feature is not supported locally, then do not install with the privilege. The CMEXEC privilege permits the shell to redefine the process logical name SYS$DISK at supervisor mode when performing a `cd' command, such that the device assignment remains when leaving the shell. This is done by changing mode to EXEC, redefining the logical name at supervisor mode, and returning to USER mode. * esh (DETACH,CMEXEC) - same as for sh. * hsh (DETACH,CMEXEC) - same as for sh. In addition, if `ed' or `e' are heavily used on your system, it is suggested that they be installed /SHARED/OPEN/HEADER_RESIDENT. In the same vein, if the tools have been built with the shared global image, RLIBSHARE.EXE, it should be installed /SHARED/OPEN to facilitate global sharing of the tools runtime library. The file st_bin:tools.ins is a DCL command file which causes the above eight images to be installed with the above privileges, and can be invoked during system startup. -8- Release Notes While the system is being built during TOOLGEN, the file st_bin:sysuaf.mod is generated, which is a DCL command file to cause authorize to modify all accounts on your system to reflect the suggested quota values to effectively use the tools. The suggested values are: PRCLM 10 BYTLM 30000 FILLM 75 TQELM 40 PGFLQUOTA 16384 These values typically permit a user to have up to 5 processes active on his behalf. The most common problem incurred if the quotas are insufficient is the error message "Cannot spawn process" when attempting to invoke images from one of the shells. It is a good idea to peruse sysuaf.mod and remove accounts from it which do not need to be modified. -9- Release Notes Source File Structure The source code for `tool' is contained in a file [...SRC]tool.tcs (if the tool is portable across operating systems) or [...VMS]tool.tcs (if it is an VMS-specific tool). This TCS source file contains an edit history of all changes made to the source. The output of the `get' utility operating on a `.tcs' file results in a file (tool.w) which is all of the environment necessary to rebuild the tool, provided that the VOS is operational. The tool.w file is an archive containing: 1. All of the files "included" by the ratfor source code. 2. The ratfor source file, tool.r. 3. The format input for the manual entry, tool.fmt. 4. And optionally, any extra definition files needed to build alternate versions of the tool (eg. sh => hsh). As an example, suppose that you wish to change the subroutine "module" in "tool". The suggested scenario is as follows: $ !Fetch the file tool.tcs from the appropriate directory in the container $ !file on tape into st_src $ hsh % get ~src/tool.tcs tool.w % ar xv tool.w % ar xv tool.r module % ed module (make changes and write file) % ar uv tool.r module % rc -v tool.r % (test out new tool. repeat last three steps until satisfied.) % ed tool.fmt (modify writeup to reflect changes) % ar uv tool.w tool.r tool.fmt % cp tool.exe ~usr/tool.exe % delta tool.w ~src/tool.tcs (Identify in the comments the reason for the changes, and which modules changed.) % format tool.fmt >tool % ar uv ~man/s1 tool % asam <~man/s1 | sort >~man/i1 Placing tool.exe in ~usr causes the shell to find your modified version of "tool" rather than the distributed one. The last two commands above cause the manual entry for `tool' to correctly correspond to the utility itself. -10- Release Notes Source for Primitive and Library Functions The source archive for the primitive and library functions may be found on [...VMS]rlib.w. This archive consists of several modules: 1. prim.m - an archive of macro files which are written in assembler and used by one or more tools. These routines are VMS-specific. 2. lib.m - assembler versions of portable ratfor routines which are used by one or more tools. 3. prim.r - archive of ratfor source routines which are VMS-specific and used by one or more tools. 4. lib.r - an archive of ratfor archives of portable library routines. 5. other files included by ratfor when processing prim.r. To assemble any of the modules in prim.m or lib.m, it is necessary to extract the module(s) and assemble them individually % ar xv prim.m directory.mar; mac/nolist directory To modify one of the routines in prim.r, simply extract it using the archiver, edit it up, update the archive, and recompile via % ar xv prim.r dscbld; ed dscbld; ar uv prim.r dscbld % rc -cv prim.r To modify one of the routines in lib.r, it is necessary to perform two extractions and two updates, as in % ar xv lib.r arsubs.r % ar xv arsubs.r aopen % ed aopen % ar uv arsubs.r aopen % rc -cv arsubs.r % ar uv lib.r arsubs.r Of course, after generating new object modules for modified routines, it is necessary to make a system-specific version of st_bin:rlib.olb in st_usr, and to replace the object module in st_usr:rlib.olb. It is also a good idea to avoid replacing the modified modules in the archives until you are sure that they work. Writeups on all primitive routines which are to be visible to programmers may be found using the `man' command on section 2 of the manual. Writeups for library routines are in section 3. -11- Release Notes Manual entry structure In order to simplify the generation of manual entries for utilities and functions, a set of `format' macros are defined in the file `~bin/manhdr'. For the correct working of the `intro' utility, it is necessary that the first three lines of any site-dependent writeups consist of .so ~bin/manhdr .hd (
) () one line description of the tool or function where is replaced by the name of the function or tool,
is the section of the manual this entry is for and is the date the document was created. The .hd macro guarantees that the margins are correct, the header line on the manual pages is consistent with the software tools standard, and that NAME name - one line description of the tool or function appears in the writeup. This particular landmark is used by the intro utility to list the one-liners for the known entries in each section. The best method is to peruse the macros in ~bin/manhdr and to look at some of the writeups supplied with the system. -12- Release Notes Legal file specifications for the tools The following lists legal VMS file specs for the tools and valid tools pathname equivalents: DEC format Path format ------------------------------- ----------------------------------- file.typ.ver file.typ.ver [dir]file.typ.ver /dir/file.typ.ver [dir.sub...]file.typ.ver /dir/sub/.../file.typ.ver [.sub]file.typ.ver sub/file.typ.ver [-.sub]file.typ.ver \sub/file.typ.ver ddnn:[dir]file.typ.ver /ddnn/dir/file.typ.ver host::ddnn:[dir]file.typ.verp /@host/ddnn/dir/file.typ.ver ? ~name/file.typ.ver ? ~/file.typ.ver In all cases, the pathname equivalent consists of replacing the many and varied VMS delimiters by slashes, which is typically a lower-case character on all terminals and is normally easy to strike using the right pinky. In addition, the backslash (\) is used to go up in the directory tree, equivalent to DEC's [-] construct. The ~name capability is available for the seven known directories of the tools system, ~bin, ~usr, ~tmp, ~lpr, ~msg, ~man and ~src. They permit one to write portable scripts for utilities across different operating systems. Also, ~user, where `user' is the login name of a user on the system maps onto that user's home directory. The ~/ is shorthand for the user's home directory. In utilities which manipulate directories, all of the above formats are valid when the file.typ.ver trailer is removed. -13- Release Notes Changes for the Spring 1982 Release Modified Utilities * `dspc' has been removed. The functionality is now provided by `cat' using the "-v" flag. * `roff' is no longer distributed, having been superceded by `format'. * `crt' now reads the terminal in rare mode. * `ed' and `e' accept several new commands. See the manual entries for details. * `fb', `find' and `grep' understand the flag "-i" which causes pattern matches to be case insensitive. * `man' has been rewritten to support sections of the manual and to page the output to the user's terminal. * `ratfor' understands character constants of the form 'c', as in the C programming language. As such, the apostrophe (') can no longer be used to delimit hollerith strings and strings in `string' declarations. Escaped characters may be expressed as '@c' (eg. '@n' == NEWLINE). The version of ratfor distributed in the Spring 1981 release is provided as `oldratfor' to permit conversion of the source code at the programmer's convenience. To aid the conversion process, an utility `txtrpl' is provided such that txtrpl new_ratfor_file ~bin/pf will convert all the missing manifest constants to character constants. Of course, if `old_ratfor_file' was an archive, you will need to salvage `new_ratfor_file' before using it. * `rm' understands a flag "-i" which causes the file removal process to be interactive. -14- Release Notes Changes for the Spring 1982 Release Modified primitives * remove - remove a file old: call remove(file) new: stat = remove(file) * note - note current address of file pointer old: call markl(fd, addr) new: stat = note(addr, fd) * homdir - determine user's home directory old: call homdir(buf) new: call homdir(buf, dtype) * mailid - return the user's mail identification string Comment strings inside of parentheses () now are returned by mailid. If your code does not expect any blanks in the buffer returned, you will have to add the following code call mailid(user) i = index(user, ' ') if (i > 0) user(i) = EOS -15- Release Notes Changes for the Fall 1982 Release Modified Utilities * Bugs fixed in `fb', `format', `crt', `msg', `oldratfor', `os', `send' and `xch'. No change in functionality. * `rc', `fc' and `ld' modified to understand the "-m" flag, which indicates that a load map is to be generated. In addition, specifying a "-d" causes the FORTRAN source file to be retained, for use with the symbolic debugger, and no longer forces the generation of a load map. * `man' will now report all known manual sections when invoked with a bare "-s" option. * `ratfor' has had several bugs fixed, most notably the integer overflow problem when gobbling large numeric strings. Strings quoted with apostrophes (') will now be handled as before, except for those of the form 'c' and '@c'. A "-n" flag will cause `ratfor' to forego the loading of the symbols file. * `sh' now understands several new internal commands, including aliases and parameters. Consult the manual page for more information. Additionally, commented commands in scripts are handled differently. Formerly, if a '#' was the first character of a line, the entire line was treated as a comment. Now, if the verb of a command is a '#', then that command is a comment. For example: echo this; # this is a comment; echo that is valid and will result in the output this that * `form' now can be informed that it is to read a multi-line answer to a prompt without having to escape the end of each intermediate line. If the prompt is of the form <-string> then `form' will prompt with "string" and read the response until it receives a line consisting of a bare period '.'. * `tail' has had its internal buffer increased to handle larger screen sizes. -16- Release Notes * `txtrpl' has been taught to NOT perform string replacements inside of ratfor quoted strings and comments. An additional pattern file (fmtpf) is available in ~bin to permit `vgrind'-like pretty printing of ratfor source files. * `ps' and `who' have had two additional pieces of information added to the verbose output of the utilities. The process's base and current priorities is displayed. New Utilities * `printf' permits users to display fields of input data justified in fixed-width output fields. See the manual page for more information. -17- Release Notes Modified Library Routines * `stake' had a typographical error fixed. * When files are opened using `open' or `create', their sharing attributes will differ as follows: 1. When a file opened at READ access, one WRITER is permitted, as well as multiple other READERS. 2. When a file is opened at WRITE or APPEND access, only READ access is permitted to other processes. This is especially crucial for the correct workings of the mail system. Local tools need only to relink (via an `ld' invocation) to avail themselves of this sharing capability. Formerly, READING and WRITING were not permitted simultaneously on the same file. * `enbint' has been modified to complain, rather than abort the process, when it is unable to enable AST's. This permits the shell to run in batch queues. * Internal tables for some of the primitive support routines have been increased in size. The most notable situation where this was needed was for verbose directory listings, were a routine `resuic' was used to resolve UIC into owner name. New Library Routines * A function `rmdef' has been added to permit a (name,defn) pair to be removed from a symbol table. Consult the manual page for more information. -18- #-h- release.fmt 24376 asc 03-jul-84 14:11:33 dpm (dave martin) .pl 60 .in 0 .rm 70 .he //Release Notes/ .fo //-#-/ .sp 5 .ce 100 VAX/VMS Software Tools VOS Spring 1984 DECUS Distribution Joseph Sventek Mailstop 50B-3238 Lawrence Berkeley Laboratory Berkeley, CA 94720 .sp and .sp David Martin Hughes Aircraft P.O. Box 92426 Los Angeles, CA 90009 .ce 0 .sp 3 This document describes the VMS implementation of the Software Tools Virtual Operating System. For those new to this game, the basic principles behind the software are described in the article "A Virtual Operating System" which appeared in the September 1980 issue of the Communications of the ACM. The contents of this release supercede all previous releases. .sp See the file ``changes.s84'' for a list of changes since the last (f83) release. .ce NOTICE This software is provided on an as-is basis. No guarantee of performance or support is stated or implied. Any errors or omissions in the code or documentation are regrettable, but not unusual considering the man-power and mode of distribution. Written notification of bugs WITH fixes are appreciated and will be incorporated into the next release, if possible. .bp .ce Currently available tools .sp 2 .in +5 .nf Acat - concatenate nested archive entries on standard output Admin - administer TCS file. Alist - generate paginated listing of source archive Ar - archive file maintainer Args - use standard input as arguments for command Asam - generate index for archive file Asplit - salvage garbaged archive files Axref - cross reference symbols in archive files Banner - generate large banner lines BarGraph - draw a 0-100% bargraph of integer data Box - draw boxes around block structure of RatFor or C programs Cat - concatenate and print text files Ccnt - character count Cd - change (current) directory Ch - make changes in text files Chmod - change mode (protection codes) of file Chown - change the ownership of file(s). Cmp - compare two files Comm - print lines common to two files Cp - copy files Cpress - compress input files Crt - copy files to terminal a screen at a time Crypt - crypt and decrypt standard input D - list contents of directory Date - print the date Dc - desk calculator Delta - make an TCS delta Detab - convert tabs to spaces Diff - isolate differences between files E - extended version of "ed" with command editing & history Echo - echo command line arguments Ed - line-oriented text editor Entab - convert spaces to tabs and spaces Esh - extended shell, with intraline editing and history Exist - check for the existence of a file Expand - uncompress input files Fb - search blocks of lines for text patterns Fc - fortran compiler Fd - fast directory list in sort order Field - manipulate fields of data Find - search a file for text patterns Form - produce form letter by prompting user for information Format - format (roff) text Get - get generation from TCS file Grep - search file[s] for a pattern Hsh - shell with history and editing functions Incl - expand included files Intro - list on-line documentation Isam - generate index for pseudo-indexed-sequential access Kill - kill a running process Kwic - make keyword in context index Lam - laminate files Lcnt - line count Ld - loader Ll - print line lengths Lpr - queue file to printer Ls - list contents of directory Macro - process macro definitions Man - run off section of users manual Mcol - multicolumn formatting MkDir - create directories Mv - move (or rename) a file Number - number lines Os - convert backspaces into multiple lines for "printers" Pack - pack words into columns Pl - print specified lines/pages in a file Pr - paginate files to standard output Printf - justify fields of data in fixed-width fields Prlabl - format labels for printing Ps - list process status information Pstat - determine status of process Pwd - print working directory name on standard output Rar - rearrange archive Ratfor - RatFor preprocessor Rc - RatFor compiler Resume - resume a suspended process Rev - reverse lines Rm - remove files Ruler - display ruler on terminal screen Sched - a way to repetitively invoke a command Sedit - stream editor Send - send a message to another user's terminal Sepfor - Split FORTRAN programs into multiple files Sh - shell (command line interpreter) Sleep - cause process to suspend itself for a period of time Sort - sort and/or merge text files Spell - find spelling errors Split - split a file into pieces Suspnd - suspend a running process Tail - print last lines of a file Tee - copy input to standard output and named files Timer - time execution of a process Tr - transliterate characters Tsort - topologically sort symbols Ttt - 3-dimensional tic tac toe Txtrpl - perform generalized text replacement Ul - convert backspaces into multiple lines for "terminals" Uniq - strip adjacent repeated lines from a file Unrot - unrotate lines rotated by kwic Wc - count lines, words, and characters in files Wcnt - (character) word count Whereis - locate file in tree based on partial pathname Who - show who is on the system Xch - extended change utility Xfind - entended find utility Xref - make a cross reference of symbols .sp .ce Formerly released mail utilities .sp Mail - utility for sending mail to local users Msg - utility for manipulating message files Msplit - utility for salvaging message files Postmn - report the presence of mail Resolve - resolve mail system user names Sndmsg - utility for sending mail to other users Users - list valid mail users .fi .in -5 .sp 3 .ce SIG Tape Information on the Distribution .sp 2 These tools are normally distributed on the SIG Tape as a BACKUP container file names LBLTOOLS*. The directories in the container file have the following significance: .sp .in +12 .ti -11 [...DISTN] All of the files necessary to build this release of the Tools on VMS. Note that it is now necessary for you to build the images from the source files in this directory. Images and objects are NO LONGER distributed. The system has successfully built on all versions of VMS >= 3.0. .sp .ti -12 [...MSGSYS] The distribution of the Software Tools Distributed Mail System. .sp .ti -12 [...OLDMSG] The TCS archives for the previously released mail utilities. .sp .ti -9 [...SRC] The source for the portable VOS utilities. .sp .ti -9 [...VMS] The source files for the VMS-specific tools and primitive functions. .in -12 .bp .ce On Disk Structure of the Tools VOS .sp 2 The tools system uses 6 directories which may be scattered over one or more of your disks, with an optional seventh directory at the discretion of the site management. Each known directory is defined as a system logical name; each logical name is of the form ddnn:[dir...] - i.e. a device AND directory specification. .sp .in +7 .ti -7 st_bin This defines `~bin', the directory in which the distributed images are built and kept. This directory should have the protection [rwe,rwe,re,re]. .sp .ti -7 st_usr Site-specific tools, scripts and other known files should be kept here (~usr). The protection should be [rwe,rwe,re,re]. .sp .ti -7 st_tmp The scratch files created by the tools are kept here (~tmp). As such, the directory must have the protection [rwe,rwe,rwe,rwe]. In addition, all users of the tools must have a quota on the disk which st_tmp points to, if quotas are enabled on that disk. .sp .ti -7 st_lpr The files formatted by the `lpr' tool which are queued to the print symbiont are kept here (~lpr). The protections and quota considerations are the same as for ~tmp. .sp .ti -7 st_msg The known files for the mail system are kept here (~msg). The protection should be [rwe,rwe,re,re]. .sp .ti -7 st_man The archives and indices used by the `man' and `intro' utilities are kept here (~man). The protection should be [rwe,rwe,re,re]. .sp .ti -7 st_src (Optional) The source files for the tools modified locally should be placed here (~src). .sp .in -7 In addition, the VOS requires two other system logical names to run: .sp .in +2 st_node - the name of your node in a network; if you are not a member of a net, pick one that appeals to you. .sp st_timezone - the three character mnemonic for the timezone in which the machine is situated. Only the first character is used, as routines exist in the library to determine the state of standard/daylight time. .in -2 .bp Two other logical names can be defined at the discretion of site management: .sp .in +2 sys_tools - This should be defined as the same value as st_bin. It is only for compatibility with previous releases. .sp st_new_versions - If this is defined to be the value "YES", then the tools will create a new version of a file when writing a file. This feature has just been added, so there may be some complications with its use. The logical name can be defined in any of the three name tables and have the desired effect. As such, it is an individual option to define it at LBL. .in -2 .bp .ce Runtime requirements .sp The system logical names described above. .sp The file st_bin:tooldef.com defines the tools as foreign symbols so that they can be invoked from DCL. Invocation of the command file from a system login file guarantees the symbol definitions for the tools for all users when they log in. Alternatively, interested users may invoke @@st_bin:tooldef in their individual login.com files. .sp Several of the images need to be installed with enhanced privilege to provide full functionality to all users. They are: .sp .in +2 .ti -2 * ps (GROUP,WORLD) - lists valuable information on processes in the system. .sp .ti -2 * who (GROUP,WORLD) - lists who is logged into the system, and other info. .sp .ti -2 * send (OPER) - inter-terminal write facility that is not specific to any particular type of terminal. .sp .ti -2 * sh (DETACH,CMEXEC) - the DETACH privilege is required by the shell to permit the user to spawn background processes. If this feature is not supported locally, then do not install with the privilege. The CMEXEC privilege permits the shell to redefine the process logical name SYS$DISK at supervisor mode when performing a `cd' command, such that the device assignment remains when leaving the shell. This is done by changing mode to EXEC, redefining the logical name at supervisor mode, and returning to USER mode. .sp .ti -2 * esh (DETACH,CMEXEC) - same as for sh. .sp .ti -2 * hsh (DETACH,CMEXEC) - same as for sh. .sp .in -2 In addition, if `ed' or `e' are heavily used on your system, it is suggested that they be installed /SHARED/OPEN/HEADER_RESIDENT. .sp In the same vein, if the tools have been built with the shared global image, RLIBSHARE.EXE, it should be installed /SHARED/OPEN to facilitate global sharing of the tools runtime library. .sp The file st_bin:tools.ins is a DCL command file which causes the above eight images to be installed with the above privileges, and can be invoked during system startup. The file st_bin:tools.rem may be used to deinstall these images during update. .bp While the system is being built during TOOLGEN, the file st_bin:sysuaf.mod is generated, which is a DCL command file to cause authorize to modify all accounts on your system to reflect the suggested quota values to effectively use the tools. The suggested values are: .sp .ce 100 PRCLM 10 BYTLM 30000 FILLM 75 TQELM 40 PGFLQUOTA 16384 .ce 0 .sp These values typically permit a user to have up to 5 processes active on his behalf. The most common problem incurred if the quotas are insufficient is the error message .sp .ce "Cannot spawn process" .sp when attempting to invoke images from one of the shells. It is a good idea to peruse sysuaf.mod and remove accounts from it which do not need to be modified. .bp .ce Source File Structure .sp The source code for `tool' is contained in a file [...SRC]tool.tcs (if the tool is portable across operating systems) or [...VMS]tool.tcs (if it is an VMS-specific tool). This TCS source file contains an edit history of all changes made to the source. The output of the `get' utility operating on a `.tcs' file results in a file (tool.w) which is all of the environment necessary to rebuild the tool, provided that the VOS is operational. The tool.w file is an archive containing: .sp .in +5 .ti -3 1. All of the files "included" by the ratfor source code. .ti -3 2. The ratfor source file, tool.r. .ti -3 3. The format input for the manual entry, tool.fmt. .ti -3 4. And optionally, any extra definition files needed to build alternate versions of the tool (eg. sh => hsh). .sp .in -5 As an example, suppose that you wish to change the subroutine "module" in "tool". The suggested scenario is as follows: .sp .in +3 .nf $ !Fetch the file tool.tcs from the appropriate directory in the container $ !file on tape into st_src $ hsh % get ~src/tool.tcs tool.w % ar xv tool.w % ar xv tool.r module % ed module (make changes and write file) % ar uv tool.r module % rc -v tool.r % (test out new tool. repeat last three steps until satisfied.) % ed tool.fmt (modify writeup to reflect changes) % ar uv tool.w tool.r tool.fmt % cp tool.exe ~usr/tool.exe % delta tool.w ~src/tool.tcs (Identify in the comments the reason for the changes, and which modules changed.) % format tool.fmt >tool % ar uv ~man/s1 tool % asam <~man/s1 | sort >~man/i1 .fi .in -3 .sp Placing tool.exe in ~usr causes the shell to find your modified version of "tool" rather than the distributed one. The last two commands above cause the manual entry for `tool' to correctly correspond to the utility itself. .bp .ce Source for Primitive and Library Functions .sp The source archive for the primitive and library functions may be found on [...VMS]rlib.w. This archive consists of several modules: .sp .in +3 .ti -3 1. prim.m - an archive of macro files which are written in assembler and used by one or more tools. These routines are VMS-specific. .sp .ti -3 2. lib.m - assembler versions of portable ratfor routines which are used by one or more tools. .sp .ti -3 3. prim.r - archive of ratfor source routines which are VMS-specific and used by one or more tools. .sp .ti -3 4. lib.r - an archive of ratfor archives of portable library routines. .sp .ti -3 5. other files included by ratfor when processing prim.r. .sp .in -3 To assemble any of the modules in prim.m or lib.m, it is necessary to extract the module(s) and assemble them individually .sp % ar xv prim.m directory.mar; mac/nolist directory .sp To modify one of the routines in prim.r, simply extract it using the archiver, edit it up, update the archive, and recompile via .sp % ar xv prim.r dscbld; ed dscbld; ar uv prim.r dscbld .br % rc -cv prim.r .sp To modify one of the routines in lib.r, it is necessary to perform two extractions and two updates, as in .sp .nf % ar xv lib.r arsubs.r % ar xv arsubs.r aopen % ed aopen % ar uv arsubs.r aopen % rc -cv arsubs.r % ar uv lib.r arsubs.r .fi .sp Of course, after generating new object modules for modified routines, it is necessary to make a system-specific version of st_bin:rlib.olb in st_usr, and to replace the object module in st_usr:rlib.olb. It is also a good idea to avoid replacing the modified modules in the archives until you are sure that they work. Writeups on all primitive routines which are to be visible to programmers may be found using the `man' command on section 2 of the manual. Writeups for library routines are in section 3. .bp .ce Manual entry structure .sp In order to simplify the generation of manual entries for utilities and functions, a set of `format' macros are defined in the file `~bin/manhdr'. For the correct working of the `intro' utility, it is necessary that the first three lines of any site-dependent writeups consist of .sp .nf .cc * .so ~bin/manhdr .hd (
) () one line description of the tool or function *cc . .fi where is replaced by the name of the function or tool,
is the section of the manual this entry is for and is the date the document was created. The .hd macro guarantees that the margins are correct, the header line on the manual pages is consistent with the software tools standard, and that .sp .nf NAME name - one line description of the tool or function .sp .fi appears in the writeup. This particular landmark is used by the intro utility to list the one-liners for the known entries in each section. The best method is to peruse the macros in ~bin/manhdr and to look at some of the writeups supplied with the system. .bp .ce Legal file specifications for the tools .sp The following lists legal VMS file specs for the tools and valid tools pathname equivalents: .sp .nf DEC format Path format ------------------------------- ----------------------------------- file.typ.ver file.typ.ver [dir]file.typ.ver /dir/file.typ.ver [dir.sub...]file.typ.ver /dir/sub/.../file.typ.ver [.sub]file.typ.ver sub/file.typ.ver [-.sub]file.typ.ver \sub/file.typ.ver ddnn:[dir]file.typ.ver /ddnn/dir/file.typ.ver host::ddnn:[dir]file.typ.verp /@host/ddnn/dir/file.typ.ver ? ~name/file.typ.ver ? ~/file.typ.ver .fi .sp In all cases, the pathname equivalent consists of replacing the many and varied VMS delimiters by slashes, which is typically a lower-case character on all terminals and is normally easy to strike using the right pinky. In addition, the backslash (\) is used to go up in the directory tree, equivalent to DEC's [-] construct. The ~name capability is available for the seven known directories of the tools system, ~bin, ~usr, ~tmp, ~lpr, ~msg, ~man and ~src. They permit one to write portable scripts for utilities across different operating systems. Also, ~user, where `user' is the login name of a user on the system maps onto that user's home directory. The ~/ is shorthand for the user's home directory. In utilities which manipulate directories, all of the above formats are valid when the file.typ.ver trailer is removed. .bp .ce Changes for the Spring 1982 Release .sp 2 .ce Modified Utilities .sp .in +2 .ti -2 * `dspc' has been removed. The functionality is now provided by `cat' using the "-v" flag. .sp .ti -2 * `roff' is no longer distributed, having been superceded by `format'. .sp .ti -2 * `crt' now reads the terminal in rare mode. .sp .ti -2 * `ed' and `e' accept several new commands. See the manual entries for details. .sp .ti -2 * `fb', `find' and `grep' understand the flag "-i" which causes pattern matches to be case insensitive. .sp .ti -2 * `man' has been rewritten to support sections of the manual and to page the output to the user's terminal. .sp .ti -2 * `ratfor' understands character constants of the form 'c', as in the C programming language. As such, the apostrophe (') can no longer be used to delimit hollerith strings and strings in `string' declarations. Escaped characters may be expressed as '@@c' (eg. '@@n' == NEWLINE). The version of ratfor distributed in the Spring 1981 release is provided as `oldratfor' to permit conversion of the source code at the programmer's convenience. To aid the conversion process, an utility `txtrpl' is provided such that .sp .ce txtrpl new_ratfor_file ~bin/pf .sp will convert all the missing manifest constants to character constants. Of course, if `old_ratfor_file' was an archive, you will need to salvage `new_ratfor_file' before using it. .sp .ti -2 * `rm' understands a flag "-i" which causes the file removal process to be interactive. .in -2 .bp .ce 100 Changes for the Spring 1982 Release .sp 2 Modified primitives .ce 0 .sp .in +2 .ti -2 * remove - remove a file .sp old: call remove(file) .br new: stat = remove(file) .sp .ti -2 * note - note current address of file pointer .sp old: call markl(fd, addr) .br new: stat = note(addr, fd) .sp .ti -2 * homdir - determine user's home directory .sp old: call homdir(buf) .br new: call homdir(buf, dtype) .sp .ti -2 * mailid - return the user's mail identification string .sp Comment strings inside of parentheses () now are returned by mailid. If your code does not expect any blanks in the buffer returned, you will have to add the following code .sp .nf call mailid(user) i = index(user, ' ') if (i > 0) user(i) = EOS .fi .in -2 .bp .ce Changes for the Fall 1982 Release .sp 2 .ce Modified Utilities .sp .in +2 .ti -2 * Bugs fixed in `fb', `format', `crt', `msg', `oldratfor', `os', `send' and `xch'. No change in functionality. .sp .ti -2 * `rc', `fc' and `ld' modified to understand the "-m" flag, which indicates that a load map is to be generated. In addition, specifying a "-d" causes the FORTRAN source file to be retained, for use with the symbolic debugger, and no longer forces the generation of a load map. .sp .ti -2 * `man' will now report all known manual sections when invoked with a bare "-s" option. .sp .ti -2 * `ratfor' has had several bugs fixed, most notably the integer overflow problem when gobbling large numeric strings. Strings quoted with apostrophes (') will now be handled as before, except for those of the form 'c' and '@c'. A "-n" flag will cause `ratfor' to forego the loading of the symbols file. .sp .ti -2 * `sh' now understands several new internal commands, including aliases and parameters. Consult the manual page for more information. Additionally, commented commands in scripts are handled differently. Formerly, if a '#' was the first character of a line, the entire line was treated as a comment. Now, if the verb of a command is a '#', then that command is a comment. For example: .sp echo this; # this is a comment; echo that .sp is valid and will result in the output .sp this .br that .sp .ti -2 * `form' now can be informed that it is to read a multi-line answer to a prompt without having to escape the end of each intermediate line. If the prompt is of the form <-string> then `form' will prompt with "string" and read the response until it receives a line consisting of a bare period '.'. .sp .ti -2 * `tail' has had its internal buffer increased to handle larger screen sizes. .sp .ti -2 * `txtrpl' has been taught to NOT perform string replacements inside of ratfor quoted strings and comments. An additional pattern file (fmtpf) is available in ~bin to permit `vgrind'-like pretty printing of ratfor source files. .sp .ti -2 * `ps' and `who' have had two additional pieces of information added to the verbose output of the utilities. The process's base and current priorities is displayed. .sp 2 .ce New Utilities .sp .ti -2 * `printf' permits users to display fields of input data justified in fixed-width output fields. See the manual page for more information. .bp .ce Modified Library Routines .sp .ti -2 * `stake' had a typographical error fixed. .sp .ti -2 * When files are opened using `open' or `create', their sharing attributes will differ as follows: .sp .in +3 .ti -3 1. When a file opened at READ access, one WRITER is permitted, as well as multiple other READERS. .ti -3 2. When a file is opened at WRITE or APPEND access, only READ access is permitted to other processes. .in -3 .sp This is especially crucial for the correct workings of the mail system. Local tools need only to relink (via an `ld' invocation) to avail themselves of this sharing capability. Formerly, READING and WRITING were not permitted simultaneously on the same file. .sp .ti -2 * `enbint' has been modified to complain, rather than abort the process, when it is unable to enable AST's. This permits the shell to run in batch queues. .sp .ti -2 * Internal tables for some of the primitive support routines have been increased in size. The most notable situation where this was needed was for verbose directory listings, were a routine `resuic' was used to resolve UIC into owner name. .sp 2 .ce New Library Routines .sp .ti -2 * A function `rmdef' has been added to permit a (name,defn) pair to be removed from a symbol table. Consult the manual page for more information. #-h- rest.cmd 1579 asc 03-jul-84 14:11:39 dpm (dave martin) $ set verify $ if f$search("rest.cob") .nes. "" then delete rest.cob.* $ libr/extr=(ACOPY,ADDSET,ADDSTR,AFETCH,AGETCH,AGETHD,AGTLIN,ALLDIG)/outp=rest.cob rlib.olb $ libr/extr=(AMOVE,AOPEN,APPSTR,ARGTAB,ASKIP,BADARG,BRDCST,BUBBLE)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(CHMOD,CHOWN,CMATCH,CPUTIM,CTOC,CTODI,CTOPTR,DIRFIL)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(DITOC,DOPACK,DISIZE,DSPPRV,DSTIME,ENBINT,EXETIM,EXPPID)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(FILNFO,FLFIND,FLPACK,FMTDAT,FMTTIM,FSIZE,FSKIP,GETAST)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(GETFDB,GETNOW,GETRLN,GETTYP,GET_PRIV,GITOCF,GTMODE,GTSTAT)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(GTWORD,GTZONE,GWDIR,HTOI,IMPATH,INIHLP,INMAP,INPACK)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(INTSRV,ITOCZF,KILL,LOCCOM,MARK,MRKHLP,MYOPEN,NOTE)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(OUTMAP,PGFLTS,PHELP0,POINT,PROMPT,PSTAT,PTRCPY,PTREQ)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(PTRTOC,PUTHLP,PUTPTR,RDPMPT,READF,READS,RENAME,RESUME)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(RTOPEN,SDROP,SEEK,SETAST,SETTAB,SHELL,SLEEP,STAKE)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(STMODE,STRIM,STSTAT,STTIMO,SUSPND,SYSTEM,TABPOS,TOOLDR)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* $ libr/extr=(TRMLST,WKDAY,WRITEF,WRITES)/outp=t.o rlib.olb $ appe t.o rest.cob $ delete t.o.* #-h- rest.ml 667 asc 03-jul-84 14:11:40 dpm (dave martin) ACOPY ADDSET ADDSTR AFETCH AGETCH AGETHD AGTLIN ALLDIG AMOVE AOPEN APPSTR ARGTAB ASKIP BADARG BRDCST BUBBLE CHMOD CHOWN CMATCH CPUTIM CTOC CTODI CTOPTR DIRFIL DITOC DOPACK DISIZE DSPPRV DSTIME ENBINT EXETIM EXPPID FILNFO FLFIND FLPACK FMTDAT FMTTIM FSIZE FSKIP GETAST GETFDB GETNOW GETRLN GETTYP GET_PRIV GITOCF GTMODE GTSTAT GTWORD GTZONE GWDIR HTOI IMPATH INIHLP INMAP INPACK INTSRV ITOCZF KILL LOCCOM MARK MRKHLP MYOPEN NOTE OUTMAP PGFLTS PHELP0 POINT PROMPT PSTAT PTRCPY PTREQ PTRTOC PUTHLP PUTPTR RDPMPT READF READS RENAME RESUME RTOPEN SDROP SEEK SETAST SETTAB SHELL SLEEP STAKE STMODE STRIM STSTAT STTIMO SUSPND SYSTEM TABPOS TOOLDR TRMLST WKDAY WRITEF WRITES #-h- revlevels.f82 3129 asc 03-jul-84 14:11:41 dpm (dave martin) acat Version # 1.1 addr Version # 1.1 admin Version # 1.1 alist Version # 1.2 ar Version # 1.1 args Version # 1.1 asam Version # 1.1 asplit Version # 1.1 axref Version # 1.1 banner Version # 1.1 bargraph Version # 1.1 box Version # 1.1 cat Version # 1.2 ccnt Version # 1.1 cd Version # 1.1 ch Version # 1.1 chmod Version # 1.1 chown Version # 1.1 cmp Version # 1.1 comm Version # 1.1 cp Version # 1.1 cpress Version # 1.1 crt Version # 1.3 crypt Version # 1.1 date Version # 1.1 dc Version # 1.1 delta Version # 1.1 detab Version # 1.1 diff Version # 1.2 echo Version # 1.1 ed Version # 1.2 entab Version # 1.1 exist Version # 1.1 expand Version # 1.1 fb Version # 1.2 fc Version # 1.2 fd Version # 1.1 field Version # 1.1 find Version # 1.1 form Version # 1.3 format Version # 1.5 get Version # 1.1 grep Version # 1.1 incl Version # 1.1 intro Version # 1.3 isam Version # 1.1 kill Version # 1.1 kwic Version # 1.1 lam Version # 1.1 lcnt Version # 1.1 ld Version # 1.3 ll Version # 1.1 lpr Version # 1.1 ls Version # 1.2 macro Version # 1.1 man Version # 1.3.1 mcol Version # 1.1 mkdir Version # 1.1 mv Version # 1.1 number Version # 1.1 oldratfor Version # 1.2 os Version # 1.2 pack Version # 1.1 pl Version # 1.1 pr Version # 1.1 printf Version # 1.1 prlabl Version # 1.1 ps Version # 1.3.1 pstat Version # 1.1 pwd Version # 1.1 rar Version # 1.1 ratfor Version # 1.10 rc Version # 1.2 resume Version # 1.1 rev Version # 1.1 rm Version # 1.2 ruler Version # 1.1 sched Version # 1.1 sedit Version # 1.1 send Version # 1.1.1 sepfor Version # 1.1 sh Version # 1.8 sleep Version # 1.1 sort Version # 1.1 spell Version # 1.1 split Version # 1.1 suspnd Version # 1.1 tail Version # 1.2 tee Version # 1.1 timer Version # 1.1 tr Version # 1.1 tsort Version # 1.1 ttt Version # 1.1 txtrpl Version # 1.4 ul Version # 1.1 uniq Version # 1.1 unrot Version # 1.1 wc Version # 1.1 wcnt Version # 1.1 whereis Version # 1.1 who Version # 1.3.1 xch Version # 1.2 xfind Version # 1.1 xref Version # 1.1 #-h- revlevels.s82 3417 asc 03-jul-84 14:11:43 dpm (dave martin) The following lists the TCS versions which were distributed with the spring 1982 release of the Software Tools VOS. acat Version # 1.1 addr Version # 1.1 admin Version # 1.1 alist Version # 1.2 ar Version # 1.1 args Version # 1.1 asam Version # 1.1 asplit Version # 1.1 axref Version # 1.1 banner Version # 1.1 bargraph Version # 1.1 box Version # 1.1 cat Version # 1.2 ccnt Version # 1.1 cd Version # 1.1 ch Version # 1.1 chmod Version # 1.1 chown Version # 1.1 cmp Version # 1.1 comm Version # 1.1 cp Version # 1.1 cpress Version # 1.1 crt Version # 1.2 crypt Version # 1.1 date Version # 1.1 dc Version # 1.1 delta Version # 1.1 detab Version # 1.1 diff Version # 1.2 echo Version # 1.1 ed Version # 1.2 entab Version # 1.1 exist Version # 1.1 expand Version # 1.1 fb Version # 1.1 fc Version # 1.1 fd Version # 1.1 field Version # 1.1 find Version # 1.1 form Version # 1.1 format Version # 1.2 get Version # 1.1 grep Version # 1.1 incl Version # 1.1 intro Version # 1.3 isam Version # 1.1 kill Version # 1.1 kwic Version # 1.1 lam Version # 1.1 lcnt Version # 1.1 ld Version # 1.1 ll Version # 1.1 lpr Version # 1.1 ls Version # 1.2 macro Version # 1.1 mail Version # 1.3 man Version # 1.3 mcol Version # 1.1 mkdir Version # 1.1 msg Version # 1.2 msplit Version # 1.1 mv Version # 1.1 number Version # 1.1 oldratfor Version # 1.1 os Version # 1.1 pack Version # 1.1 pl Version # 1.1 postmn Version # 1.1 pr Version # 1.1 prlabl Version # 1.1 ps Version # 1.3 pstat Version # 1.1 pwd Version # 1.1 rar Version # 1.1 ratfor Version # 1.4 rc Version # 1.1 resolve Version # 1.1 resume Version # 1.1 rev Version # 1.1 rm Version # 1.2 ruler Version # 1.1 sched Version # 1.1 sedit Version # 1.1 send Version # 1.1 sepfor Version # 1.1 sh Version # 1.2 sleep Version # 1.1 sndmsg Version # 1.3 sort Version # 1.1 spell Version # 1.1 split Version # 1.1 suspnd Version # 1.1 tail Version # 1.1 tee Version # 1.1 timer Version # 1.1 tr Version # 1.1 tsort Version # 1.1 ttt Version # 1.1 txtrpl Version # 1.1 ul Version # 1.1 uniq Version # 1.1 unrot Version # 1.1 users Version # 1.1 wc Version # 1.1 wcnt Version # 1.1 whereis Version # 1.1 who Version # 1.3 xch Version # 1.1 xfind Version # 1.1 xref Version # 1.1 #-h- rlibshare.com 1638 asc 03-jul-84 14:11:45 dpm (dave martin) $ set verify $! rlibshare - build the rlib shareable image $! uses files: $! transfer.mac - built via "ed >config $ get 'p2'/'p1'.tcs >'p1'.w ??config $ ar xv 'p1'.w >cleanup.tmp $ rc -r 'p1'.r $ @build/out=nla0: 'p1' $ if remfor .eqs. "y" then @tclean 'p1' $ if remfor .eqs. "Y" then @tclean 'p1' $ echo ??config #-h- tclean.com 92 asc 03-jul-84 14:11:52 dpm (dave martin) $ delete 'p1'.w.* $ delete 'p1'.r.* $ sh cat cleanup.tmp | rm $ delete cleanup.tmp.* $ exit #-h- template.ed 184 asc 03-jul-84 14:11:53 dpm (dave martin) g/%?*$/s\\$ libr/extr=(&)/outp=t.o rlib.olb@n$ appe t.o NAME.cob@n$ delete t.o.*\ 1s/t.o/NAME.cob/ 2,3d 1i $ set verify $ if f$search("NAME.cob") .nes. "" then delete NAME.cob.* . w q #-h- tooldef.com 2555 asc 03-jul-84 14:11:54 dpm (dave martin) $ acat:==$st_bin:acat $ admin:==$st_bin:admin $ alist:==$st_bin:alist $ apropos:==$st_bin:apropos $ ar:==$st_bin:ar $ args:==$st_bin:args $ asam:==$st_bin:asam $ asplit:==$st_bin:asplit $ axref:==$st_bin:axref $ banner:==$st_bin:banner $ bargraph:==$st_bin:bargraph $ biged:==$st_bin:biged.exe $ box:==$st_bin:box $ cat:==$st_bin:cat $ ccnt:==$st_bin:ccnt $ ch:==$st_bin:ch $ chmod:==$st_bin:chmod $ chown:==$st_bin:chown $ cmp:==$st_bin:cmp $ comm:==$st_bin:comm $ cp:==$st_bin:cp $ cpress:==$st_bin:cpress $ crt:==$st_bin:crt $ crypt:==$st_bin:crypt $ d:==$st_bin:d $ date:==$st_bin:date $ dc:==$st_bin:dc $ delta:==$st_bin:delta $ detab:==$st_bin:detab $ stdiff:==$st_bin:diff $ e:==$st_bin:e $ echo:==$st_bin:echo $ ed:==$st_bin:ed $ entab:==$st_bin:entab $ esh:==$st_bin:esh $ exist:==$st_bin:exist $ expand:==$st_bin:expand $ fb:==$st_bin:fb $ fc:==$st_bin:fc $ fd:==$st_bin:fd $ field:==$st_bin:field $ find:==$st_bin:find $ form:==$st_bin:form $ format:==$st_bin:format $ get:==$st_bin:get $ grep:==$st_bin:grep $ hsh:==$st_bin:hsh $ incl:==$st_bin:incl $ intro:==$st_bin:intro $ isam:==$st_bin:isam $ kill:==$st_bin:kill $ kwic:==$st_bin:kwic $ lam:==$st_bin:lam $ lcnt:==$st_bin:lcnt $ ld:==$st_bin:ld $ ll:==$st_bin:ll $ lpr:==$st_bin:lpr $ ls:==$st_bin:ls $ stmacro:==$st_bin:macro $ man:==$st_bin:man $ mcol:==$st_bin:mcol $ mkdir:==$st_bin:mkdir $ mv:==$st_bin:mv $ number:==$st_bin:number $ os:==$st_bin:os $ pack:==$st_bin:pack $ pl:==$st_bin:pl $ pr:==$st_bin:pr $ printf:==$st_bin:printf $ prlabl:==$st_bin:prlabl $ ps:==$st_bin:ps $ pstat:==$st_bin:pstat $ pwd:==$st_bin:pwd $ rar:==$st_bin:rar $ ratp1:==$st_bin:ratp1 $ ratp2:==$st_bin:ratp2 $ rc:==$st_bin:rc $ resume:==$st_bin:resume $ rev:==$st_bin:rev $ rm:==$st_bin:rm $ ruler:==$st_bin:ruler $ sched:==$st_bin:sched $ sedit:==$st_bin:sedit $ send:==$st_bin:send $ sepfor:==$st_bin:sepfor $ sh:==$st_bin:sh $ sleep:==$st_bin:sleep $ stsort:==$st_bin:sort $ spell:==$st_bin:spell $ split:==$st_bin:split $ suspnd:==$st_bin:suspnd $ tail:==$st_bin:tail $ tee:==$st_bin:tee $ timer:==$st_bin:timer $ tr:==$st_bin:tr $ tsort:==$st_bin:tsort $ ttt:==$st_bin:ttt $ txtrpl:==$st_bin:txtrpl $ ul:==$st_bin:ul $ uniq:==$st_bin:uniq $ unrot:==$st_bin:unrot $ wc:==$st_bin:wc $ wcnt:==$st_bin:wcnt $ whereis:==$st_bin:whereis $ who:==$st_bin:who $ xch:==$st_bin:xch $ xfind:==$st_bin:xfind $ xref:==$st_bin:xref $ cd:=="''sh' -c cd" $ @st_bin:dcldef/out=nla0: $ alltools:==continue $ arclist:=="''sh' ~bin/arclist.sh" $ foreign:==@st_bin:foreign $ roff:==$st_bin:format $ dspc:=="''cat' -v" #-h- toolgen.com 3130 asc 25-feb-86 19:40:59 dpm (dave martin) $! $! Software Tools installation procedure for VAX/VMS $! $ write sys$output "The Software Tools logical names are currently:" $ @dsplog $ inquire ans "Are these correct for your installation? [y/n]" $ if ans .eqs. "y" then goto cont $ if ans .eqs. "Y" then goto cont $ write sys$output "Please edit the file stlognam.com to reflect your" $ write sys$output "installation and then invoke toolgen again." $ write sys$output "Consult the file readme.1st for details." $ goto abort $ cont: $ inquire ans "Have you created the 6 known directories? [y/n]" $ if ans .eqs. "y" then goto cont1 $ if ans .eqs. "Y" then goto cont1 $ write sys$output "You must create the directories before proceeding." $ write sys$output "Consult the file release.doc for information on" $ write sys$output "the protection modes required." $ goto abort $ cont1: $ inquire/global shared "Do you wish to link to a shared library? [y/n] $ inquire/global remfor "Do you wish to remove the sources as we progress? [y/n]" $ inquire/global remobj "Do you wish to remove the objects as we progress? [y/n]" $ inquire/global vmsv3 "Do you wish to build the tools for VMS V3.x? [y/n]" $ write sys$output "shared = ''shared'" $ write sys$output "remfor = ''remfor'" $ write sys$output "remobj = ''remobj'" $ write sys$output "vmsv3 = ''vmsv3'" $ write sys$output "" $ write sys$output "[Toolgen started at ", "''f$time()'", "]" $ write sys$output "" $ set verify $! $! Assemble the primitives $! $ @asmprm $! $! Assemble the optimized library routines $! $ @asmlib $ @compile $ @library $ if remfor .eqs. "y" then delete *.mar.*,*.ff.* $ if remfor .eqs. "Y" then delete *.mar.*,*.ff.* $ if remobj .eqs. "y" then delete *.obj.* $ if remobj .eqs. "Y" then delete *.obj.* $ if shared .eqs. "y" then goto cont2 $ if shared .nes. "Y" then goto cont3 $ cont2: $ @startup.cmd $ @directory.cmd $ @hispmt.cmd $ @lnedit.cmd $ @pattern.cmd $ @rawpmt.cmd $ @spawn.cmd $ @rest.cmd $ @rlibshare.com $ delete *.cob.* $ delete *.cmd.* $ cont3: $! $! build the software tools utilities $! $ delete st_tmp:*.fmt.* $ @fbuild $ set noverify $ @st_bin:tooldef $ set verify $ sh -v # # generate dictionary index # isam dictdx -d20 # # move msg help file to ~msg # mv msghlp ~msg/msghlp # # generate address file for tools # addr >~msg/address # # move manual sections to ~man # build1 build234 mv sect1 ~man/s1 mv sect2 ~man/s2 mv sect3 ~man/s3 mv sect4 ~man/s4 mv mpath ~man/mpath format mintro.fmt >mintro mv mintro ~man/mintro # # generate indices to manual sections in ~man # asam <~man/s1 | sort >~man/i1 asam <~man/s2 | sort >~man/i2 asam <~man/s3 | sort >~man/i3 asam <~man/s4 | sort >~man/i4 # # build ~bin/sysuaf.mod to modify accounts in case this is first toolgen # ed - outputfile] [?errorfile] Upon invocation, three io connections are established for the tool, termed standard input, standard output, and errout. If no redirection has been specified in the command line, these connections are all to the user's terminal. The arguments are specific to each tool. Each tool will divulge the required arguments if invoked as tool ? A list of available tools may be had through the invocation of the `intro' command. Further help for a particular tool may be had by using the `man' command. From DCL, the following symbol definitions do the trick: $ intro:==$st_bin:intro $ man:==$st_bin:man #-h- tools.ins 361 asc 03-jul-84 14:11:58 dpm (dave martin) $ run sys$system:install ST_BIN:RLIBSHARE/SHARED/OPEN ST_BIN:WHO/SHARED/OPEN/PRIV=(WORLD,GROUP) ST_BIN:PS/SHARED/OPEN/PRIV=(WORLD,GROUP) ST_BIN:SH/SHARED/OPEN/PRIV=(DETACH,CMEXEC) ST_BIN:ESH/SHARED/OPEN/PRIV=(DETACH,CMEXEC) ST_BIN:HSH/SHARED/OPEN/PRIV=(DETACH,CMEXEC) ST_BIN:E/SHARED/OPEN/HEADER ST_BIN:ED/SHARED/OPEN/HEADER ST_BIN:SEND/SHARED/OPEN/PRIV=(OPER) #-h- toolshlp.fmt 927 asc 03-jul-84 14:11:58 dpm (dave martin) .m1 1 .m2 0 .m3 0 .m4 1 .in 0 .rm 72 .nf 1 tools ! 11/01/80 tools.hlp - help file to explain the use of the tools VOS .fi A set of utilities which provide powerful text processing capabilities as well as other capabilities. A typical invocation is: tool arguments [outputfile] [?errorfile] Upon invocation, three io connections are established for the tool, termed standard input, standard output, and errout. If no redirection has been specified in the command line, these connections are all to the user's terminal. The arguments are specific to each tool. Each tool will divulge the required arguments if invoked as tool ? A list of available tools may be had through the invocation of the `intro' command. Further help for a particular tool may be had by using the `man' command. From DCL, the following symbol definitions do the trick: .nf $ intro:==$st_bin:intro $ man:==$st_bin:man .fi .pl 0 #-h- transfer.ed 158 asc 03-jul-84 14:11:59 dpm (dave martin) f transfer.mac r transfer.gl g/%?*$/s// .TRANSFER &@n .MASK &@n JMP L^&+2/ 1i .TITLE TRANSFER_V .PSECT TRANSFER_VECT EXE,NOWRT,PIC,SHR,GBL . $a .END . w q #-h- transfer.gl 1194 asc 03-jul-84 14:11:59 dpm (dave martin) ACOPY ADDINT ADDSET ADDSTR ADRFIL AGETCH AGETHD AGTLIN ALLDIG AMATCH AMOVE AOPEN ARGTAB ASKIP ASSIGN BADARG BRDCST BUBBLE CANT CATSUB CHCOPY CHMOD CHOWN CLOSDR CLOSE CLOWER CMATCH CONCAT CPUTIM CREATE CREMBX CTOC CTODI CTOI CTOPTR CUPPER DELARG DITOC DODASH DOPACK DSCBLD DISIZE DSPPRV DSTIME EDLINE ENBINT ENDST EQUAL ERROR ESC EXETIM EXITH EXPPTH FCOPY FILNFO FILSET FLPACK FMTDAT FMTTIM FOLD FSIZE FSKIP GDRAUX GDRPRM GETARG GETAST GETBPR GETCCL GETCH GETDIR GETIMG GETLIN GETNOW GETOWN GETPAT GETPID GETPNM GETRLN GETSUB GETTYP GETUIC GETWRD GET_PRIV GITOCF GNOREG GTFTOK GTMODE GTSTAT GTWORD GTZONE GWDIR HOMDIR HTOI IMPATH INDEXS INDEXX INIHLP INITST INMAP INPACK INTSRV ISATTY ITOC ITOCZF KILL LEDPMT LENGTH LNEDIT LOCATE LOCCOM LOGEND LOGPMT MAILID MAKPAT MAKSUB MATCH MKLOCL MKPATH MRKHLP NOTE OMATCH OPEN OPENDR OUTMAP PATSIZ PGFLTS PROMPT PSTAT PTRCPY PTREQ PTRTOC PUTCH PUTHEX PUTHLP PUTINT PUTLIN PUTLNL PUTPTR PUTSTR PWAIT QUERY RAWPMT READF READS REMARK REMOVE RESUME SCOPY SCRATF SDROP SEEK SETAST SETTAB SHELL SKIPBL SLEEP SNOREG SPAWN STAKE STCLOS STCOPY STMODE STRCMP STRCPY STRIM STSTAT STTIMO SUSPND SYSTEM TABPOS TOOLDR TRMLST TRNLOG TYPE UNIQUE UPPER WKDAY WRITEF WRITES #-h- ttdef.com 30 asc 03-jul-84 14:12:00 dpm (dave martin) $ define tt 'f$logical("TT")' #-h- changes.s84 7304 asc 03-jul-84 14:25:59 dpm (dave martin) DISTN.W, INET.W, and SUPPORT.W (MsgSys) ======================================= Eliminated the "close(STDOUT)" call from distn.w`distn.r`main as per Joe's suggestion of 21-Nov-83. This fixes online notification, which was previously broken. Added Joe's decnet.r which fixes the CRLF vs LF imcompatability with other SMTP sites. The tools mail system now works against TOPS-20 mm. See "mailsys.doc" for a description of new MSG and SNDMSG features. INTRO ===== *** Version # 1.5 19-Nov-83 09:45:04 dpm Changed intro.w`intro.r`dointr to display the intro lines with hyphens aligned. Purely cosmetic. PS == *** Version # 1.3.3 07-Dec-83 16:51:00 eccmnk Modified the terminal name field to display the mode ("net"=network, "sub"=subprocess, "bat"=batch or "det"=detached) of non-interactive processes. Re-arranged the display of the priority field from "base/current" to "current/base" to be consistent with DEC (e.g. show process/continuous display). Modified the size of the image name buffer to handle the maximum size image name possible. Modified the processing of image names to handle directory specifications which use "" instead of "[directory_spec]" and to display "(dcl)" to be more consistent with `who' and with DEC (e.g. ^T display). Added the process scheduling state field to the display. Made modifications in the processing of job/process information to prevent `ps' from becoming `hung' or from taking a very long time to complete or from swapping in outswapped jobs. `ps' first calls sys$getjpi with an item list that contains information that is available from all processes regardless of their state. `ps' next checks the state of the process to determine if further information (image name and CPU time) can be obtained. If the process is in state CEF, LEF, HIB, COM, CUR then another call to sys$getjpi is made to obtain the additional information. If the process is in state COLPG, FPG, MWAIT, PFW or SUSP the additional sys$getjpi call is not made as this call would not complete until the process exits its current state which could take a very long time or the call might never complete. If the process is in state LEFO, HIBO, SUSPO or CEFO the additional sys$getjpi call is not made since this would force the process to be inswapped. If the additional information could not be obtained then the fields in the display will be filled with "-"'s. Modified the process name field to not display any character c, where c < SP or c >= DEL, as a dot ("."). This prevents users from setting their process names to escape sequences intended to mess up someone's terminal. This is consistent with the way DEC handles the display of process names (e.g. show system, show process, monitor). Modified the display of `ps' to line up with the display of `who' for easier comparison of the two outputs and to make room for the process scheduling state field. Also made `ps' dump the header line (if specified to do so) immediately instead of waiting until all the information has been gathered. This gives an indication, when the system is busy, that the `ps' image has been activated and is working on gathering the job/process information. These changes required modifications to ps.w`ps.r`main, ps.w`ps.r`dispone, ps.w`cllist, ps.w`pssym and ps.w`ps.fmt. Also, ps.w`ps.r`nocc, ps.w`ps.r`putsta, and ps.w`ps.r`putsts were added. RATP2 ===== *** Version # 1.4 19-Nov-83 09:26:04 dpm Added LARGE_ADDRESS_SPACE test to set value of A_S_X multiplier to 4 for large machines and 1 for small ones. This is used to increase the size of MAXBUF and MAXSAVE. RC == *** Version # 1.8 18-Apr-84 12:11:51 dpm Conditionalized code for "SINGLE_PASS" definition in rc.w`rc.r`defns. If enabled, this causes RC to spawn RatFor instead of RatP1/RatP2. This improves compilation time dramatically at the expense of the features provided by RatP2. This should be enabled with caution... SEND ==== *** Version # 1.1.3 07-Dec-83 16:51:30 eccmnk Added the following new features: (1) appended "hh:mm:ss" to the "[message from on ]" message and appended "from hh:mm:ss" to the eot message; (2) added -user option to send each line to all of the terminals that a user is logged in on; (3) added "[] " header to lines sent to the other user's terminal; (4) added a routine to remove unwanted (possibly malicious) non-printable characters from the line sent; (5) removed the extra new-line character from each line sent to the other user's terminal; (6) made "send" report that the user you are sending your message to has logged out and to terminate "send" if "user" is no longer logged in on the terminal(s) you were sending to. Required modifications to send.w`send.r`send, send.w`send.fmt, and the addition of send.w`send.r`getdvi, send.w`send.r`lsttrm, send.w`send.r`nocc, send.w`send.r`sndmsg and send.w`sndsym. WHO === *** Version # 1.3.3 07-Dec-83 16:51:16 eccmnk Re-arranged the display of the priority field from "base/current" to "current/base" to be consistent with DEC (e.g. show process/continuous display). Modified the size of the image name buffer to handle the maximum size image name possible. Also made changes to the processing of image names to handle directory specifications which use "" instead of "[directory_spec]". Added the process scheduling state field to the display. Made modifications in the processing of job/process information to prevent `who' from becoming `hung' or from taking a very long time to complete or from swapping in outswapped jobs. First, `who' calls sys$getjpi with an item list that contains information that is available from all processes regardless of their state. Next, `who' checks the state of the process to determine if further information (image name and connect time) can be obtained. If the process is in state CEF, LEF, HIB, COM, CUR then another call to sys$getjpi is made to obtain the additional information. If the process is in state COLPG, FPG, MWAIT, PFW or SUSP the additional sys$getjpi call is not made as this call would not complete until the process exits its current state which could take a very long time or the call might never complete. If the process is in state LEFO, HIBO, SUSPO or CEFO the additional sys$getjpi call is not made since this would force the process to be inswapped. If the additional information could not be obtained then the fields in the display will be filled with "-"'s. Modified the process name field to not display any character c, where c < SP or c >= DEL, as a dot ("."). This prevents users from setting their process names to escape sequences intended to mess up someone's terminal. This is consistent with the way DEC handles the display of process names (e.g. show system, show process, monitor). These changes required modifications to who.w`who.r`fmtbuf, who.w`who.r`main, who.w`cllist and who.w`whosym. Also who.w`who.r`nocc and who.w`who.r`putsta were added. #-h- tools.rem 189 asc 03-jul-84 14:29:28 dpm (dave martin) $ run sys$system:install ST_BIN:WHO/DELETE ST_BIN:PS/DELETE ST_BIN:SH/DELETE ST_BIN:ESH/DELETE ST_BIN:HSH/DELETE ST_BIN:E/DELETE ST_BIN:ED/DELETE ST_BIN:SEND/DELETE ST_BIN:RLIBSHARE/DELETE #-h- changesrc.f83 3152 asc 03-jul-84 14:37:22 dpm (dave martin) 14-Jan-83 Ratfor syntax for multi-statement for clauses changed to stmt, stmt, ... instead of [stmt; stmt; ...] 14-Jan-83 delta, ed, grep, os, sh, xch and xfind sources modified to reflect the change to ratfor above. 28-Mar-83 sort modified to use create instead of open when creating temporary files. Fixes from Dave Martin. 28-Mar-83 get modified to always output file to STDOUT. Several people using get had wiped out their tcs files when the following type of command was given get -r 1.1 snarf.tcs snarf.out The result is that snarf.tcs is created at WRITE access (truncating the file) to fetch the latest revision from the file "1.1". 13-May-83 alist modified to count embedded FF's in page count. R. Stamerjohn 13-May-83 man modified to regard EOF in response to more? prompt as negative. R. Stamerjohn 13-May-83 mcol modified to handle 132 column pages. R. Stamerjohn 13-May-83 pr modified to default page length to 60. R. Stamerjohn 13-May-83 unrot modified to fix bug in argument processing. R. Stamerjohn 13-may-83 xch modified to calculate size of patterns correctly. R. Stamerjohn 13-May-83 xfind modified for same problem as xch. R. Stamerjohn 13-May-83 ed modified to make biged handle 250,000 line files. J. Sventek 13-May-83 asplit modified to perform creates of temp files at WRITE access, instead of opens. J. Sventek 13-May-83 sh modified to permit memory-overlaid version on RSX-11M. 17-May-83 Repeating groups added to form letter tool. J. Sventek 09-Jun-83 date modified to reflect select ==> switch transition. J. Sventek 09-Jun-83 admin modified to report error condition when amove to `tcsfile' fails. D. Martin 09-Jun-83 ar modified to handle 1000 files instead of 256. D. Martin 09-Jun-83 rar modified to handle 1000 files instead of 256. J. Sventek 09-Jun-83 format modified to handle words wider than RM-IN columns correctly. D. Martin 13-Jun-83 New standard version of ratfor pre-processor installed. 13-Jun-83 Added ratp2. 13-Jun-83 rc modified to invoke ratp1 and ratp2. 13-Jun-83 ed modified to convert `select' references to `switch'. 13-Jun-83 format modified to convert `select' references to `switch'. 13-Jun-83 sh modified to convert `select' references to `switch'. 14-Jun-83 man modified to NOT output formfeed characters when in interactive mode. 14-Jun-83 Fixed EOF bug in admin. B. Knittel 15-Jun-83 Fixed bug in comm. J. Sventek 15-Jun-83 All tools with strings of the form "?*[!.]." had the trailing period removed, as ratp1 no longer requires them. 16-Jun-83 All tools referencing `impath' have been changed to use the statically defined path STD_PATH. 21-Jul-83 String expansion bug and mdefine bug fixed in ratfor. 21-Jul-83 Reduced page size in alist to 57 lines. Some printers are just so brain-damaged! 22-Jul-83 Modified man to search through all sections for manual entries. 22-Jul-83 Added apropos utility, which performs regular expression matches on the on-line documentation database. #-h- changevms.f83 666 asc 03-jul-84 14:37:23 dpm (dave martin) 14-Jan-83 rlib.w`prim.r and rlib.w`lib.r modified to reflect the new multi-statement syntax in for statement clauses. 13-Jun-83 `fc' modified to show full image name for `ld' in verbose mode. 13-Jun-83 converted `select' references to `switch' in rlib.w. 16-Jun-83 All tools with strings of the form "?*[!.]." had the trailing period removed, as ratp1 no longer requires them. 16-Jun-83 All tools referencing `impath' have been changed to use the statically defined path STD_PATH. 22-Jul-83 Modified routines rlib.w`lib.r`pattern.r`{addint,getccl} to fix bug in declarations. These fixes are due to Layne Cannon at PNL. #-h- revlevels.s84 3069 asc 03-jul-84 14:37:25 dpm (dave martin) acat Version # 1.1 addr Version # 1.2 admin Version # 1.4 alist Version # 1.5 apropos Version # 1.2 ar Version # 1.3 args Version # 1.3 asam Version # 1.2 asplit Version # 1.3 axref Version # 1.2 banner Version # 1.3 bargraph Version # 1.2 box Version # 1.2 cat Version # 1.2 ccnt Version # 1.1 ch Version # 1.2 chmod Version # 1.1 chown Version # 1.2 cmp Version # 1.2 comm Version # 1.3 cp Version # 1.2 cpress Version # 1.1 crt Version # 1.3 crypt Version # 1.2 date Version # 1.3 dc Version # 1.2 delta Version # 1.3 detab Version # 1.1 diff Version # 1.3 echo Version # 1.1 entab Version # 1.1 exist Version # 1.1 expand Version # 1.1 fb Version # 1.2 fc Version # 1.5 fd Version # 1.2 field Version # 1.2 find Version # 1.1 form Version # 1.6 format Version # 1.8 get Version # 1.3 grep Version # 1.2 incl Version # 1.2 intro Version # 1.4 isam Version # 1.2 kill Version # 1.1 kwic Version # 1.1 lam Version # 1.2 lcnt Version # 1.1 ld Version # 1.8 ll Version # 1.1 lpr Version # 1.2 ls Version # 1.4 macro Version # 1.2 man Version # 1.3.6 mcol Version # 1.3 mkdir Version # 1.2 mv Version # 1.1 number Version # 1.1 os Version # 1.4 pack Version # 1.1 pl Version # 1.3 pr Version # 1.3 printf Version # 1.2 prlabl Version # 1.2 ps Version # 1.3.2 pstat Version # 1.1 pwd Version # 1.2 rar Version # 1.3 ratp2 Version # 1.3 rc Version # 1.7 resume Version # 1.1 rev Version # 1.1 rm Version # 1.3 ruler Version # 1.2 sched Version # 1.3 sedit Version # 1.5 send Version # 1.1.2 sepfor Version # 1.1 sh Version # 1.14 sleep Version # 1.1 sort Version # 1.3 spell Version # 1.2 split Version # 1.2 suspnd Version # 1.1 tail Version # 1.3 tee Version # 1.2 timer Version # 1.2 tr Version # 1.2 tsort Version # 1.2 ttt Version # 1.2 txtrpl Version # 1.5 ul Version # 1.1 uniq Version # 1.1 unrot Version # 1.2 wc Version # 1.2 wcnt Version # 1.1 whereis Version # 1.2 who Version # 1.3.2 xch Version # 1.5 xfind Version # 1.4 xref Version # 1.2