d.ps 60,80;.p 10,1,5;.ap;.rm 70 .title README.TXT .. SCI routine documentation ,  This is the file that describes the "SCI" routines. These routines were developed at: X .lit   Systems Control Inc.  1801 Page Mill Rd. L Palo Alto, Calf. 94301   Mike Liveright and others x (415) 494-1165 .eli @  These routine generally provide a second set of utilities, which nicely augment the standard DEC VAX utilities. These utilities can leither be accessed by the standard definition of each one separately:  4 e.g. Routine :== @device:[directory]Routine  or if the routine DO is defined, then they can be accessed by giving: ` $ DO Routine ... ( Information about the routines is available by the command: T $ INFO Routine  The following sections describe: .list .le ;The SYSTEM MANAGER procedure for loading the SCI system of routines. H .le ;The structure of the SCI routines. .le ;The procedures used to build the DECUS tape. .le ;The one line descriptions of each routine. t.els  The SCI procedures reside in a number of subdirectories. <These directories each have a defined name that consists of SCI followed by underline, followed by the type of directory. These procedures are in the following directories: h .list 0.le; SCI__COM .. Command procedures .le; SCI__EXE .. Program sources and executions modules .le; SCI__INF .. Help and Information files \.le; SCI__LIB .. Subroutines and a library. NOTE.. Many of the programs require subroutines from this library. To $re-create these programs, compile them as normal, and then instead of the normal LINK program, you must use DO LINK program. This will access the subroutines in the library SCI__LIB:LIB.OLB as needed. P.els   The procedures provide for the following types of functions: | .list D.le; Dealing with subdirectories .. ALLDIR, FIND, KILL, SUB, TREE .le; Generating jobs .. CYCLE, SPOOL, SOME .le; Processing tapes and files .. INTAPE, OUTTAPE, VREAD, pDELBLA, SPLIT .le; Simple programs for various things .. CLEAR, CONV, 8ERROR, FREE, NLINE, SORT, VER .le; Programs for dealing with terminals and users .. IDLE, SEND, TERM, WHO, ZWHO d.le; Programs for Pre-processing and handleing NAMELISTs .. NL, (subroutines JJNLREAD, JJNLWRITE etc.) ,.le; Generalized, simple plotting subroutines .. JJPANY, CLEAR ... .le; and many more., please see the end of this file or the INFO.TXT file. X.els  Please contact me if: 1) These routines are useful, 2) There are bugs or upgrades that seem important, or 3) The procedure for getting the routines loaded and up and running can be improved. Thank you. L .page .hl 1;^&The procedure for loading the routines.\& x  The basic stages in getting these routines up and running are: @.list .le ; Copy the routines into a HOLDING directory. e.g. DRA1:[VAXS80.SUTL]  Then SET DEFAULT to that holding directory. l It is probable that these files will already have been put in a directory by the user in order to read this README.TXT file. 4!.le ; Execute the command procedure , e.g. @SCIBLD.COM !to split them into subdirectories !of their PERMANENT directory, e.g. DRA1:[SCI], and to create the files `"necessary to define the system to users. ".le ; Experiment with the system to determine what procedure to use to (#permit access to the system by users. #.le ; Provide a way for users to execute the SCILOG.COM file that will #provide access to these routines and thus T$can use the system. $.els % These stages are discussed below: % %.hl 2; Copy the routines into a HOLDING directory. H& & The first stage is to copy the routines into a directory that will 'be used for HOLDING all the routines before they are split into their various t'subdirectories. I assume that this will be something like DRA1:[VAXS80.SUTL], 'and will use this name in the following discussion. <( ( Next the user should SET DEFAULT to the holding directory. ) h) At this point it is desirable to decide on the name of the )PERMANENT directory to contain the routines. This can be the 0*same as the HOLDING directory, but for simplicity and to permit *easy deleting I have assumed that this PERMANENT directory is *named DRA1:[SCI] \+ +.hl 2; Executing the SCIBLD.COM command procedure. $, , Once the files are copied into the HOLDING directory ,the P-procedure "SCIBLD.COM" can be used to copy the routines from the HOLDING -directory, e.g. DRA1:[VAXS80.SUTL], to their PERMANENT home, .e.g. DRA1:[SCI] and related subdirectories. The command procedure |.will create these directories if necessary. . D/ The command procedure will then execute the required definitions, /contained in the procedure SCILOG.COM 0which defines the required SCI__ names and defines the p0DO and INFO procedures. 0The 81SCI names have an underline between the SCI and the Subdirectory type. 1The system manager can experiment with then and decide which to keep. 2Once the command procedure is executed, the routines are ready to run. The d2system manager must then decide how his users are to access them. 2 ,3 The command procedure should, of course, be self explanitory, and 3can be run in a "TEST" mode to see what it does without actually doing 3anything. X4To run this routine for REAL, execute the routine @SCIBLD.COM and: 4.list 5.le ; answer the MODE question with Carriage__Return, , to 5Build the SCI procedures, 5.le ;answer L6the Combined file directory question (e.g. DRA1:[VAXS80.SUTL]), 6.le ;answer the SCI root question (e.g. DRA1:[SCI]) 7.els x7 The routine should create and copy into the directory DRA1:[SCI] 7and its subdirectories, and then create the file @8SCILOG.COM in the directory DRA1:[SCI]. 8 9 The SCILOG.COM file will be executed so that the user can l9experiment with the routines. NOTE.. these 9definitions will be temporary until logout, and the user should, 4:after experimenting with them, somehow make them available to some :or all users as deccribed in section 1.4. : `;.hl 2; Experimenting with the system. ; (< After the procedure has completed, then try the commands: < < $ DO !! To get a listing of all the routines. T= $ INFO ALL !! To get one line summaries of them. = > $ INFO routine !! To get a fuller description on any routine. > $ DO routine ...!! To execute any routine > H? After sufficient experience with the routines is obtained, then ?decide which are to be retained, and how to make them @available to general users. t@ @.hl 2; Installing the routines for normal usage. .. Gives the highest level of information, i.e. a Lshort description of the DO procedure, and then after a while, the names XMof all the Procedures, Programs, and Subroutines. M N $ INFO .. Gives the next level, i.e. a one line description Nof each of the command procedures, programs and subroutines. N LO $ INFO item .. Gives the lowest level, i.e. roughly Oa one page of description about the routine "item". P xP.page P.hl 1;^&The procedures used for Producing the DECUS directory.\& @Q Q I hope that this description is interesting, but not necessary. RThe procedures should work without a detailed understanding of how the lRroutines were put on and taken off the DECUS tape. R 4S The procedure SCIBLD.COM is designed to take the various SCI Ssubdirectories and back them up into one directory or to take the Sbacked up directory and split it into the proper subdirectories. This `Tprocedure uses the file SCIBLD.FIL to determine the subdirectories, and Tto provide unique file types in the combined directory. (U U The user determines, Uby his answer to the MODE question, whether he is producing a combined backup TVset of files, just testing the procedure, or actually using a combined Vbackup set of files to BUILD the set of sub-directories and assignments Wfor the SCI routines. The user gives the names of the Combined directory Wand of the root of the SCI directory. From that point on the procedure Wuses the file SCIBLD.DEF to combine or split the SCI files. After the HXroutine has split the files, and created the needed assignements, then the Xuser is asked if he wishes to execute the assignments. Y tY To provide these facilities to the normal user it is necessary Yto have SCI__COM, SCI__EXE, SCI__INF, and SCI__LIB defined. This is done via the  $! DO ALLDIR {root_directory} $! Find all the directories from the root_directory $! DO CLEAR $! Clear the screens of all terminals except OPA0 $!{DO} COST {type} $! Computes cost of the Session, in Total, or on Daily basis. $!{DO} CYCLE {prog {,cmd_file}} $! Loops EDIT, FOR, LINK, RUN for quick debugging. $! DO DIR {dir_parms {. or ;}} $! Show a condensed directory listing. $! DO {time} {service} $! Provides access to DO command procedures and programs. $!{DO} FIND {file or GO} {NO or ALL} $! Find the directories that contain the file $! DO FREE $! Show the free blocks of the disk $!{DO} HELP {topic or .topic or ?} $! Retains the topic text for obtaining HELP on various levels. $! DO IDLE {SHOW} $! Shows idle terminals and permits one to be reserved. $! IDLERES Terminal Password $! This is subitted by IDLE.COM to reserve a terminal $! DO INDEX InputFile Outfile $! Generate a cross reference index of a set of programs $! $ INFO {ALL .or. Topic {ALL .or. Subtopic...}} $! Shows INFOrmation about SCI services and other topics. $!{DO} KILL directory.subdirectory... {YES} $! Kill a directory $! DO LINK {prog,,,} $! Appends the SCI library to the end of the LINK command. $! DO LOCATE $! Show the locations of the terminals $! DO LOGOUT $! Shows the session costs before LOGing out the user. $! DO NEWS {number} $! Shows the current news, or the news from any news item. $! DO NLINE Filename {ALL .or. Number} $! Show the Top part of a file $! DO PAGE {number} $! Does {number} of page ejects to line up 'paper'. $!{DO} QUE $! Shows the system queues to permit deleting of a specific entry. $!{DO} RNO {in_file {out_file}} $! Executes RUNOFF on a file to produced justified text. $! DO SCIDEF $! Provides a set of standard definitions of SCI services. $! DO SED {file {$}} $! Simple file editor, The commands are /{cmd}{num} $! DO SEND {term {message}} $! Sends a message, or set of messages to another terminal $! DO SOME {Function {File_spec {Trailer {Comfirm}}}} $! Executes the same command on files of a given type. $! DO SORT {in_file {out_file {fst_col {lst_col}}}} $! Provides a look at the input file, and does simple sort. $!{DO} SOS {file} $! Set up the SOS prompts for a VT-100 $! DO SPOOL {single command} $! Submit a single DCL command, or a DCL command series $! DO SUB{/OUTPUT=filename} {SWITCH} {[DIR]}{filespec} $! Gets directories and sub-directories listings. $! DO SYS $! Shows the system status, if LOOPED, provides system statistics. $! DO TERM $! Show who is on the terminals, and the idle terminals $!{DO} TREE {? or name or .name or [dir.sub...]} $! Moves user around is sub-directory structure. $! DO VER file {YES or Result_file} $! Get the version of a file, and set SCI_VER == version $!{DO} WHO $! Find out who is logged in to the system $! DO ZLIB {Program_source .or. ALL} !!Used by System Manager $! This should create or update SCI_LIB:SCILIB.OLB $! DO ZWHO !!Used mainly by System Manager $! Generates new WHO program from SYSUAF.LIS  Programs:  c. DO ACT c. Computes CPU time used, and finds active terminals. c. DO CONV c. Converts chracter, hex, and decimal data. c.{DO} CRT {-A} {-I} {@}file... {>out_file} c. Shows a file in 22 line chunks. c. DO CRY c. Encripts/Decripts a text file. c. DO DB c. Simple data base program c. DBINC.FOR c. Include file for DB.FOR c. DO DELBLA c. Deletes blanks, col 72,71... in file c. DO ERROR {errnum} c. Shows the DCL error messages for any HEX error. c. DO INTAPE c. Reads fixed block, unlabled tape into VAX files.  program logtime c. Show the LOG time, DAY CPU time, NIGHT cpu time. c. DO NL c. Preprocesses FORTRAN program containing NAMELIST c. DO NULLPROG c. Do nothing except null any ASSIGN/USER c. DO OUTTAPE c. Writes fixed length unlabled tapes from VAX files. c. DO SEND {terminal {message}} c. To send a message or set of messages to another terminal  Program SESSION c. Computes the session costs for COST.COM. c. DO SPLIT c. Splits a FORTRAN file based on PROGRAM etc. statements.  Program SYS c. Computes system information for SYS.COM. c. {DO} TERM c. Show the active terminals c. DO VREAD c. Reads variable record length unlabled tapes. c. {DO} TELL c. Tell who is on the terminals  DO LINK FORTRAN subroutines:   subroutine clear c. Clears the screen in preparation for a new plot.  subroutine hard c. Terminates a plot waiting for next plot.  function jjcmd( string ) c. Sets "string" to the command parameters used.  function jjcmdcp( str, str2 ) c. Copies one string to another, used by JJCMD  FUNCTION JJFTP( buff ) c. Reads one record from FOREIGN TAPE, Assigned MT: TAPE  function JJGET( line ) c. Get a line from the term, or ^files...  function jjlen( string ) !! << Non blank length c. Returns the printing character length of a string  function JJMESS( msgnum ) c. Print, on unit 6, the system message for "msgnum".  FUNCTION JJNLPAR( LINE, LS, STRING ) c. Process a Name List Parameter  FUNCTION JJNLRD(IUNIT, LIST, NUMD, LOCD ) c. Do fortran Name List Read  FUNCTION JJNLWR(IUNIT, LIST, NUMD, LOCD ) c. Processes an name list write.  FUNCTION JJOPENIN( IUNIT, NAME ) c. Process a name list file definitions  subroutine jjpany( imod, ity, x, y ) c. The generalized plot routine interface.  subroutine jjpopn( idev, gmin ) C. OPEN THE PLOT FILE  subroutine jjpscrt( imod, ity, x, y ) C. PLOT ON THE CRT  subroutine jjpscrts( ity, xst, yst ) C. SERVICE THE CRT PLOT  SUBROUTINE jjpshp( JMOD, ITY, X, Y ) C. PLOT ON THE H.P. PLOTTER  subroutine jjpslp( imod, ity, x, y ) C. PLOT ON THE PRINTER  subroutine jjpstek( imod, ity, x, y ) C. PLOT ON THE TEKTRONIX  subroutine jjpsteks( ity, x, y ) C. SERVICE THE TECTRONIX PLOTS  subroutine jjpuchar( itype, ichar ) C. DETERMINE A PLOT CHARACTER  subroutine jjpuwait( time ) C. WAIT A WHILE  subroutine jjpuwrite( nchar, buffer ) C. DO THE PHYSICAL WRITE  FUNCTION JJTAPE( buff, nchar ) c. Reads one record from Assigned MT: TAPE.  subroutine jjtime( time ) C. RETURNS TIMES SINCE LAST CALL  FUNCTION JJUPP( string ) c. Converts the STRING into upper case.  FUNCTION JJWRD( line, ipos, atom ) c. Return the next "word" in the input "line"  subroutine move( ix, iy ) c. Move the plot position to the next IX, IY position.  subroutine send c. Clear out any pending plot instructions.  subroutine set c. Used to set up the TEK routines, a noop now.  subroutine vec( ity, ix, iy ) c. Output a vector, type ITY to position IX and IY.  subroutine wrtchr( ix, iy, logstr, nchar ) c. Move to IX, IY, and output a number of characters.  subroutine wrtstr( ix, iy, string ) c. Move to IX, IY, and output a number of characters.