COMPONENT: COPIOUS.OLB DATE: 08-NOV-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 INSTALLATION: PDS> @[200,4]COPIOUS.BLD ------------------- CALLING SEQUENCE: PDS> LINK program.OBJ+LB:[1,1]COPIOUS/LIB ------------------------------------ DESCRIPTION: COPIOUS -- "YIELDING AN ABUNDANCE." "FULL OF THOUGHT, INFORMATION, OR MATTER." "PROFUSE OR EXUBERANT IN WORDS, EXPRESSION, OR STYLE." THE COPIOUS OBJECT LIBRARY CONTAINS AN ARRAY OF USEFUL FORTRAN CALLABLE SUBROUTINES; DEVICE AND FILE MANAGEMENT -------------------------- ATTACH ATTACH A DEVICE CVTUIC CONVERT ASCII UIC TO BINARY AND VICE-VERSA DETACH DETACH A DEVICE DELETE DELETE FILES BY FILENAME FILNAM GENERATE A FILENAME STRING GETFDB FETCH AN OPEN FILE'S FDB (FILE DESCRIPTOR BLOCK) GETSIZ RETURN NUMBER OF BLOCKS ALLOCATED TO THE SPECIFIED FILE(S) GETUIC FETCH DEFAULT AND/OR CURRENT UIC(S) GETVER FETCH AN OPEN FILE'S VERSION NUMBER IOERRS INITIALIZE I/O ERROR PROCESSING NOLOCK DISABLE FILE-LOCKING DURING ABNORMAL TASK EXIT PROTEC INITIALIZE DEFAULT FILE PROTECTION AND OWNERSHIP RENAME RENAME FILES BY FILENAME REOPEN REOPEN A FILE BY FDB (SEE "GETFDB") STRING MANIPULATION ------------------- ACNVT BINARY INTEGER TO ASCII STRING CONVERSION FCNVT * ASCII STRING TO BINARY REAL CONVERSION ICNVT ASCII STRING TO BINARY INTEGER CONVERSION COMPAR COMPARE TWO ASCII STRINGS COMPRS COMPRESS AN ASCII STRING CONCAT CONCATENATE "N" ASCII STRINGS FILL PAD STRING WITH TRAILING SPACES LENGTH RETURN THE LENGTH OF AN ASCII STRING ICNVT ASCII STRING TO BINARY INTEGER CONVERSION LFJUST LEFT JUSTIFICATION LOCASE CONVERT UPPER CASE CHARACTERS TO LOWER CASE LOCATE RETURN THE POSITION OF A SUBSTRING RTJUST RIGHT JUSTIFICATION STRIP TRUNCATE TRAILING SPACES UPCASE CONVERT LOWER CASE CHARACTERS TO UPPER CASE DATE/TIME FUNCTIONS ------------------- ADOW RETURN ASCII DAY-OF-WEEK (SEE DAYTIM & WKDAY) AMON RETURN ASCII MONTH CVTDAT CONVERT ASCII DATE TO BINARY AND VICE-VERSA CVTTIM CONVERT ASCII TIME TO BINARY AND VICE-VERSA DAYTIM RETURN THE CURRENT DATE, TIME, AND DAY-OF-WEEK GETTIM RETURN SYSTEM CLOCK/CALENDAR PARAMETERS HAPO CONVERT GREGORIAN DATES TO HAPO AND VICE-VERSA JULIAN CONVERT GREGORIAN DATES TO JULIAN AND VICE-VERSA WKDAY RETURN THE DAY-OF-WEEK FOR A SPECIFIC DATE SUBTASKING ---------- SUBRTT SPAWN A REALTIME SUBTASK SUBTSK SPAWN A TIMESHARING SUBTASK MISCELLANEOUS ROUTINES ---------------------- CHKPRV TEST FOR PRIVILEGED UIC EXITWS EXIT WITH STATUS GETCMD FETCH "PDS" COMMAND LINE GETUSR RETURN USERNAME LOGGED INTO A TERMINAL MOVEB MOVE VARIABLES OR ARRAYS BYTE-BY-BYTE PROMPT TERMINAL INPUT WITH PROMPT (QIO IO.RPR) RDTTY TERMINAL INPUT WITH OPTIONS (QIO IO.RLB) SWAPB SWAP VARIABLES OR ARRAYS BYTE-FOR-BYTE SWAPW SWAP VARIABLES OR ARRAYS WORD-FOR-WORD WRTTY TERMINAL OUTPUT WITH OPTIONS (QIO IO.WLB) NOTE: COMPONENTS DENOTED BY '*' ARE PLANNED BUT NOT YET AVAILABLE. COMPONENT: ACNVT DATE: 11-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL ACNVT(INTEGER,STRING,ILEN,[RADIX],[FILL],[ISW]) INTEGER = INTEGER TO BE CONVERTED INTO AN ASCII STRING. STRING = VARIABLE OR ARRAY TO RECEIVE THE ASCII STRING GENERATED BY ACNVT. ILEN = INTEGER ARGUMENT SPECIFYING THE LENGTH OF THE ASCII STRING TO BE GENERATED. RADIX = OPTIONAL ARGUMENT SPECIFYING THE RADIX (2-16) TO USE DURING CONVERSION. (DEFAULT=10) FILL = OPTIONAL FILL CHARACTER TO USE ON THE STRING. (DEFAULT IS BLANK FILLED) ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = CONVERSION SUCCESSFUL -01 = STRING OVERFLOW DESCRIPTION: "ACNVT" CONVERTS A BINARY INTEGER TO ITS ASCII STRING EQUIVALENT USING AN OPTIONALLY SPECIFIED RADIX (2-16) AND FILL CHARACTER. IF THE INTEGER CONVERSION EXCEEDS ILEN, THE OPTIONAL ERROR FLAG IS SET AND THE STRING IS PACKED WITH ASTERISKS. EXAMPLES: CALL ACNVT(1999,STR1,10) CALL ACNVT(1023,STR2,10,8) CALL ACNVT(1023,STR3,10,16) CALL ACNVT(1999,STR4,10,,'0') CALL ACNVT(1999,STR5, 2,,,ISW5) STR1 = ' 1999' STR2 = ' 1777' STR3 = ' 3FF' STR4 = '0000001999' STR5 = '**' ISW5 = -1 COMPONENT: ADOW DATE: 23-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND, WA 99352 SOURCE: MACRO-11 CALLING SEQUENCE: DAY=ADOW(IDOW) DAY = REAL VARIABLE TO RECEIVE THE ASCII DAY-OF-WEEK. IDOW = INTEGER VALUE REPRESENTING THE DAY-OF-WEEK. (1=SUN,2=MON,3=TUE,4=WED,5=THU,6=FRI,7=SAT) DESCRIPTION: "ADOW" RETURNS REAL VALUE CONTAINING A THREE CHARACTER ASCII REPRESENTATION OF THE DAY-OF-WEEK. IF THE SUPPLIED INTEGER DAY-OF-WEEK IS INVALID, THE ROUTINE RETURNS SPACES. THE STRING IS TERMINATED BY AN ASCII NULL CHARACTER. COMPONENT: AMON DATE: 28-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND, WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: MONTH=AMON(IMO) MONTH = REAL VARIABLE TO RECEIVE THE ASCII MONTH. IMO = INTEGER VALUE REPRESENTING THE MONTH. DESCRIPTION: "AMON" RETURNS REAL VALUE CONTAINING A THREE CHARACTER ASCII REPRESENTATION OF THE MONTH. IF THE SUPPLIED INTEGER MONTH IS INVALID, THE ROUTINE RETURNS SPACES. THE STRING IS TERMINATED BY AN ASCII NULL CHARACTER. COMPONENT: ATTACH/DETACH DATE: 17-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL ATTACH(LUN,[ISW]) CALL DETACH(LUN,[ISW]) LUN = LOGICAL UNIT NUMBER OF DEVICE TO BE ATTACHED TO OR DETACHED FROM THE CALLING PROGRAM. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS -NN = FCS ERROR CODE DESCRIPTION: "ATTACH" ATTACHES A DEVICE TO THE CALLING PROGRAM. "DETACH" DETACHES A DEVICE FROM THE CALLING PROGRAM. (NOTE: ATTACH AND DETACH SHOULD ONLY BE USED ON TERMINALS AND PRINTERS). COMPONENT: CHKPRV DATE: 27-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL CHKPRV(UIC,[ISW]) UIC = LITERAL SPECIFYING THE PRIVILEGED UIC. ISW = OPTIONAL INTEGER TO RECEIVE THE INTEGER STATUS. 00 = COMPLETE PRIVILEGES -01 = NON-PRIVILEGED USER IF THE ARGUMENT IS NOT SUPPLIED AND A PRIVILEGE VIOLATION OCCURS, THE PROGRAM IS ABORTED WITH THE FOLLOWING ERROR MESSAGE: You do not have the privilege to issue this command DESCRIPTION: "CHKPRV" VERIFIES USER PRIVILEGES AS DEFINED BY THE CALLING TASK'S DEFAULT UIC. COMPONENT: COMPAR DATE: 30-MAY-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL COMPAR(STR1,STR2,IPOS) STR1,STR2 = ASCII STRINGS TO BE COMPARED. EACH STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. IPOS = INTEGER VARIABLE TO RECEIVE CHARACTER POSITION AT WHICH THE STRING COMPARISON FAILS. IF THE TWO STRINGS ARE EQUIVALENT, IPOS POINTS TO THE STRING TERMINATOR. DESCRIPTION: "COMPAR" COMPARES TWO ASCII STRINGS AND RETURNS THE CHARACTER POSITION AT WHICH THE COMPARISON FAILS. BOTH STRINGS MUST BE TERMINATED BY AN ASCII NULL CHARACTER. EXAMPLES: CALL COMPAR('ABCD' ,'EFGH', N1) CALL COMPAR('ABCDEF','ABCXYZ',N2) CALL COMPAR('ABCDEF','ABC', N3) CALL COMPAR('ABC' ,'ABC', N4) N1=1 N2=4 N3=4 N4=4 COMPONENT: COMPRS DATE: 04-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL COMPRS(STRING,[ILEN]) STRING = ASCII STRING TO BE COMPRESSED. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. ILEN = INTEGER VARIABLE TO RECEIVE THE LENGTH OF THE COMPRESSED STRING. DESCRIPTION: "COMPRS" SCANS AN ASCII STRING CONVERTING ALL NON-PRINTING CHARACTERS TO SPACES, CONVERTING MULTIPLE SPACES TO A SINGLE SPACE, AND DELETING LEADING AND TRAILING SPACES. THE LENGTH OF THE COMPRESSED STRING IS OPTIONALLY RETURNED IN ILEN. COMPONENT: CONCAT DATE: 30-MAY-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL CONCAT(STRING,STR1,STR2,...,STRN) STRING = VARIABLE OR ARRAY TO RECEIVE THE CONCATENATED ASCII STRING. THE RESULTING STRING WILL BE TERMINATED BY AN ASCII NULL CHARACTER. STR1,STR2,...,STRN = ASCII STRINGS TO BE CONCATENATED. ANY NUMBER OF STRINGS MAY BE CONCATENATED IN A SINGLE CALL TO CONCAT. EACH STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. DESCRIPTION: "CONCAT" CONCATENATES ANY NUMBER OF ASCII STRINGS INTO A SINGLE STRING. EACH STRING TO BE CONCATENATED MUST BE TERMINATED BY AN ASCII NULL CHARACTER. EXAMPLES: CALL CONCAT(IBUF,'THIS IS ','AN ASCII',' STRING') CALL CONCAT(FILNAM,DEVICE,'FILENAME.',EXTENSION) IBUF=THIS IS AN ASCII STRING FILNAM=DB1:FILENAME.DAT COMPONENT: CVTDAT DATE: 28-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL CVTDAT(ADAT,IMO,IDA,IYR,MODE,ISW) ADAT = ASCII REPRESENTATION OF THE DATE (DD-MMM-YY). THE STRING MUST BE (WILL BE) TERMINATED BY AN ASCII NULL CHARACTER. IMO,IDA,IYR = INTEGER REPRESENTATION OF THE DATE. MODE = INTEGER SPECIFYING THE CONVERSION MODE. 00 = 'ENCODE' (INTEGER TO ASCII) 01 = 'DECODE' (ASCII TO INTEGER) ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS -01 = SYNTAX ERROR DESCRIPTION: "CVTDAT" CONVERTS AN ASCII REPRESENTATION OF THE SUPPLIED DATE TO ITS INTEGER EQUIVALENTS, AND VICE-VERSA. THE STRING MUST BE (WILL BE) TERMINATED BY AN ASCII NULL TERMINATOR. COMPONENT: CVTTIM DATE: 28-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL CVTTIM(ATIM,IHR,IMN,ISC,MODE,ISW) ATIM = ASCII REPRESENTATION OF THE TIME. THE STRING MUST BE (WILL BE) TERMINATED BY AN ASCII NULL CHARACTER. IHR,IMN,ISC = INTEGER REPRESENTATION OF THE TIME. MODE = INTEGER SPECIFYING THE CONVERSION MODE. 00 = 'ENCODE' (INTEGER TO ASCII) 01 = 'DECODE' (ASCII TO INTEGER) ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS -01 = SYNTAX ERROR DESCRIPTION: "CVTTIM" CONVERTS AN ASCII REPRESENTATION OF THE SUPPLIED TIME TO ITS INTEGER EQUIVALENTS, AND VICE-VERSA. THE STRING MUST BE (WILL BE) TERMINATED BY AN ASCII NULL TERMINATOR. COMPONENT: CVTUIC DATE: 02-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL CVTUIC(AUIC,IUIC,MODE,[ISW]) AUIC = ASCII REPRESENTATION OF THE UIC. IUIC = INTEGER REPRESENTATION OF THE UIC. MODE = INTEGER SPECIFYING THE CONVERSION MODE. -01 = 'DECODE' (ASCII TO INTEGER) 00 = 'ENCODE' (INTEGER TO ASCII: [1,1]) 01 = 'ENCODE' (INTEGER TO ASCII: [001,001]) 03 = 'ENCODE' (INTEGER TO ASCII: 001001) ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS -01 = SYNTAX ERROR DESCRIPTION: "CVTUIC" CONVERTS AN ASCII REPRESENTATION TO THE SUPPLIED USER IDENTIFICATION CODE TO ITS BINARY EQUIVALENT, AND VICE-VERSA. THE STRING MUST BE (WILL BE) TERMINATED BY AN ASCII NULL TERMINATOR. COMPONENT: DAYTIM DATE: 28-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLING SEQUENCE: CALL DAYTIM(ADAT,IDAY,ATIM) ADAT = ARRAY TO RECEIVE THE 9-BYTE ASCII DATE. IDAY = VARIABLE TO RECEIVE AN INTEGER VALUE REPRESENTING THE CURRENT DAY-OF-WEEK. (1=SUN,2=MON,3=TUE,4=WED,5=THU,6=FRI,7=SAT) ATIM = ARRAY TO RECEIVE THE 8-BYTE ASCII TIME-OF-DAY. DESCRIPTION: "DAYTIM" RETURNS THE CURRENT DATE, TIME AND DAY-OF-WEEK. COMPONENT: DELETE DATE: 12-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL DELETE(LUN,FILSPEC,[ISW]) LUN = INTEGER CONTAINING THE LOGICAL UNIT NUMBER TO BE USED BY DELETE. FILSPEC = VARIABLE, ARRAY, OR LITERAL SPECIFYING THE FILE(S) TO BE DELETED. THE FILE SPECIFICATION MAY CONTAIN "WILD-CARD" SPECIFIERS AND MUST INCLUDE AN EXPLICIT OR WILD-CARD VERSION NUMBER. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS. FILE NOT FOUND. +NN = SUCCESS. NN FILES DELETED. -01 = ILLEGAL FILE SPECIFICATION -16 = PRIVILEGE VIOLATION -34 = LUN ALREADY IN USE -63 = VERSION NOT SPECIFIED -96 = INVALID LOGICAL UNIT NUMBER -NN = OTHER FCS ERROR CODE DESCRIPTION: "DELETE" ALLOWS THE USER TO DELETE SPECIFIED FILES FROM A FORTRAN PROGRAM. THE FILE SPECIFICATION MAY INCLUDE "WILD-CARD" SPECIFIERS AND MUST INCLUDE AN EXPLICIT OR WILD-CARD VERSION NUMBER. THE NUMBER OF FILES DELETED IS OPTIONALLY RETURNED IN THE INTEGER STATUS WORD. EXAMPLE: CALL DELETE(1,'[1,1]*.TMP *') COMPONENT: EXITWS DATE: 06-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL EXITWS([ISW]) ISW = INTEGER SPECIFYING EXIT STATUS 00 TASK SUCCESSFUL (DEFAULT) 01 TASK SUCCESSFUL, WARNING DIAGNOSTICS OCCURED 02 TASK SUCCESSFUL, NON-FATAL ERRORS OCCURED 04 TASK FAILED, FATAL ERRORS OCCURED OTHER TASK FAILED, FATAL ERRORS OCCURED DESCRIPTION: "EXITWS" ESTABLISHES A LINK FROM USER PROGRAMS TO IAS CONDITIONAL PROGRAM EXECUTION COMMANDS BY PROVIDING TASK STATUS INFORMATION UPON EXIT. THE ROUTINE IS EQUIVALENT TO THE STANDARD "CALL EXIT" SUBROUTINE WITH THE EXCEPTION THAT TASK STATUS IS REPORTED TO THE OPERATING SYSTEM IMMEDIATELY BEFORE CONTROL IS RELINQUISHED. COMPONENT: FILL DATE: 02-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL FILL(STRING,ILEN) STRING = VARIABLE OR ARRAY CONTAINING STRING TO BE PADDED. ILEN = INTEGER ARGUMENT SPECIFYING THE LENGTH OF THE PADDED STRING. DESCRIPTION: "FILL" PADS AN ASCII STRING OF LESS THAN ILEN CHARACTERS WITH TRAILING SPACES AND TERMINATES THE RESULTING STRING WITH AN ASCII NULL CHARACTER. EXAMPLES: STR1='ABC' STR2='ABCDEF' CALL FILL(STR1,6) CALL FILL(STR1,3) STR1='ABC ' STR2='ABC' COMPONENT: FILNAM DATE: 03-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL FILNAM(STRING,[DEV],[UIC],[NAME],[EXT],[VER],[ISW]) STRING = VARIABLE CONTAINING AN ASCII REPRESENTATION OF THE FILE SPECIFICATION TO BE CONVERTED. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. DEV,UIC,NAM,EXT,VER = LITERALS SPECIFYING THE "DEFAULT" FILESPEC COMPONENTS. IF NOT SUPPLIED, THE DEFAULTS USED ARE: DEV = 'SY' UIC = CALLING ROUTINE'S DEFAULT UIC NAM = NO DEFAULT EXT = NO DEFAULT VER = NO DEFAULT (HIGHEST VERSION) ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = CONVERSION SUCCESSFUL -01 = ILLEGAL FILE SPECIFICATION DESCRIPTION: "FILNAM" VERIFIES AND CONVERTS AN ASCII FILE SPECIFICATION, SUB- STITUTING USER SUPPLIED DEFAULTS WHEN NECESSARY. EXAMPLES: FNAM1 = 'FNAM1.DAT' FNAM2 = 'FNAM2' CALL FILNAM(FNAM1) CALL FILNAM(FNAM2,'DB0','[200,200]',,'DAT') FNAM1 = 'SY0:[1,1]FNAM1.DAT' FNAM2 = 'DB0:[200,200]FNAM2.DAT' COMPONENT: GETCMD DATE: 10-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLING SEQUENCE: CALL GCMD (LUN, ICMD,ISW) CALL GCMDP(LUN,PRMPT,ICMD,ISW) LUN = INTEGER ARGUMENT SPECIFYING THE TERMINAL LOGICAL UNIT NUMBER TO BE USED FOR CONTINUATION LINE INPUT. PRMPT = VARIABLE OR ARRAY CONTAINING THE PROMPT STRING TO BE WRITTEN BEFORE ACCEPTING TERMINAL INPUT. THE STRING MAY INCLUDE UP TO 80 ASCII CHARACTERS INCLUDING THE MANDATORY NULL TERMINATOR. ICMD = 80 BYTE ARRAY TO RECEIVE THE COMMAND LINE. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. +NN = SUCCESS. NN CHARACTERS RECEIVED. -10 = END-OF-FILE ON LUN -NN = OTHER FCS ERROR CODE DESCRIPTION: "GCMD" FETCHES AN MCR COMMAND LINE, PROMPTS FOR AND ACCEPTS CONTINUATION LINES (UP TO 79 CHARACTERS), STRIPS TRAILING BLANKS AND COMMENT FIELDS (DENOTED BY !), REPLACES ASCII TAB CHARACTERS AND MULTIPLE SPACES WITH A SINGLE SPACE, CONVERTS LOWER CASE CHARACTERS, AND RETURNS THE COMMAND LINE TERMINATED BY AN ASCII NULL TO THE CALLING PROGRAM. THE ENTRY POINT "GCMDP" ALLOWS THE USER TO BYPASS THE CALL TO "GET MCR COMMAND LINE", PROVIDING A HANDY ROUTINE FOR READING AND PROCESSING PROMPTED COMMAND LINES. EXAMPLES: CALL GCMD(5,ICMD,ISW) CALL GCMDP(5,'COMMAND? ',ICMD,ISW) COMPONENT: GETFDB DATE: 17-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL GETFDB(LUN,IFDB,[ISW]) LUN = INTEGER CONTAINING A LOGICAL UNIT NUMBER. IFDB = 23-WORD INTEGER ARRAY TO RECIEVE FDB. ISW = VARIABLE TO RECIEVE THE INTEGER STATUS WORD. 00 = SUCCESS -37 = NO FILE ACCESSED ON LUN -96 = INVALID LOGICAL UNIT NUMBER DESCRIPTION: THE "GETFDB" DIRECTIVE SAVES ENOUGH OF THE FORTRAN FILE DESCRIPTOR BLOCK (FFDB) FOR A CURRENTLY OPEN FILE TO BE REOPENNED BY FILE-ID USING THE "REOPEN" DIRECTIVE. COMPONENT: GETSIZ DATE: 31-OCT-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: IBLKS = GETSIZ(LUN,FILSPEC,[ISW]) IBLKS = INTEGER OR INTEGER*4 VARIABLE TO RECEIVE THE TOTAL NUMBER OF BLOCKS ALLOCATED TO THE SPECIFIED FILE(S). LUN = INTEGER CONTAINING THE LOGICAL UNIT NUMBER TO BE USED BY GETSIZ. FILSPEC = VARIABLE, ARRAY, OR LITERAL SPECIFYING THE FILE(S) TO BE SCANNED. THE FILE SPECIFICATION MAY CONTAIN "WILD-CARD" SPECIFIERS. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS. FILE NOT FOUND. +NN = SUCCESS. NN FILES FOUND. -01 = ILLEGAL FILE SPECIFICATION -26 = DIRECTORY FILE NOT FOUND -34 = LUN ALREADY IN USE -52 = WILD CARD DIRECTORY NOT ALLOWED -96 = INVALID LOGICAL UNIT NUMBER -NN = OTHER FCS ERROR CODE RESTRICTIONS: "GETSIZ" MUST BE DECLARED TYPE INTEGER OR INTEGER*4. DESCRIPTION: "GETSIZ" RETURNS THE TOTAL NUMBER OF BLOCKS ALLOCATED TO THE SPECIFIED FILE(S). THE FILE SPECIFICATION MAY INCLUDE "WILD-CARD" SPECIFIERS. THE NUMBER OF FILES ACTUALLY SCANNED IS OPTIONALLY RETURNED IN THE INTEGER STATUS WORD. EXAMPLE: INTEGER*4 GETSIZ,IBLKS IBLKS = GETSIZ(1,'[1,1]*.* *',ISW) COMPONENT: GETTIM DATE: 10-MAY-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL GETTIM(TIMBUF) TIMBUF = 8-WORD INTEGER ARRAY TO RECEIVE TIME AND DATE PARAMETERS. TIMBUF(1) = YEAR TIMBUF(2) = MONTH TIMBUF(3) = DAY TIMBUF(4) = HOUR TIMBUF(5) = MINUTE TIMBUF(6) = SECOND TIMBUF(7) = CLOCK TICKS TIMBUF(8) = TICKS PER SECOND DESCRIPTION: "GETTIM" READS THE SYSTEM CLOCK/CALENDAR AND RETURNS AN 8-WORD INTEGER ARRAY CONTAINING THE DATE AND TIME PARAMETERS LISTED ABOVE. COMPONENT: GETUIC DATE: 02-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL GETUIC([DEFUIC],[CURUIC]) DEFUIC = VARIABLE TO RECEIVE AN INTEGER REPRESENTATION OF THE USER'S DEFAULT UIC. CURUIC = VARIABLE TO RECEIVE AN INTEGER REPRESENTATION OF THE USER'S CURRENT UIC. DESCRIPTION: "GETUIC" FETCHES THE CALLING ROUTINE'S DEFAULT AND CURRENT USER IDENTIFICATION CODE. THE UIC(S) ARE RETURNED AS INTEGER VALUES. COMPONENT: GETUSR DATE: 17-SEP-70 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL GETUSR(LUN,USRNAM,[ISW]) LUN = LOGICAL UNIT NUMBER. USRNAM = ARRAY TO RECEIVE THE 12-CHARACTER ASCII USERNAME. ISW = OPTIONAL INTEGER STATUS WORD. 00 = SUCCESS -92 = INVALID DEVICE OR DEVICE NOT IN SYSTEM -96 = INVALID LOGICAL UNIT NUMBER DESCRIPTION: "GETUSR" RETURNS THE USERNAME ASSOCIATED WITH A SPECIFIED TERMINAL. THE TERMINAL MUST BE ASSIGNED TO "LUN" PRIOR TO CALLING GETUSR. THE CURRENT USERNAME IS RETURNED BY ASSIGNING A LOGICAL UNIT TO "TI:". EXAMPLES: RETURN THE USERNAME OF THE USER LOGGED INTO "TT10:" (IF ANY): CALL ASSIGN(LUN,'TT10:') CALL GETUSR(LUN,USRBUF,ISW) RETURN THE CURRENT USER'S USERNAME (LUN 5 = "TI:" BY DEFAULT): CALL GETUSR(5,USRBUF) RESTRICTIONS: THE "IASCOM" SYSTEM GLOBAL AREA MUST BE LINKED TO ANY TASK CALLING THIS ROUTINE: PDS> LINK/OPTIONS TEST+[1,1]COPIOUS/LIB+[1,1]IASCOM/SEL OPTION? LIBR=SYSRES:RO OPTION? LIBR=IASCOM:RO OPTION? / COMPONENT: GETVER DATE: 09-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL GETVER(LUN,IVER,[ISW]) LUN = LOGICAL UNIT NUMBER OF OPEN FILE TO BE SCANNED. IVER = INTEGER VERSION NUMBER OF FILE OPEN ON LOGICAL UNIT LUN. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS -37 = NO FILE ACCESSED ON LUN -96 = INVALID LOGICAL UNIT NUMBER DESCRIPTION: "GETVER" RETURNS THE VERSION NUMBER OF AN OPEN FILE. SINCE A FILE OPENED WITHOUT AN EXPLICIT VERSION NUMBER DEFAULTS TO THE HIGHEST (LATEST) VERSION CREATED, "GETVER" CAN BE USED TO DETERMINE EXACTLY WHICH VERSION WAS ACTUALLY ACCESSED. COMPONENT: HAPO DATE: 29-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL HAPO(HDAT,IMO,IDA,IYR,MODE,ISW) HDAT = HAPO REPRESENTATION OF THE DATE. IMO,IDA,IYR = GREGORIAN REPRESENTATION OF THE DATE. MODE = INTEGER SPECIFYING THE CONVERSION MODE. 00 = 'ENCODE' (GREGORIAN TO HAPO) 01 = 'DECODE' (HAPO TO GREGORIAN) ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS -01 = SYNTAX ERROR DESCRIPTION: "HAPO" CONVERTS GREGORIAN DATES TO A SINGLE INTEGER AND VICE-VERSA. HAPO CONVERSIONS MAY BE USED TO REDUCE MASS STORAGE REQUIREMENTS, AND SIMPLIFY THE COMPUTATION OF LAPSED TIME BETWEEN ANY TWO CALENDAR DATES. THIS IS DONE BY STARTING WITH A BASE DATE AS DAY 1, AND SEQUENTIALLY NUMBERING THE DAYS THAT FOLLOW, ALLOWING A VERY SIMPLE SUBTRACTION OF THE TWO DATES INVOLVED. THE BASE DATE FOR HAPO IS SEPTEMBER 26, 1944 WHICH MARKS THE STARTUP OF HANFORD'S FIRST ATOMIC REACTOR. COMPONENT: ICNVT DATE: 11-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: INT = ICNVT(STRING,[ILEN],[RADIX],[ISW]) INT = VARIABLE TO RECEIVE THE INTEGER RESULT OF THE ASCII CONVERSION. STRING = VARIABLE OR ARRAY CONTAINING THE ASCII STRING TO BE SCANNED FOR CONVERSION. ILEN = INTEGER VARIABLE TO RECEIVE THE NUMBER OF ASCII CHARACTERS SCANNED DURING CONVERSION. RADIX = OPTIONAL ARGUMENT SPECIFYING THE RADIX (2-16) TO USE DURING CONVERSION. (DEFAULT=10) ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = CONVERSION SUCCESSFUL -01 = BINARY OVERFLOW -02 = DECIMAL OVERFLOW DESCRIPTION: "ICNVT" CONVERTS AN ASCII STRING TO ITS INTEGER EQUIVALENT USING AN OPTIONALLY SPECIFIED RADIX (2-16). THE ASCII STRING IS SCANNED AND CONVERTED UNTIL ENCOUNTERING A NON-NUMERIC OR OUT-OF-RANGE CHARACTER. LEADING SPACES ARE IGNORED, IMBEDDED SPACES WILL HALT CONVERSION. THE ACTUAL NUMBER OF CHARACTERS SCANNED IS OPTIONALLY RETURNED IN "ILEN". BINARY OVERFLOW OCCURS IF THE CONVERSION EXCEEDS 177777(8). DECIMAL OVERFLOW OCCURS IF RADIX-10 IS SPECIFIED (EXPLICITLY OR BY DEFAULT) AND THE INTEGER RESULT EXCEEDS 32767(10). EXAMPLES: INT1 = ICNVT('1999') INT2 = ICNVT('1777',LEN2,8) INT3 = ICNVT(' 3FF',LEN3,16) INT4 = ICNVT(' 99 ',LEN4) INT5 = ICNVT('1999',LEN5,8) INT1 = 1999 INT2 = 1023 LEN2 = 4 INT3 = 1023 LEN3 = 4 INT4 = 99 LEN4 = 3 INT5 = 1 LEN5 = 1 COMPONENT: IOERRS DATE: 05-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLING SEQUENCE: CALL IOERRS DESCRIPTION: "IOERRS" DISABLES RUN-TIME PROCESSING OF I/O ERRORS MOST LIKELY TO BE PROCESSED AS NON-FATAL BY THE USER'S PROGRAM. SPECIFICALLY, THE ERRORS DISABLED ARE; 28 -- 'CLOSE ERROR' 29 -- 'NO SUCH FILE' 30 -- 'OPEN FAILURE' 38 -- 'ERROR DURING WRITE' 39 -- 'ERROR DURING READ' 42 -- 'DEVICE HANDLER NOT RESIDENT' 43 -- 'FILE NAME SPECIFICATION ERROR' 59 -- 'LIST-DIRECTED I/O SYNTAX ERROR' 61 -- 'FORMAT/VARIABLE-TYPE MISMATCH' 63 -- 'OUTPUT CONVERSION ERROR' 64 -- 'INPUT CONVERSION ERROR' COMPONENT: JULIAN DATE: 28-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL JULIAN(JDAT,IMO,IDA,IYR,MODE,ISW) JDAT = JULIAN REPRESENTATION OF THE DATE. IMO,IDA,IYR = GREGORIAN REPRESENTATION OF THE DATE. MODE = INTEGER SPECIFYING THE CONVERSION MODE. 00 = 'ENCODE' (GREGORIAN TO JULIAN) 01 = 'DECODE' (JULIAN TO GREGORIAN) ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS -01 = SYNTAX ERROR DESCRIPTION: "JULIAN" CONVERTS GREGORIAN DATES TO JULIAN AND VICE-VERSA. COMPONENT: LENGTH DATE: 30-MAY-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: ILEN = LENGTH(STRING,[MLEN]) ILEN = INTEGER VARIABLE TO RECEIVE THE LENGTH OF THE ASCII STRING. STRING = ARRAY CONTAINING AN ASCII STRING. MLEN = VARIABLE CONTAINING MAXIMUM STRING LENGTH. IF THE ARGUMENT IS NOT SUPPLIED, LENGTH IS DETERMINED BY SCANNING FORWARD THROUGH THE STRING FOR THE FIRST ASCII NULL CHARACTER. IF THE ARGUMENT IS SUPPLIED, LENGTH IS DETERMINED BY SCANNING THE STRING BACKWARDS FROM MLEN FOR THE FIRST NON-BLANK, PRINTABLE ASCII CHARACTER. DESCRIPTION: "LENGTH" RETURNS THE LENGTH OF AN ASCII STRING. EXAMPLES: N1 = LENGTH('123456789 123456789 ',30) N2 = LENGTH('123456789 123456789 ') N1=19 N2=30 COMPONENT: LFJUST DATE: 27-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL LFJUST(STRING,[ILEN]) STRING = VARIABLE OR ARRAY CONTAINING STRING TO BE JUSTIFIED. NLEN = OPTIONAL ARGUMENT SPECIFYING THE LENGTH OF THE STRING TO BE JUSTIFIED. IF THE ARGUMENT IS NOT SUPPLIED THE STRING IS SCANNED UNTIL AN ASCII NULL CHARACTER IS ENCOUNTERED. DESCRIPTION: "LFJUST" LEFT JUSTIFIES AN ASCII STRING. THE RIGHT MARGIN OF THE JUSTIFIED STRING IS OPTIONALLY SPECIFIED BY THE "ILEN" PARAMETER. IF ILEN IS NOT SUPPLIED JUSTIFICATION IS CONTROLLED BY THE OCCURANCE OF AN ASCII NULL STRING TERMINATOR. EXAMPLES: STR1: ' ABC' STR2: ' ABC' CALL LFJUST(STR1) CALL LFJUST(STR2,4) STR1: 'ABC ' STR2: 'A BC' COMPONENT: LOCASE DATE: 30-MAY-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL LOCASE(STRING,[NCHR]) STRING = VARIABLE OR ARRAY CONTAINING STRING TO BE CONVERTED. NCHR = OPTIONAL ARGUMENT SPECIFYING NUMBER OF CHARACTERS TO SCAN DURING CONVERSION. IF THE ARGUMENT IS NOT SUPPLIED THE STRING IS SCANNED UNTIL AN ASCII NULL CHARACTER IS ENCOUNTERED. DESCRIPTION: "LOCASE" SCANS AN ASCII STRING, CONVERTING ALL UPPER CASE CHARACTERS TO LOWER CASE. THE SCAN WILL CONTINUE UNTIL ENCOUNTERING AN ASCII NULL CHARACTER, OR UNTIL THE OPTIONAL CHARACTER COUNT IS EXHAUSTED. COMPONENT: LOCATE DATE: 04-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL LOCATE(STRING,SBSTRG,IPOS) STRING = ASCII STRING TO BE SCANNED FOR AN OCCURANCE OF A SUB-STRING. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. SBSTRG = THE ASCII SUB-STRING TO BE LOCATED. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. IPOS = INTEGER VARIABLE TO RECEIVE CHARACTER POSITION OF THE SUB-STRING WITHIN THE STRING. ZERO IS RETURNED IF THE SEARCH FAILS TO FIND ANY OCCUR- ANCES OF THE SUB-STRING. DESCRIPTION: "LOCATE" SCANS AN ASCII STRING FOR THE FIRST OCCURANCE OF A SPECIFIED ASCII SUB-STRING. IF NO OCCURANCES ARE FOUND THE ROUTINE RETURNS A CHARACTER POSITION OF ZERO. EXAMPLES: CALL LOCATE('ABCDEF','D', N1) CALL LOCATE('ABCDEF','EFG',N2) CALL LOCATE('ABCDEF','ABC',N3) CALL LOCATE('AB ABC','ABC',N4) N1=4 N2=0 N3=1 N4=4 COMPONENT: MOVEB DATE: 30-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL MOVEB(FROM,TO,[NBYTE]) FROM = VARIABLE OR ARRAY TO BE COPIED. TO = VARIABLE OR ARRAY TO RECEIVE "FROM". NBYTE = NUMBER OF BYTES TO BE COPIED (DEFAULT=1). = 1 BYTE LOGICAL*1 = 2 LOGICAL INTEGER = 4 INTEGER*4 REAL = 8 REAL*8 COMPLEX DOUBLE PRECISION DESCRIPTION: "MOVEB" MOVES A VARIABLE OR ARRAY, BYTE-BY-BYTE, INTO ANOTHER LOCATION. THE NUMBER OF BYTES TO MOVE IS OPTIONALLY SET THROUGH THE "NBYTE" PARAMETER (DEFAULT=1). THE NUMBER OF BYTES TO BE MOVED IS NORMALLY DEPENDENT UPON THE INPUT VARIABLE TYPES (SEE TABLE ABOVE). EXAMPLES: CALL MOVEB(INT1, INT2, 2) MOVE INTEGER VARIABLE CALL MOVEB(REAL1, REAL2, 4) MOVE REAL VARIABLE CALL MOVEB(ARRAY1,ARRAY2,80) MOVE 80-BYTE ARRAY COMPONENT: NOLOCK DATE: 27-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL NOLOCK(LUN) LUN = INTEGER CONTAINING A LOGICAL UNIT NUMBER. DESCRIPTION: IF CALLED IMMEDIATELY BEFORE OPENING A FILE, "NOLOCK" PREVENTS THAT FILE FROM BEING LOCKED IRREGARDLESS OF HOW THE TASK EXITS. EXAMPLE: CALL NOLOCK(2) OPEN(UNIT=2,NAME='FILE.DAT',TYPE='NEW') COMPONENT: PROMPT DATE: 10-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL PROMPT(LUN,PRMPT,IBUF,[ILEN],[RAL],[NOECHO],[ISW]) LUN = INTEGER CONTAINING A LOGICAL UNIT NUMBER. PRMPT = VARIABLE OR ARRAY CONTAINING THE PROMPT STRING TO BE WRITTEN BEFORE ACCEPTING TERMINAL INPUT. THE STRING MAY CONTAIN UP TO 80 ASCII CHARACTERS INCLUDING THE MANDATORY NULL TERMINATOR. IBUF = VARIABLE OR ARRAY TO RECEIVE TERMINAL INPUT. ILEN = OPTIONAL INTEGER ARGUMENT SPECIFYING THE NUMBER OF CHARACTERS TO BE INPUT. (DEFAULT=1) RAL = OPTIONAL LITERAL 'READALL' INDICATING THAT ALL EIGHT BITS OF THE BYTE ARE TO BE INPUT WITHOUT INTERFERENCE BY THE TERMINAL DEVICE HANDLER. NOECHO = OPTIONAL LITERAL 'NOECHO' INDICATING THAT CHAR- ACTERS INPUT WILL NOT BE ECHOED BY THE TERMINAL DEVICE HANDLER. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. +NN = SUCCESS. NN CHARACTERS RECEIVED. -10 = END-OF-FILE ENCOUNTERED -NN = OTHER FCS ERROR CODE DESCRIPTION: "PROMPT" INPUTS AN ARRAY OF BYTES USING THE QIO IO.RPR (READ WITH PROMPT) FUNCTION. THE ROUTINE MAY BE USED WHENEVER IT IS DE- SIRABLE TO INPUT CHARACTERS FROM A TERMINAL DEVICE USING THE SPECIAL HANDLING OPTIONS PROVIDED. PROMPT INPUT REQUESTS ARE SATISFIED WHEN EITHER THE USER BUFFER IS FILLED (ILEN CHARACTERS HAVE BEEN READ), OR ONE OF THE TERMINATION CHARACTERS (CARRIAGE RETURN OR ESCAPE) IS TYPED. THE USER BUFFER IS BLANK FILLED ON RETURN AND THE ACTUAL NUMBER OF CHARACTERS INPUT IS RETURNED IN THE INTEGER STATUS WORD. EXAMPLES: CALL PROMPT(5,'CHARACTER? ',CHAR) CALL PROMPT(5,'PASSWORD? ',PASWRD,6,,'NOECHO') IN THE FIRST EXAMPLE A SINGLE ASCII CHARACTER IS INPUT FROM THE TERMINAL. THE SECOND EXAMPLE DEMONSTRATES HOW PROMPT MIGHT BE USED TO INPUT A "SECRET" PASSWORD. COMPONENT: PROTEC DATE: 05-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL PROTEC([PROTECT],[OWNER],[ISW]) PROTECT = STRING SPECIFYING THE DEFAULT PROTECTION TO BE USED WHEN CREATING FILES. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. THE DEFAULT FILE PROTECTION IS SPECIFIED IN THE FOLLOWING FORMAT: (SYSTEM,OWNER,GROUP,WORLD) WHERE EACH OF THE FOUR USER CATAGORIES SYSTEM, OWNER, GROUP AND WORLD, ARE ASSIGNED ACCESS PRIVILEGES BY INCLUDING THE APPROPRIATE PROTEC- TION CODE(S) IN THE STRING R - READ W - WRITE E - EXTEND (EXECUTE) D - DELETE FOR EXAMPLE, THE STRING '(RWED,RWED,RWED,R)' PROVIDES COMPLETE FILE ACCESS TO SYSTEM, OWNER AND GROUP USERS, AND READ-ONLY ACCESS TO ALL OTHERS. OWNER = STRING SPECIFYING THE DEFAULT FILE OWNER TO BE USED WHEN CREATING FILES. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. THE DEFAULT FILE OWNER IS SPECIFIED IN THE FOLLOWING FORMAT [GROUP,USER] ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = COMPLETE SUCCESS -01 = SYNTAX ERROR -02 = SET FAILURE DESCRIPTION: "PROTEC" SPECIFIES THE FILE PROTECTION AND OWNERSHIP TO BE ASSOCIATED WITH ANY FILES CREATED BY THE PROGRAM FOLLOWING THE SUBROUTINE CALL. EXAMPLE: CALL PROTEC('(R,RWED,R,R)','[1,1]') CALL OPEN(UNIT=1,NAME='READONLY.DAT',TYPE='NEW') THE FILE CREATED IS OWNED BY THE SYSTEM AND MAY BE ACCESSED FOR READ-ONLY BY ALL USERS OTHER THAN THE OWNER. COMPONENT: RDTTY DATE: 09-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL RDTTY(LUN,IBUF,[ILEN],[RAL],[NOECHO],[ISW]) LUN = INTEGER CONTAINING A LOGICAL UNIT NUMBER. IBUF = VARIABLE OR ARRAY TO RECEIVE THE INPUT CHARACTER(S). ILEN = OPTIONAL INTEGER ARGUMENT SPECIFYING THE NUMBER OF CHARACTERS TO BE INPUT. (DEFAULT=1) RAL = OPTIONAL LITERAL 'READALL' INDICATING THAT ALL EIGHT BITS OF THE BYTE ARE TO BE INPUT WITHOUT INTERFERENCE BY THE TERMINAL DEVICE HANDLER. NOECHO = OPTIONAL LITERAL 'NOECHO' INDICATING THAT CHAR- ACTERS INPUT WILL NOT BE ECHOED BY THE TERMINAL DEVICE HANDLER. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. +NN = SUCCESS. NN CHARACTERS RECEIVED. -10 = END-OF-FILE ENCOUNTERED -NN = OTHER FCS ERROR CODE DESCRIPTION: "RDTTY" INPUTS AN ARRAY OF BYTES USING THE QIO IO.RLB (READ LOGICAL BLOCK) FUNCTION. THE ROUTINE MAY BE USED WHENEVER IT IS DE- SIRABLE TO INPUT CHARACTERS FROM A TERMINAL DEVICE USING THE SPECIAL HANDLING OPTIONS PROVIDED BY RDTTY. RDTTY INPUT REQUESTS ARE SATISFIED WHEN EITHER THE USER BUFFER IS FILLED (ILEN CHARACTERS HAVE BEEN READ), OR ONE OF THE TERMINATION CHARACTERS (CARRIAGE RETURN OR ESCAPE) IS TYPED. THE USER BUFFER IS BLANK FILLED ON RETURN AND THE ACTUAL NUMBER OF CHARACTERS INPUT IS RETURNED IN THE INTEGER STATUS WORD. EXAMPLES: CALL RDTTY(5,CHAR) CALL RDTTY(5,PASWRD,6,,'NOECHO') IN THE FIRST EXAMPLE A SINGLE ASCII CHARACTER IS INPUT FROM THE TERMINAL. THE SECOND EXAMPLE DEMONSTRATES HOW RDTTY MIGHT BE USED TO INPUT A "SECRET" PASSWORD. COMPONENT: RENAME DATE: 18-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL RENAME(LUN,OLDFILE,NEWFILE,[ISW]) LUN = INTEGER CONTAINING THE LOGICAL UNIT NUMBER TO BE USED BY RENAME. OLDFILE = VARIABLE, ARRAY, OR LITERAL SPECIFYING THE OLD FILE SPECIFICATION. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. NEWFILE = VARIABLE, ARRAY, OR LITERAL SPECIFYING THE NEW FILE SPECIFICATION. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 = SUCCESS -01 = ILLEGAL FILE SPECIFICATION -16 = PRIVILEGE VIOLATION -26 = NO SUCH FILE -34 = LUN ALREADY IN USE -48 = CANNOT RENAME FROM ONE DEVICE TO ANOTHER -49 = NEW FILENAME ALREADY EXISTS -96 = INVALID LOGICAL UNIT NUMBER -NN = OTHER FCS ERROR CODE DESCRIPTION: "RENAME" ALLOWS THE USER TO RENAME SPECIFIED FILES FROM A FORTRAN PROGRAM. EXAMPLE: CALL RENAME(1,'FILE.OLD','FILE.NEW') COMPONENT: REOPEN DATE: 17-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL REOPEN(LUN,IFDB,[MODE],[SHARE],[IASV],[ISW]) LUN = INTEGER CONTAINING A LOGICAL UNIT NUMBER. IFDB = 23-WORD ARRAY CONTAINING THE FDB. MODE = LITERAL SPECIFYING TYPE OF ACCESS. 'UPDATE' FOR READ/WRITE ACCESS [DEFAULT] 'READONLY' FOR READ-ONLY ACCESS 'APPEND' FOR APPEND ACCESS SHARE = THE LITERAL 'SHARED' INDICATING SHARED FILE ACCESS. IASV = INTEGER "ASSOCIATE" VARIABLE FOR DIRECT ACCESS FILES. ISW = VARIABLE TO RECIEVE THE INTEGER STATUS WORD. 00 = SUCCESS -01 = SYNTAX ERROR -34 = LUN ALREADY IN USE -96 = INVALID LOGICAL UNIT NUMBER -NN = OTHER FCS ERROR CODE DESCRIPTION: THE "REOPEN" DIRECTIVE OPENS A FILE BY FILE-ID. THE SUBROUTINE UTILIZES A FORTRAN FILE DESCRIPTOR BLOCK SAVED BY THE "GETFDB" ROUTINE. COMPONENT: RTJUST DATE: 27-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL RTJUST(STRING,[ILEN]) STRING = VARIABLE OR ARRAY CONTAINING STRING TO BE JUSTIFIED. NLEN = OPTIONAL ARGUMENT SPECIFYING THE LENGTH OF THE STRING TO BE JUSTIFIED. IF THE ARGUMENT IS NOT SUPPLIED THE STRING IS SCANNED UNTIL AN ASCII NULL CHARACTER IS ENCOUNTERED. DESCRIPTION: "RTJUST" RIGHT JUSTIFIES AN ASCII STRING. THE RIGHT MARGIN OF THE JUSTIFIED STRING IS OPTIONALLY SPECIFIED BY THE "ILEN" PARAMETER. IF ILEN IS NOT SUPPLIED JUSTIFICATION IS CONTROLLED BY THE OCCURANCE OF AN ASCII NULL STRING TERMINATOR. EXAMPLES: STR1: 'ABC ' STR2: 'ABC ' CALL RTJUST(STR1) CALL RTJUST(STR2,4) STR1: ' ABC' STR2: ' ABC ' COMPONENT: STRIP DATE: 30-MAY-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL STRIP(STRING,[ILEN]) STRING = ARRAY CONTAINING THE STRING TO BE TRUNCATED. THE STRING MUST BE TERMINATED BY AN ASCII NULL CHARACTER. ILEN = INTEGER VARIABLE TO RECEIVE THE LENGTH OF THE TRUNCATED STRING. DESCRIPTION: "STRIP" TRUNCATES TRAILING SPACES AND NON-PRINTABLE CHARACTERS FROM AN ASCII STRING (NULL REPLACEMENT). THE LENGTH OF THE TRUNCATED STRING IS OPTIONALLY RETURNED IN ILEN. COMPONENT: SUBRTT DATE: 02-AUG-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLER: FORTRAN IV-PLUS RESTRICTIONS: USER MUST HAVE REALTIME PRIVILEGES CALLING SEQUENCE: CALL SUBRTT(COMMAND,ITYP,ISW) COMMAND = VALID COMMAND LINE FOR THE SUBTASK. (LAST BYTE OF COMMAND STRING MUST BE NULL) ITYP = ARGUMENT SPECIFYING TYPE OF TASK. 02 COMMAND IS FOR AN MCR TASK (...XYZ). 03 COMMAND IS FOR A SYSTEM LIBRARY TASK ($$$XYZ). 04 COMMAND IS FOR AN INSTALLED TASK. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 TASK SUCCESSFUL (OR STATUS NOT RETURNED) 01 TASK SUCCESSFUL, WARNING DIAGNOSTICS OCCURED 02 TASK SUCCESSFUL, NON-FATAL ERRORS OCCURED 04 TASK FAILED, FATAL ERRORS -02 TASK NOT INSTALLED -63 INVALID ARGUMENT LIST -80 DIRECTIVE PRIVILEGE VIOLATION DESCRIPTION: "SUBRTT" IS A FORTRAN-CALLABLE SUBROUTINE TO SPAWN A REALTIME TASK. THE ROUTINE IS PERFORMS THE SAME OPERATIONS AS THE SYSTEM "SPAWN" DIRECTIVE, BUT IS PROVIDED FOR REALTIME COMPATIBILITY WITH "SUBTSK". THE CALLING ROUTINE WILL WAIT FOR A SUBTASK EVENT, EITHER SUCCESSFULL COMPLETION OF THE TASK OR AN ABORT ON FAILURE. COMPONENT: SUBTSK DATE: 26-APR-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS RESTRICTIONS: USER MUST HAVE TCP PRIVILEGES CALLING SEQUENCE: CALL SUBTSK(COMMAND,[ITYP],[ISW]) COMMAND = VALID COMMAND LINE FOR THE SUBTASK. (LAST BYTE OF COMMAND STRING MUST BE NULL) ITYP = OPTIONAL ARGUMENT SPECIFYING TYPE OF TASK. 01 COMMAND IS FILENAME OF TASK TO BE AUTO-INSTALLED AND REMOVED (DEFAULT). NOTE: FIRST CHARACTER OF COMMAND STRING MUST BE A SPACE FOR ITYP=1. 02 COMMAND IS FOR AN MCR TASK (...XYZ). 03 COMMAND IS FOR A SYSTEM LIBRARY TASK ($$$XYZ). 04 COMMAND IS FOR AN INSTALLED TASK. ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. 00 TASK SUCCESSFUL (OR STATUS NOT RETURNED) 01 TASK SUCCESSFUL, WARNING DIAGNOSTICS OCCURED 02 TASK SUCCESSFUL, NON-FATAL ERRORS OCCURED 04 TASK FAILED, FATAL ERRORS 08 TASK ABORTED ABNORMALLY (EG: SEGMENT FAULT) -01 BAD TCP PARAMETERS -02 INVALID TCP FUNCTION CODE -15 TCP REQUEST TERMINATED -16 TCP PRIVILEGE VIOLATION -60 UNAVAILABLE IAS NODE POOL -63 INVALID ARGUMENT LIST DESCRIPTION: "SUBTSK" IS A FORTRAN-CALLABLE SUBROUTINE TO RUN A TIME-SHARED TASK. THE CALLING ROUTINE WILL WAIT FOR A SUBTASK EVENT, EITHER SUCCESSFULL COMPLETION OF THE TASK OR AN ABORT ON FAILURE. COMPONENT: SWAPB DATE: 05-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL SWAPB(VAR1,[VAR2,[NBYTE]]) VAR1,VAR2 = VARIABLES OR ARRAYS TO BE SWAPPED. NBYTE = NUMBER OF BYTES TO SWAP (DEFAULT=1). = 1 BYTE LOGICAL*1 = 2 LOGICAL INTEGER = 4 INTEGER*4 REAL = 8 REAL*8 COMPLEX DOUBLE PRECISION DESCRIPTION: "SWAPB" PERFORMS A BYTE-FOR-BYTE SWAP OF TWO VARIABLES. THE NUMBER OF BYTES TO BE SWAPPED IS OPTIONALLY SET THROUGH THE "NBYTE" PARAMETER (DEFAULT=1). THE NUMBER OF BYTES TO BE SWAPPED IS NORMALLY DEPENDENT UPON THE INPUT VARIABLE TYPES (SEE TABLE ABOVE). CALLING SWAPB WITH A SINGLE ARGUMENT CAUSES THE HIGH AND LOW ORDER BYTES OF THAT ARGUMENT TO BE SWAPPED (EQUIVALENT TO THE MACRO SWAB INSTRUCTION). EXAMPLES: CALL SWAPB(INT1, INT2, 2) SWAP INTEGER VARIABLES CALL SWAPB(REAL1, REAL2, 4) SWAP REAL VARIABLES CALL SWAPB(ARRAY1,ARRAY2,80) SWAP 80-BYTE ARRAYS CALL SWAPB(INTEGER) SWAP HI/LO BYTES COMPONENT: SWAPW DATE: 08-NOV-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL SWAPW(VAR1,[VAR2,[NWORD]]) VAR1,VAR2 = VARIABLES OR ARRAYS TO BE SWAPPED. NWORD = NUMBER OF WORDS TO SWAP (DEFAULT=1). = 1 LOGICAL INTEGER = 2 INTEGER*4 REAL = 4 REAL*8 COMPLEX DOUBLE PRECISION DESCRIPTION: "SWAPW" PERFORMS A WORD-FOR-WORD SWAP OF TWO VARIABLES. THE NUMBER OF WORDS TO BE SWAPPED IS OPTIONALLY SET THROUGH THE "NWORD" PARAMETER (DEFAULT=1). THE NUMBER OF WORDS TO BE SWAPPED IS NORMALLY DEPENDENT UPON THE INPUT VARIABLE TYPES (SEE TABLE ABOVE). CALLING SWAPW WITH A SINGLE ARGUMENT CAUSES THE HIGH AND LOW ORDER WORDS OF THAT ARGUMENT TO BE SWAPPED. EXAMPLES: CALL SWAPW(INT1, INT2, 1) SWAP INTEGER VARIABLES CALL SWAPW(REAL1, REAL2, 2) SWAP REAL VARIABLES CALL SWAPW(INT*4) SWAP HI/LO WORDS COMPONENT: UPCASE DATE: 30-MAY-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL UPCASE(STRING,[NCHR]) STRING = VARIABLE OR ARRAY CONTAINING STRING TO BE CONVERTED. NCHR = OPTIONAL ARGUMENT SPECIFYING NUMBER OF CHARACTERS TO SCAN DURING CONVERSION. IF THE ARGUMENT IS NOT SUPPLIED THE STRING IS SCANNED UNTIL AN ASCII NULL CHARACTER IS ENCOUNTERED. DESCRIPTION: "UPCASE" SCANS AN ASCII STRING, CONVERTING ALL LOWER CASE CHARACTERS TO UPPER CASE. THE SCAN WILL CONTINUE UNTIL ENCOUNTERING AN ASCII NULL CHARACTER, OR UNTIL THE OPTIONAL CHARACTER COUNT IS EXHAUSTED. COMPONENT: WKDAY DATE: 28-JUN-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: FORTRAN IV-PLUS CALLING SEQUENCE: CALL WKDAY(IDOW,IMO,IDA,IYR) CALL TODAY(IDOW) IDOW = VARIABLE TO RECEIVE AN INTEGER VALUE REPRESENTING THE DAY-OF-WEEK. (1=SUN,2=MON,3=TUE,4=WED,5=THU,6=FRI,7=SAT) IMO,IDA,IYR = DATE FOR WHICH DAY-OF-WEEK IS TO BE FOUND. DESCRIPTION: "WKDAY" RETURNS AN INTEGER VALUE REPRESENTING THE DAY-OF-WEEK FOR A SPECIFIED DATE. IF THE SUPPLIED DATE IS INVALID, A NEGATIVE VALUE IS RETURNED IN IDOW. THE ENTRY POINT "TODAY" RETURNS THE CURRENT DAY-OF-WEEK. COMPONENT: WRTTY DATE: 13-JUL-79 AUTHOR: GR JOHNSON BATTELLE NORTHWEST P O BOX 999 RICHLAND WA 99352 SOURCE: MACRO-11 CALLER: FORTRAN IV-PLUS CALLING SEQUENCE: CALL WRTTY(LUN,STRING,[ILEN],[WAL],[ISW]) LUN = INTEGER CONTAINING A LOGICAL UNIT NUMBER. STRING = VARIABLE, ARRAY OR LITERAL CONTAINING THE BYTE(S) TO BE OUTPUT. ILEN = OPTIONAL INTEGER ARGUMENT SPECIFYING THE NUMBER OF BYTES TO OUTPUT. IF THE ARGUMENT IS NOT SUPPLIED THE STRING MUST BE TERMINATED BY A ZERO BYTE (ASCII NULL CHARACTER). WAL = OPTIONAL LITERAL 'WRITEALL' INDICATING THAT ALL EIGHT BITS OF THE BYTE ARE TO BE OUTPUT WITHOUT INTERFERENCE BY THE TERMINAL DEVICE HANDLER. ISW = VARIABLE TO RECIEVE THE INTEGER STATUS WORD. 00 = SUCCESS -NN = FCS ERROR CODE DESCRIPTION: "WRTTY" OUTPUTS AN ARRAY OF BYTES USING THE QIO IO.WLB (WRITE LOGICAL BLOCK) FUNCTION. THE ROUTINE MAY BE USED WHENEVER IT IS DE- SIRABLE TO OUTPUT THE ENTIRE EIGHT BITS OF A BYTE, ('WRITEALL' OPTION), WITHOUT INTERFERENCE BY THE TERMINAL DEVICE HANDLER, SUCH AS SENDING PLOT COORDINATES TO A GRAPHICS TERMINAL. CARE SHOULD BE EXERCISED WHEN OUTPUTING TO TERMINAL DEVICES USING THE 'WRITEALL' OPTION. TERMINAL OUTPUT VIA WRITEALL DOES NOT UPDATE CURSOR POSITION REGISTERS IN THE TERMINAL HANDLER. AS SUCH, THE TERMINAL HANDLER LOSES TRACK OF HORIZONTAL AND VERTICAL CURSOR POSITIONING. WHEN ISSUED WITHOUT THE 'WRITEALL' OPTION, THE FIRST CHARACTER OF "STRING" IS INTERPRETED AS A CARRIAGE CONTROL CHARACTER, (REFER TO TABLE 6-3 OF THE "PDP-11 FORTRAN REFERENCE MANUAL"). WHEN THE 'WRITEALL' OPTION IS REQUESTED, OUTPUT IS INITIATED FROM THE CURRENT CURSOR POSITION. EXAMPLES: CALL WRTTY(5,' MESSAGE') CALL WRTTY(5,ARRAY,128,'WRITEALL')