.ps 60,64
.t3B35D
3B35D#####################################################Page#1
##########################################################Nov 78
.st                                                           Nov 78
.nap
.s10
.c;THE IMP LIBRARY MANUAL
.s4
.FLAG CAP
.FLAG CAP;.LC
.F.S
 ^THIS DOCUMENT DESCRIBES FULLY THE <IMP ^SYSTEM ^LIBRARY FACILITIES.
^IT IS PART OF A SET OF TWO DOCUMENTS WHICH DESCRIBE THE <IMP ^LANGUAGE ON
THE ^^DEC\\SYSTEM-10/20 COMPUTERS.
^THE OTHER DOCUMENT IS:-
.NAP.NF.S
^^3B35C####IMP ON THE DEC\\SYSTEM-10/20
.S
 ^THE ^LANGUAGE DEFINITION CONTAINED ALSO SEPARATELY IN:-
.S
^^3B35B####THE IMP-77 LANGUAGE REFERENCE MANUAL.
.S 2
^OTHER MANUALS REFERRED TO IN THIS DOCUMENT ARE:-
.S
   ^D^E^CSYSTEM-10 ^OPERATING ^SYSTEM ^COMMANDS ^MANUAL.
   ^D^E^CSYSTEM-10 ^MONITOR ^CALLS ^MANUAL. 
   ^D^E^CSYSTEM-10 ^HARDWARE ^REFERENCE ^MANUAL. 
.nf
.s2
			^^CONTENTS\\				   page	
.s2
1##^^LIBRARY ENTRIES\\  .. .. .. ..  .. .. .. .. .. .. .. .. .. 2
.s
2##^^DATE-TIME FORMATS\\ .. .. .. .. .. .. .. .. .. .. .. .. .. 107
.s
3##^^DEFINITION OF THE FILE SPECIFICATION RECORD\\  .. .. .. .. 108
.s
4##^^SYSTEM LIBRARY PROCEDURES SUMMARY\\   .. .. .. .. .. .. .. 109
.s
^^INDEX OF LIBRARY PROCEDURES\\   .. .. .. .. .. .. .. .. .. .. 113
.page
.f
.LM 8;.TS 8 16


.S 4;.TEST PAGE 20;.NAP;.F
.i-8
1. ^^LIBRARY ENTRIES\\
.S2
.c
^^ACCPER\\
.INDEX ^^ACCPER\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION RETURNS THE VALUE OF THE ACCOUNTING
PERIOD INTO WHICH THE GIVEN TIME FALLS.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^ACCPER\\(%<INTEGER UDT)
.P
<USE:	PERIOD=^^ACCPER\\(UDT)
.LM 16;.F;.S 1

.I-8
UDT	IS AN INTEGER EXPRESSION BEING THE DATE-TIME IN QUESTION, GIVEN
IN THE <DEC UNIVERSAL DATE-TIME FORMAT.
.LM 8;.S 1
THE ACCOUNTING PERIOD OF THE GIVEN DATE IS RETURNED AS A FOUR
DIGIT INTEGER OF THE FORM <YYMM, VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20.;.NAP;.F;.C
^^ADDR\\
.INDEX ^^ADDR\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE ABSOLUTE ADDRESS OF
A %<NAME VARIABLE.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^ADDR\\(X)
.LM 16;.F;.S 1

.I-8
X	IS THE NAME OF A VARIABLE WHOSE ADDRESS IS REQUIRED.
.LM 8;.S 1
^THE ABSOLUTE ADDRESS OF X IS RETURNED VIA %<RESULT
.UC.F.P
<ASSOCIATED <PROCEDURES: BYTE INTEGER, SHORT INTEGER, INTEGER,
REAL, STRING, RECORD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^ASCTOSTR\\
.INDEX ^^ASCTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION CONVERTS AN <ASCIZ STRING
TO AN <IMP STRING.
.NF;.P
<SPEC:	%<EXTERNALSTRING(255)%FN ^^ASCTOSTR\\(%<<NAME ADR)
.P
<USE:	S=^^ASCTOSTR\\(ADR)
.LM 16;.F;.S 1

.I-8
ADR	IS THE NAME OF A VARIABLE CONTAINING THE START OF THE <ASCIZ STRING
.LM 8;.S 1
AN <ASCIZ TYPE STRING (7-BIT BYTES, TERMINATED BY A ZERO BYTE) IS
CONVERTED TO AN <IMP TYPE STRING AND RETURNED VIA %<RESULT.
.F.P.UC
<ASSOCIATED <PROCEDURES: STRTOASC
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^BINTOSTR\\
.INDEX ^^BINTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION GIVES THE VALUE OF THE GIVEN NUMBER AS A STRING OF BINARY
DIGITS.
.NF;.P
<SPEC:	%<EXTERNALSTRING(36)%FN ^^BINTOSTR\\(%<INTEGER NUM)
.P
<USE:	S=^^BINTOSTR\\(NUM)
.LM 16;.F;.S 1

.I-8
NUM	IS AN INTEGER EXPRESSION WHICH IS TO BE CONVERTED TO BINARY.
.LM 8;.S 1
THE GIVEN INTEGER NUMBER IS RETURNED AS A STRING OF 36 BINARY
DIGITS WITH LEADING ZEROS.
.UC.F.P
<ASSOCIATED <PROCEDURES: OCTTOSTR, HEXTOSTR, INTTOSTR
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^BLT\\
.INDEX ^^BLT\\
.P-8
<DEFINITION: ^THIS ROUTINE COPIES DATA FROM ONE AREA OF STORE TO ANOTHER
EN BLOC.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^BLT\\(%<<NAME FROM,TO, %<INTEGER LEN)
.P
<CALL:	^^BLT\\(FROM,TO,LEN)
.LM 16;.F;.S 1

.I-8
FROM	IS THE NAME OF THE VARIABLE FROM WHICH DATA IS TO START BEING COPIED.
.I-8
TO	IS THE NAME OF THE VARIABLE TO WHICH DATA IS TO START BEING COPIED.
.I-8
LEN	IS AN INTEGER EXPRESSION BEING THE AMOUNT OF DATA TO BE COPIED.
.LM 8;.S 1
A BLOCK OF DATA OF LENGTH LEN, STARTING AT 'FROM',
IS COPIED TO ANOTHER AREA OF STORE STARTING AT 'TO'.
.UC.F.P
<ASSOCIATED <PROCEDURES: ZERO
.F.LC.P
<ERROR <CONDITIONS: FATAL ILLEGAL MEMORY REFERENCES MAY OCCUR IF ATTEMPTS ARE MADE
TO WRITE TO ADDRESSES OUTWITH THE CURRENT ADDRESSING SPACE.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^BYTE INTEGER\\
.INDEX ^^BYTE INTEGER\\
.P-8
<DEFINITION: ^THIS MAP ENABLES THE USER TO ACCESS DIRECTLY A PARTICULAR
BYTE WHOSE ADDRESS IS SPECIFIED.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^BYTE INTEGER\\(ADR)
.LM 16;.F;.S 1

.I-8
ADR	IS AN INTEGER EXPRESSION GIVING THE ADDRESS OF THE
REQUIRED LOCATION.
.LM 8;.S 1
^THIS MAP ALLOWS THE USER TO READ OR WRITE DIRECTLY TO A LOCATION
IN STORE BY SPECIFYING THE ABSOLUTE ADDRESS IN 'ADR'.
.UC.F.P
<ASSOCIATED <PROCEDURES: SHORT INTEGER, INTEGER, REAL,
STRING, RECORD
.F.LC.P
<ERROR <CONDITIONS: ^IF THE VALUE OF 'ADR' LIES OUTSIDE THE CURRENT ADDRESSING SPACE THE
FOLLOWING FATAL ERROR WILL OCCUR:-
.NF.S
?<IMP: ^ILL ^MEM ^REF AT USER PC  'ADDR'



.S 4;.TEST PAGE 20;.NAP;.F;.C
^^CALL (0-9)\\
.INDEX ^^CALL (0-9)\\
.P-8
<DEFINITION: ^THESE ROUTINES CALL THE <FORTRAN ROUTINE NAMED AS THE FIRST PARAMETER
WITH THE NECESSARY ARGUMENTS GIVEN AS THE SUCCEEDING PARAMETERS.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^CALL (0-9)\\(%<<NAME RTN, %<<NAME ARG1, .. %<<NAME ARG9)
.P
<CALL:	^^CALL (0-9)\\(RTN,ARG1, .. ARG9)
.LM 16;.F;.S 1

.I-8
RTN	IS THE NAME OF A EXTERNAL <FORTRAN ROUTINE.
^FOR EASE OF HANDLING, IT IS REQUIRED THAT THE SPEC GIVEN
IN THE <IMP PROGRAM IS THAT OF %<EXTERNALINTEGERSPEC.
.I-8
ARG1	IS THE NAME OF THE FIRST ARGUMENT IF ONE IS NEEDED
.I-8
AND SO ON UP TO
.I-8
ARG9	IS THE NAME OF THE NINTH ARGUMENT IF ONE IS NEEDED
.LM 8;.S 1
THESE ARE A SET OF <IMP ROUTINES CALLED <CALL0, <CALL1, ETC.
UP TO <CALL9. ^THE NUMBER REFERS TO THE NUMBER OF ARGUMENTS
WHICH THE <FORTRAN ROUTINE REQUIRES. ^SEE THE FOLLOWING EXAMPLE:-
.NF.UC.S.LIT
%BEGIN
%EXTERNALINTEGERSPEC FNOARG
      !A FORTRAN ROUTINE WITH NO ARGUMENTS
%EXTERNALINTEGERSPEC F3ARGS
      !A FORTRAN ROUTINE WITH THREE ARGUMENTS

%EXTERNALROUTINESPEC CALL0(%NAME RT)
%EXTERNALROUTINESPEC CALL3(%NAME RT, %NAME A,B,C)

%INTEGER ARG1,ARG2,ARG3

ARG1=1; ARG2=2; ARG3=3
CALL0(FNOARG);                 !CALL FORTRAN
CALL3(F3ARGS,ARG1,ARG2,ARG3);  !CALL FORTRAN

%ENDOFPROGRAM
.END LITERAL
.LC.F.S
^THE %<INCLUDE FILE "<IMP:FORTRA.INC" CONTAINS ALL THE SPECS FOR THE <CALL ROUTINES.
.UC.F.P
<ASSOCIATED <PROCEDURES: ICALL (0-9), RCALL (0-9)
.LC.P
<ERROR <CONDITIONS: ^DEPENDING ON THE <FORTRAN ROUTINE CALLED.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^CALLI1\\
.INDEX ^^CALLI1\\
.P-8
<DEFINITION: ^THIS ROUTINE PERFORMS THE ^^DEC\\SYSTEM-10 <CALLI ^MONITOR ^CALL FOR THE SIMPLE
CASE WHERE THE <CALLI HAS ONLY ONE RETURN ADDRESS.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^CALLI1\\(%<INTEGER NUM, %<INTEGER<NAME AC)
.P
<CALL:	^^CALLI1\\(NUM,AC)
.LM 16;.F;.S 1

.I-8
NUM	IS AN INTEGER EXPRESSION BEING THE <CALLI NUMBER.
.I-8
AC	IS THE NAME OF AN INTEGER VARIABLE CONTAINING ANY REQUIRED ARGUMENT
FOR THE ^MONITOR ^CALL AND IN WHICH ANY RESULT WILL BE RETURNED.
.LM 8;.S 1
^THE GIVEN <CALLI ^MONITOR ^CALL IS PERFORMED WITH THE LOCATION
REQUIRED FOR EITHER THE ARGUMENT, RESULT OR BOTH.
^THE FORM OF ARGUMENT AND RESULT VARIES FROM
ONE <CALLI TO ANOTHER, AND THE USER MUST READ THE ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL, FOR THE APPROPRIATE VALUES. ^IT SHOULD BE NOTED
THAT THIS ROUTINE SHOULD ONLY BE USED FOR
THOSE <CALLIS WHICH HAVE ONLY ONE <RETURN ADDRESS.
.S.NF
E.G.   <PJOB  (<CALLI 30)
.UC.F.P
<ASSOCIATED <PROCEDURES: CALLI2, CALLI3
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^CALLI2\\
.INDEX ^^CALLI2\\
.P-8
<DEFINITION: ^THIS PREDICATE PERFORMS THE ^^DEC\\SYSTEM-10 <CALLI ^MONITOR ^CALL FOR THE USUAL
CASE WHERE THE <CALLI HAS AN NORMAL SKIP RETURN AND A NON-SKIP ERROR RETURN.
.NF;.P
<SPEC:	%<EXTERNALPREDICATE ^^CALLI2\\(%<INTEGER NUM, %<INTEGER<NAME AC)
.P
<USE:	%<IF ^^CALLI2\\(NUM,AC) %<THEN ...
.LM 16;.F;.S 1

.I-8
NUM	IS AN INTEGER EXPRESSION BEING THE <CALLI NUMBER.
.I-8
AC	IS THE NAME OF AN INTEGER VARIABLE CONTAINING ANY REQUIRED ARGUMENT
FOR THE ^MONITOR ^CALL AND IN WHICH ANY RESULT WILL BE RETURNED.
.LM 8;.S 1
^THE GIVEN <CALLI ^MONITOR ^CALL IS PERFORMED WITH THE LOCATION
REQUIRED FOR EITHER THE ARGUMENT, RESULT OR BOTH.
^THE PREDICATE RETURNS A VALUE %<TRUE WHEN THE NORMAL SKIP RETURN
IS TAKEN FROM THE ^MONITOR ^CALL AND A VALUE %<FALSE OTHERWISE.
^THE FORM OF ARGUMENT AND RESULT VARIES FROM ONE <CALLI TO ANOTHER,
AND THE USER MUST READ THE ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL, FOR THE APPROPRIATE VALUES.
 ^IT SHOULD BE NOTED THAT THIS PREDICATE SHOULD ONLY BE USED FOR
THOSE <CALLIS WHICH HAVE THE NORMAL SKIP RETURN.
.UC.F.P
<ASSOCIATED <PROCEDURES: CALLI1, CALLI3
.F.LC.P
<ERROR <CONDITIONS: ^WHEN THE VALUE %<FALSE IS RETURNED, AN ERROR CODE
MAY BE RETURNED IN THE INTEGER 'AC'.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^CALLI3\\
.INDEX ^^CALLI3\\
.P-8
<DEFINITION: ^THIS PREDICATE PERFORMS THE ^^DEC\\SYSTEM-10 <CALLI ^MONITOR ^CALL FOR THE
CASE WHERE THE <CALLI HAS AN NORMAL NON-SKIP RETURN AND A SKIP ERROR RETURN.
.NF;.P
<SPEC:	%<EXTERNALPREDICATE ^^CALLI3\\(%<INTEGER NUM, %<INTEGER<NAME AC)
.P
<USE:	%<IF ^^CALLI3\\(NUM,AC) %<THEN ...
.LM 16;.F;.S 1

.I-8
NUM	IS AN INTEGER EXPRESSION BEING THE <CALLI NUMBER.
.I-8
AC	IS THE NAME OF AN INTEGER VARIABLE CONTAINING ANY REQUIRED ARGUMENT
FOR THE ^MONITOR ^CALL AND IN WHICH ANY RESULT WILL BE RETURNED.
.LM 8;.S 1
^THE GIVEN <CALLI ^MONITOR ^CALL IS PERFORMED WITH THE LOCATION
REQUIRED FOR EITHER THE ARGUMENT, RESULT OR BOTH.
^THE PREDICATE RETURNS A VALUE %<TRUE WHEN THE NORMAL SKIP RETURN
IS TAKEN FROM THE ^MONITOR ^CALL AND A VALUE %<FALSE OTHERWISE.
^THE FORM OF ARGUMENT AND RESULT VARIES FROM ONE <CALLI TO ANOTHER,
AND THE USER MUST READ THE ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL, FOR THE APPROPRIATE VALUES.
 ^IT SHOULD BE NOTED THAT THIS PREDICATE SHOULD ONLY BE USED FOR
THOSE <CALLIS WHICH HAVE THE NORMAL SKIP RETURN.
.UC.F.P
<ASSOCIATED <PROCEDURES: CALLI1, CALLI2
.F.LC.P
<ERROR <CONDITIONS: ^WHEN THE VALUE %<FALSE IS RETURNED, AN ERROR CODE
MAY BE RETURNED IN THE INTEGER 'AC'.

.S 4;.TEST PAGE 20.;.NAP;.F;.C
^^CHARNO\\
.INDEX ^^CHARNO\\
.P-8
<DEFINITION: ^THIS BYTEINTEGER FUNCTION GIVES THE VALUE OF THE
SPECIFIED SEVEN-BIT BYTE OF A GIVEN STRING.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	CH=^^CHARNO\\(S,N)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME (OF TYPE %<STRING) OF THE GIVEN STRING.
.I-8
N	IS AN INTEGER EXPRESSION INDICATING WHICH CHARACTER OF THE
STRING IS TO BE RETURNED.
.LM 8;.S 1
^THE VALUE OF THE N'TH CHARACTER OF STRING S IS RETURNED AS A
SEVEN-BIT BYTE VIA %<RESULT.
.S
^IF N=0 THE STRING LENGTH IS RETURNED AS THE RESULT.
.B
^IF N_<0 OR N_>^^LENGTH\\(S) THEN ZERO IS RETURNED AS THE RESULT.
.UC.F.P
ASSOCIATED <PROCEDURES: LENGTH, SUB STRING, TO STRING
.F.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20.;.NAP;.F;.C
^^CHECKPOINT\\
.INDEX ^^CHECKPOINT\\
.P-8
<DEFINITION: ^THIS ROUTINE MAKES A PERMANENT COPY ON THE EXTERNAL MEDIUM
OF ALL THE OUTPUT DONE SO FAR ON THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^CHECKPOINT\\
.P
<CALL:	^^CHECKPOINT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE CURRENT OUTPUT STREAM IS CLOSED THEN REOPENED AND ALL POINTERS
RESET BACK TO THEIR PREVIOUS VALUES, SO THAT, TO THE USER THE STREAM IS
UNAFFECTED.
.S
^FOR NON-DISK DEVICES, NO ACTION IS TAKEN.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE OUTPUT, CLOSE OUTPUT, RESET OUTPUT
.LC.P
<ERROR <CONDITIONS: ^FOR A HARDWARE TRANSMISSION ERROR THE FOLLOWING EVENT OCCURS:-
.NF.S
%<SIGNAL 10, 14, N, "^CHECKPOINT FAILURE"
.S.F
^WHERE N IS AN ERROR CODE AS LISTED IN APPENDIX ^E OF THE ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL.

.S 4;.TEST PAGE 20.;.NAP;.F;.C
^^CLOSE\\
.INDEX ^^CLOSE\\
.P-8
<DEFINITION: ^THIS ROUTINE CLOSES THE GIVEN PHYSICAL CHANNEL NUMBER.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^CLOSE\\(%<INTEGER CHAN)
.P
<CALL:	^^CLOSE\\(CHAN)
.LM 16;.F;.S 1

.I-8
CHAN	IS AN INTEGER EXPRESSION GIVING THE PHYSICAL CHANNEL NUMBER OF
A CURRENTLY OPEN DEVICE.
.LM 8;.S 1
^THE DEVICE ASSOCIATED WITH THE GIVEN PHYSICAL CHANNEL NUMBER IS CLOSED
BUT NOT RELEASED.
 ^THE PHYSICAL CHANNEL NUMBER FOR A STREAM OR <DA/SQ CHANNEL IS FOUND
IN THE <SCB (^STREAM ^CONTROL ^BLOCK) FOR THAT STREAM OR CHANNEL.
(^SEE %<INCLUDE FILE <"IMP:IOLIB.INC" FOR A DESCRIPTION OF THE <SCB)
.UC.F.P
<ASSOCIATED <PROCEDURES: RELEASE, IOUUO, FILOP, TAPOP
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20.;.NAP;.F;.C
^^CLOSE DA\\
.INDEX ^^CLOSE DA\\
.P-8
<DEFINITION: ^THIS ROUTINE CLOSES THE DIRECT ACCESS FILE ON THE CHANNEL
SPECIFIED.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^CLOSE DA\\(%<INTEGER N)
.P
<CALL:	^^CLOSE DA\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION LYING IN THE RANGE 1 TO 15 WHICH
SPECIFIES THE CHANNEL NUMBER ASSOCIATED WITH A CURRENTLY OPEN DEVICE OR
FILE.
.LM 8;.S 1
^THE FILE OR DEVICE ASSOCIATED WITH THE GIVEN CHANNEL NUMBER IS CLOSED
AND CANNOT BE USED AGAIN WITHOUT RE-OPENING.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)OPEN DA, READ DA, WRITE DA
.LC.P
<ERROR <CONDITIONS: ^UNLESS 1 _<= N _<= 15 THEN THE FOLLOWING EVENT OCCURS:-
.NF.S
%<SIGNAL  10, 28, N, "^CLOSING ILLEGAL <DA/SQ CHANNEL"
.F.S
^OR IF THE CHANNEL HAS NOT BEEN OPENED PREVIOUSLY:-
.NF.S
%<SIGNAL 10, 28, N "^CLOSING <DA/SQ CHANNEL BEFORE ^^OPEN\\ING IT"
.F.S
^IF THE CHANNEL IS NOT OF THE APPROPRIATE TYPE (I.E. AN <SQ CHANNEL)
THE FOLLOWING EVENT IS SIGNALED.
.NF.S
%<SIGNAL 10, 29, N, "^CLOSING <DA/SQ CHANNEL WITH THE WRONG ROUTINE"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^CLOSE INPUT\\
.INDEX ^^CLOSE INPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE CLOSES THE CURRENTLY SELECTED INPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^CLOSE INPUT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE CURRENTLY SELECTED INPUT STREAM IS CLOSED AND RESET TO BE A NULL
STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE INPUT, SDEF INPUT, SELECT INPUT
.LC.P
<ERROR <CONDITIONS: ^NONE


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^CLOSE OUTPUT\\
.INDEX ^^CLOSE OUTPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE CLOSES THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^CLOSE OUTPUT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE CURRENTLY SELECTED OUTPUT STREAM IS CLOSED AND RESET TO BE A NULL
STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE OUTPUT, SDEF OUTPUT, SELECT OUTPUT
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20.;.NAP;.F;.C
^^CLOSE SQ\\
.INDEX ^^CLOSE SQ\\
.P-8
<DEFINITION: ^THIS ROUTINE CLOSES THE SEQUENTIAL FILE ON THE CHANNEL
SPECIFIED.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^CLOSE SQ\\(%<INTEGER N)
.P
<CALL:	^^CLOSE SQ\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION LYING IN THE RANGE 1 TO 15 WHICH
SPECIFIES THE CHANNEL NUMBER ASSOCIATED WITH A CURRENTLY OPEN DEVICE OR FILE.
.LM 8;.S 1
^THE FILE OR DEVICE ASSOCIATED WITH THE GIVEN CHANNEL NUMBER IS CLOSED
AND CANNOT BE USED AGAIN WITHOUT RE-OPENING.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)OPEN SQ, READ SQ, WRITE SQ
.LC.P
<ERROR <CONDITIONS: ^UNLESS 1 _<= N _<= 15 THEN THE FOLLOWING EVENT OCCURS:-
.NF.S
%<SIGNAL  10, 28, N, "^CLOSING ILLEGAL <DA/SQ CHANNEL"
.F.S
^OR IF THE CHANNEL HAS NOT BEEN OPENED PREVIOUSLY:-
.NF.S
%<SIGNAL 10, 28, N "^CLOSING <DA/SQ CHANNEL BEFORE ^^OPEN\\ING IT"
.F.S
^IF THE CHANNEL IS NOT OF THE APPROPRIATE TYPE (I.E. AN <DA CHANNEL)
THE FOLLOWING EVENT IS SIGNALED.
.NF.S
%<SIGNAL 10, 29, N, "^CLOSING <DA/SQ CHANNEL WITH THE WRONG ROUTINE"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^COPY\\
.INDEX ^^COPY\\
.P-8
<DEFINITION: ^THIS ROUTINE COPIES ONE FILE INTO ANOTHER.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^COPY\\(%<STRING(255) ORIG, NEW)
.P
<CALL:	^^COPY\\(ORIG, NEW)
.LM 16;.F;.S 1

.I-8
ORIG	IS A STRING CONTAINING THE ORIGINAL FILE SPECIFICATION
.I-8
NEW	IS A STRING CONTAINING THE FILE SPECIFICATION FOR THE COPIED FILE.
.LM 8;.S 1
THE FILE SPECIFIED IN 'ORIG' IS COPIED TO ANOTHER FILE WHOSE
NAME IS SPECIFIED IN 'NEW'.
.UC.F.P
<ASSOCIATED <PROCEDURES: XCOPY, (X)RENAME, (X)DELETE, (X)ISFILE
.LC.P
<ERROR <CONDITIONS: SEE <OPEN <DA AND ALSO, WHEN THE <I/O CHANNEL CAPACITY IS FULL:-
.S
%<SIGNAL 2, 5, 0, "^NO FREE CHANNELS FOR ^^COPY\\ING 'FILESPEC'"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^CPUTIME\\
.INDEX ^^CPUTIME\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE NUMBER OF MILLISECONDS
OF PROCESSOR TIME THAT THE CURRENT JOB HAS USED SINCE IT LOGGED IN.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^CPUTIME\\
.P
<USE:	CPU=^^CPUTIME\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE AMOUNT OF <CPU TIME IN MILLISECONDS, SINCE THE CURRENT
JOB LOGGED IN, IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: JOBNUM, PPN, TIME
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^CUSP FILES\\
.INDEX ^^CUSP FILES\\
.P-8
<DEFINITION: ^THIS ROUTINE WILL READ A <CUSP STYLE COMMAND STRING FROM
THE CURRENT INPUT STREAM AND RETURN THE DECODED FILE-SPECIFICATIONS
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^CUSP FILES\\(%<RECORD(FILESPEC)%<NAME OUT,AUX,IN,RUN, %<INTEGER N, %<INTEGER<NAME FOUND)
.P
<CALL:	^^CUSP FILES\\(OUT,AUX,IN,RUN,N,FOUND)
.LM 16;.F;.S 1

.I-8
OUT	IS THE NAME OF A RECORD CONTAINING AN OUTPUT FILE SPECIFICATION
IF ONE IS GIVEN
.I-8
AUX	IS THE NAME OF A RECORD CONTAINING AN AUXILLIARY OUTPUT FILE
SPECIFICATION IF ONE IS GIVEN
.I-8
IN	IS THE NAME OF A RECORD CONTAINING AN INPUT FILE
SPECIFICATION IF ONE IS GIVEN
.I-8
RUN	IS THE NAME OF A RECORD CONTAINING A FILE
SPECIFICATION FOR A FILE TO BE <RUN USING THE <RUN COMMAND, IF ONE IS GIVEN
.I-8
N	IS AN INTEGER EXPRESSION USED FOR AN INDIRECT COMMAND FILE STREAM, IF ONE IS NEEDED
.I-8
FOUND	IS THE NAME OF AN INTEGER VARIABLE INDICATING WHETHER OR NOT A COMMAND STRING WAS FOUND
.B
FOUND = -1 INDICATES THAT A <RUN FILE SPECIFICATION WAS PRESENT.
.B
FOUND _> 0  INDICATES THAT SOME FILE SPECIFICATIONS WERE FOUND.
.LM 8;.S 1
^IF THE COMMAND INPUT STREAM IS THE USERS CONSOLE, A PROMPT '*' IS
OUTPUT.
.S
^THE FOLLOWING FORMS OF COMMAND LINE ARE PARSED:-
.NF.S
<OUTFILE, <AUXFILE = <INFILE (,<INFILE1 . . . )
<OUTFILE = <INFILE (,<INFILE1 . . . )
<INFILE (,<INFILE1 . . . )
@<CMDFILE
<CMDFILE@
<RUNFILE!
.F.S
^THEY ARE PARSED INTO THE CORRESPONDING (<FILESPEC) RECORDS, THE USER
BEING RESPONSIBLE FOR SUBSEQUENT APPLICATION OF ANY NECESSARY DEFAULTS.
^THE COMMAND STREAM PARAMETER 'N' IS USED WHEN AN INDIRECT COMMAND FILE IS GIVEN ON THE
INPUT STREAM.  ^ALL ERROR REPORTS ARE OUTPUT ON THE USERS CONSOLE
AND IF THE CURRENT INPUT STREAM IS THE USERS CONSOLE, A PROMPT
IS OUTPUT TO INDICATE THAT ANOTHER COMMAND LINE IS REQUIRED.
^THE EXISTENCE OF FURTHER INPUT FILE
SPECIFICATIONS WHICH CAN BE READ USING THE <EXTERNAL ROUTINE
<READFS, IS TESTED THUS:-
.NF.S
E.G.
<%IF <NEXTSYMBOL = ',' %<THEN <SKIPSYMBOL <%AND <READFS(<FSRECORD)
.F.S
^SEE THE DESCRIPTION OF <READFS ROUTINE.
.UC.F.P
<ASSOCIATED <PROCEDURES: SET STREAMS, READ FS, DEFAULT, WRITE FS
.LC.P
<ERROR <CONDITIONS: ^SYNTAX ERRORS ARE REPORTED AS FOLLOWS AND THE REST OF THE LINE IS TYPED
OUT AND IGNORED.
.NF.S
^COMMAND ERROR: "REST OF LINE"
.F.S
^IF THE  INPUT COMMAND STREAM IS THE USERS CONSOLE, THE USER IS REPROMPTED,
OTHERWISE THE FOLLOWING ERROR IS CAUSED:-
.S.NF
%<SIGNAL 10, 9, 0, "^BAD FILE SPECIFICATION 'FILESPEC'"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DATE\\
.INDEX ^^DATE\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS TODAYS DATE AS A NINE CHARACTER STRING.
.NF;.P
<SPEC:	%<EXTERNALSTRING(9)%FN ^^DATE\\
.P
<USE:	S=^^DATE\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
TODAYS DATE IS RETURNED AS A NINE CHARACTER STRING OF THE FORM
<DD-MON-YY VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DATE TIME\\
.INDEX ^^DATE TIME\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS THE CURRENT DATE AND TIME AN EIGHTEEN CHARACTER
STRING VIA %<RESULT.
.NF;.P
<SPEC:	%<EXTERNALSTRING(18)%FN ^^DATE TIME\\
.P
<USE:	S=^^DATE TIME\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE CURRENT DATE AND TIME ARE RETURNED AS AN EIGHTEEN CHARACTER
STRING OF THE FORM <HH:MM:SS#<DD-MON-YY VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DATETOSTR\\
.INDEX ^^DATETOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS
THE GIVEN DATE AS A NINE CHARACTER STRING.
.NF;.P
<SPEC:	%<EXTERNALSTRING(9)%FN ^^DATETOSTR\\(%<INTEGER DATE)
.P
<USE:	S=^^DATETOSTR\\(DATE)
.LM 16;.F;.S 1

.I-8
DATE	IS AN INTEGER EXPRESSION BEING A DATE IN <DEC INTERNAL FORMAT
.LM 8;.S 1
THE GIVEN DATE IS RETURNED AS A NINE CHARACTER STRING OF THE
FORM <DD-MON-YY VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DAY\\
.INDEX ^^DAY\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION GIVES THE VALUE OF THE DAY
OF THE WEEK AS A STRING OF UP TO NINE CHARACTERS.
.NF;.P
<SPEC:	%<EXTERNALSTRING(9)%FN ^^DAY\\
.P
<USE:	S=^^DAY\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE UN-ABREVIATED DAY OF THE WEEK IS RETURNED WITH NO FILLING CHARACTERS
VIA %<RESULT.
.F.P.UC
<ASSOCIATED <PROCEDURES: DAYTOSTR
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;&NAP;.F;.C
^^DAYTOSTR\\
.INDEX ^^DAYTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION GIVES THE VALUE OF THE DAY OF THE WEEK
AS A STRING OF UP TO NINE CHARACTERS, FOR THE GIVEN DATE.
.NF;.P
<SPEC:	%<EXTERNALSTRING(9)%FN ^^DAYTOSTR\\(%<INTEGER UDT)
.P
<USE:	S=^^DAYTOSTR\\(UDT)
.LM 16;.F;.S 1

.I-8
UDT	IS AN INTEGER EXPRESSION BEING A DATE IN UNIVERSAL DATE-TIME FORMAT
.LM 8;.S 1
THE DAY OF THE WEEK WHICH CORRESPONDS TO THE GIVEN DATE IS RETURNED
AS AN UN-ABREVIATED, NON-FILLED STRING OF UP TO 9 CHARACTERS, VIA %<RESULT
.F.P.UC
<ASSOCIATED <PROCEDURES: DAY, UDTTOSTR, TOUDT
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DDT\\
.INDEX ^^DDT\\
.P-8
<DEFINITION: ^THIS ROUTINE WILL ENTER <DDT FROM A RUNNING PROGRAM, WHEN <DDT IS LOADED.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^DDT\\(%<<NAME X)
.P
<CALL:	^^DDT\\(X)
.LM 16;.F;.S 1

.I-8
X	IS THE NAME OF A VARIABLE WHICH CAN BE USED FOR IDENTIFICATION OF THE
PARTICULAR CALL OF THE ROUTINE.
.LM 8;.S 1
^IF <DDT IS LOADED THE CALL OF THIS ROUTINE CAUSES <DDT TO BE ENTERED.
^THUS IT ACTS AS A BREAKPOINT FROM A MAIN PROGRAM. ^THE REGISTERS ARE LEFT UNALTERED
AND THE ADDRESS OF THE VARIABLE POINTED TO BY THE <%NAME
PARAMETERS IS KEPT IN THE INTEGER <DDARG.
.B
^THE PROGRAM CAN BE CONTINUED FROM <DDT BY TYPEING:-
.NF.S
<DDCONT$G
.S.F
WHICH EFFECTIVELY RETURNS FROM THE <DDT ROUTINE.
.P
<ERROR <CONDITIONS: ^WHEN <DDT IS NOT LOADED THE FOLLOWING MESSAGE IS OUTPUT:-
.NF.S
<DDT NOT LOADED - CONTINUING
.F.S
AND THE PROGRAM CONTINUES EXECUTION.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DECODE\\
.INDEX ^^DECODE\\
.P-8
<DEFINITION: ^THIS ROUTINE OUTPUTS A GIVEN ADDRESS AND MACHINE INSTRUCTION.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^DECODE\\(%<INTEGER INSTR, ADR)
.P
<CALL:	^^DECODE\\(INSTR,ADR)
.LM 16;.F;.S 1

.I-8
INSTR	IS AN INTEGER EXPRESSION BEING A MACHINE INSTRUCTION
.I-8
ADR	IS AN INTEGER EXPRESSION WHICH IS AN ABSOLUTE ADDRESS
.LM 8;.S 1
THE GIVEN ADDRESS IS OUTPUT TO THE CURRENTLY SELECTED OUTPUT STREAM
FOLLOWED BY THE INSTRUCTION ARGUMENT WHICH IS ALSO DECODED INTO ITS VARIOUS
FIELDS AND OPCODE MNEMONICS. ^THE LAYOUT IS SHOWN BELOW AND ALL NUMBERS ARE IN OCTAL.
.NF.S
<DECODE(INTEGER(8__400010),ADDR(8__400010))
.F.S
PRODUCES THE FIRST INSTRUCTION OF A PROGRAM'S HIGH SEGMENT, THUS:-
.NF.S
400010   254000 400224   <JRST    0, 400224
.F.P
<ERROR <CONDITIONS: SEE <PRINTSYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DEFAULT\\
.INDEX ^^DEFAULT\\
.P-8
<DEFINITION: ^THIS ROUTINE ALLOWS DEFAULT SETTINGS TO BE APPLIED TO A
FILE SPECIFICATION RECORD.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^DEFAULT\\(%<RECORD(FILESPEC)%<NAME FS1,FS2)
.P
<CALL:	^^DEFAULT\\(FS1,FS2)
.LM 16;.F;.S 1

.I-8
FS1	IS THE NAME OF THE FILE SPECIFICATION RECORD TO WHICH
DEFAULTS ARE TO BE APPLIED
.I-8
FS2	IS A SIMILAR RECORD CONTAINING THE NECCESARY DEFAULT VALUES
.LM 8;.S 1
^THE ITEMS OF THE FIRST RECORD ARE EXAMINED AND IF AN ITEM
IS NULL THEN IT IS SET EQUAL TO THE VALUE OF THE CORRESPONDING ITEM
IN THE SECOND RECORD.
.NF.S
E.G.
<FS1 CONTAINS  THE SPEC. "MYFILE[11,22]"
<FS2 CONTAINS  THE SPEC. "DSK:FRED.REL[10,12]/BUFFERS:5"
A CALL OF <DEFAULT(FS1,FS2) RESULTS IN:-
<FS1 CONTAINING  THE SPEC. "DSK:MYFILE.REL[11,22]/BUFFERS:5"
<FS2 REMAINS UNCHANGED
.F
.UC.F.P
<ASSOCIATED <PROCEDURES: READ FS, WRITE FS, CUSP FILES
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DEFINE INPUT\\
.INDEX ^^DEFINE INPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE ASSOCIATES A GIVEN DEVICE OR FILE WITH A GIVEN STREAM
NUMBER AND OPENS THAT DEVICE OR FILE FOR INPUT.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^DEFINE INPUT\\(N,SPEC)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION WHOSE VALUE MUST LIE BETWEEN 1 AND 15
AND WHICH REPRESENTS THE INPUT STREAM NUMBER TO BE USED.
.I-8
SPEC	IS A STRING CONTAINING A FULL ^^DEC\\SYSTEM-10 FILE SPECIFICATION
INCLUDING SWITCHES, A LIST OF WHICH IS GIVEN IN SECTION 3 OF THIS DOCUMENT.
.LM 8;.S 1
^THE GIVEN DEVICE OR FILE IS OPENED AND ASSOCIATED WITH THE LOGICAL INPUT
STREAM NUMBER 'N'. ^IT IS SELECTED AS THE CURRENT INPUT STREAM BY CALLING
<SELECT <INPUT FOR THAT STREAM.
.S
^THE DEVICE <TMP: IS ALLOWED USING A THREE CHARACTER FILE-NAME. ^IT READS
A TEMPORARY FILE RESIDING IN THE USERS STORE, WHICH EXISTS FOR THE
DURATION OF THE CURRENT JOB. (^SEE THE DESCRIPTION OF THE <TMPCOR
<UUO IN THE ^^DEC\\SYSTEM-10 ^MONITOR ^CALLS MANUAL). ^IF
THE FILE DOES NOT EXIST IN THE CURRENT <TMPCOR SPACE, A JOB-SPECIFIC
FILE IS LOOKED FOR ON DISK WITH THE NAME 'XXX<NAM.TMP', WHERE 'XXX'
IS THE CURRENT JOB-NUMBER.
.UC.F.P
<ASSOCIATED <PROCEDURES: JOBFILE, XDEFINE INPUT, SDEF INPUT, SELECT INPUT, CLOSE INPUT,
RESET INPUT
.LC.P
<ERROR <CONDITIONS: ^WHEN A SYNTAX ERROR IS FOUND IN THE STRING PARAMETER THE FOLLOWING
EVENT OCCURS:-
.NF.S
%<SIGNAL 10, 9, N, "^BAD FILE SPECIFICATION  'FILESPEC'"
.F.S
^A STREAM NUMBER LYING OUTSIDE THE RANGE 1 TO 15 CAUSES EVENT
.NF.S
%<SIGNAL 10, 1, N, "^DEFINING ILLEGAL STREAM"
.F.S
^TRYING TO RE-DEFINE A PREVIOUSLY DEFINED STREAM CAUSES EVENT
.NF.S
%<SIGNAL 10, 2, N, "^STREAM/CHANNEL ALREADY DEFINED"
.F.S
^WHEN AN UNKNOWN SWITCH IS FOUND IN THE SPECIFICATION:-
.S
%<SIGNAL 5, 10, 0, "^UNKNOWN SWITCH / ... "
.F.S
^AND WHEN AN ILLEGAL SWITCH ARGUMENT IS PASSED THE FOLLOWING EVENT OCCURS
.NF.S
%<SIGNAL 5, 9, ARG, "^INCORRECT ARGUMENT FOR SWITCH / ... "
.F.S
^TRYING TO OPEN AN UNKNOWN TYPE OF DEVICE CAUSES EVENT
.NF.S
%<SIGNAL 10, 3, 0, "^UNKNOWN DEVICE 'DEVICE'"
.F.S
^THE FOLLOWING INDICATES THAT THERE IS NOT ENOUGH STORE AVAILBLE FOR BUFFER SPACE
AND THAT A LARGER HEAP IS REQUIRED
.S
%<SIGNAL 2, 5, REQD. SPACE, "HEAP SPACE FULL"
.F.S
^AN ERROR OCCURING WHILE TRYING TO OPEN A FILE CAUSE EVENTS
.NF.S
%<SIGNAL 10, 6, 0, "^CANNOT OPEN DEVICE 'DEVICE'"
  OR (FOR ^^MAG\\TAPES ONLY)
%<SIGNAL 10, 15, ERR, "^TAPOP FAILURE"
  OR
%<SIGNAL 10, 4, ERR, "^LOOKUP ERROR FOR 'FILESPEC'"
.F.S
WHERE ERR IS AN ERROR CODE LISTED IN APPENDIX ^E OF ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL. (^NOTE THAT ERROR 0 INDICATES THAT
THE FILE WAS NOT FOUND.)

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DEFINE OUTPUT\\
.INDEX ^^DEFINE OUTPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE ASSOCIATES A GIVEN DEVICE OR FILE WITH A GIVEN STREAM
NUMBER AND OPENS THAT DEVICE OR FILE FOR OUTPUT.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^DEFINE OUTPUT\\(N,SPEC)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION WHOSE VALUE MUST LIE BETWEEN 1 AND 15
AND WHICH REPRESENTS THE OUTPUT STREAM NUMBER TO BE USED.
.I-8
SPEC	IS A STRING CONTAINING A FULL ^^DEC\\SYSTEM-10 FILE SPECIFICATION
INCLUDING SWITCHES, A LIST OF WHICH IS GIVEN IN SECTION 3 OF THIS DOCUMENT.
.LM 8;.S 1
^THE GIVEN DEVICE OR FILE IS OPENED AND ASSOCIATED WITH THE LOGICAL OUTPUT
STREAM NUMBER 'N'. ^IT IS SELECTED TO BE THE CURRENT OUTPUT STREAM BY CALLING
<SELECT <OUTPUT FOR THAT STREAM.
.S
^THE DEVICE <TMP: IS ALLOWED USING A THREE CHARACTER FILE-NAME. ^IT CREATES
A TEMPORARY FILE RESIDING IN THE USERS STORE, WHICH EXISTS FOR THE
DURATION OF THE CURRENT JOB. (^SEE THE DESCRIPTION OF THE <TMPCOR
<UUO IN THE ^^DEC\\SYSTEM-10 ^MONITOR ^CALLS MANUAL). ^IF
THE FILE IS TOO LARGE FOR THE CURRENT <TMPCOR SPACE, A JOB-SPECIFIC
FILE IS CREATED ON DISK WITH THE NAME 'XXX<NAM.TMP', WHERE 'XXX'
IS THE CURRENT JOB-NUMBER.
.UC.F.P
<ASSOCIATED <PROCEDURES: JOBFILE, XDEFINE OUTPUT, SDEF OUTPUT, SELECT OUTPUT, CLOSE OUTPUT,
RESET OUTPUT
.LC.P
<ERROR <CONDITIONS: ^WHEN A SYNTAX ERROR IS FOUND IN THE STRING PARAMETER THE FOLLOWING
EVENT OCCURS:-
.NF.S
%<SIGNAL 10, 9, 0, "^BAD FILE SPEC:-  'FILESPEC'"
.F.S
^A STREAM NUMBER LYING OUTSIDE THE RANGE 1 TO 15 CAUSES EVENT
.NF.S
%<SIGNAL 10, 1, N, "^DEFINING ILLEGAL STREAM"
.F.S
^TRYING TO RE-DEFINE A PREVIOUSLY DEFINED STREAM CAUSES EVENT
.NF.S
%<SIGNAL 10, 2, N, "^STREAM/CHANNEL ALREADY DEFINED"
.F.S
^WHEN AN UNKNOWN SWITCH IS FOUND IN THE SPECIFICATION:-
.S
%<SIGNAL 5, 10, 0, "^UNKNOWN SWITCH / ... "
.F.S
^AND WHEN AN ILLEGAL SWITCH ARGUMENT IS PASSED THE FOLLOWING EVENT OCCURS
.NF.S
%<SIGNAL 5, 9, ARG, "^INCORRECT ARGUMENT FOR SWITCH / ... "
.F.S
^TRYING TO OPEN AN UNKNOWN TYPE OF DEVICE CAUSES EVENT
.NF.S
%<SIGNAL 10, 3, 0, "^UNKNOWN DEVICE 'DEVICE'"
.F.S
^THE FOLLOWING INDICATES THAT THERE IS NOT ENOUGH STORE AVAILBLE FOR BUFFER SPACE
AND THAT A LARGER HEAP IS REQUIRED
.S
%<SIGNAL 2, 5, REQD. SPACE, "HEAP SPACE FULL"
.F.S
^AN ERROR OCCURING WHILE TRYING TO OPEN A FILE CAUSE EVENTS
.NF.S
%<SIGNAL 10, 6, 0, "^CANNOT OPEN DEVICE 'DEVICE'"
  OR (FOR ^^MAG\\TAPES ONLY)
%<SIGNAL 10, 15, ERR, "^TAPOP FAILURE"
  OR
%<SIGNAL 10, 4, ERR, "^ENTER ERROR FOR 'FILESPEC'"
.F.S
WHERE ERR IS AN ERROR CODE LISTED IN APPENDIX ^E OF ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^DELETE\\
.INDEX ^^DELETE\\
.P-8
<DEFINITION: ^THIS ROUTINE DELETES THE FILE SPECIFIED IN THE STRING PARAMETER.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^DELETE\\(%<STRING(255) SPEC)
.P
<CALL:	^^DELETE\\(SPEC)
.LM 16;.F;.S 1

.I-8
SPEC	IS A STRING CONTAINING A FULL ^^DEC\\SYSTEM-10 STYLE FILE SPECIFICATION
INDICATING A FILE TO BE DELETED
.LM 8;.S 1
^THE FILE SPECIFIED IN THE STRING IS DELETED.
.UC.F.P
<ASSOCIATED <PROCEDURES: XDELETE, (X)RENAME, (X)COPY, (X)ISFILE
.LC.P
<ERROR <CONDITIONS: ^IF THE DELETION IS NOT SUCCESSFUL, THE FOLLOWING EVENT OCCURS
.NF.S
%<SIGNAL 10, 4, ERR, "^CANNOT <RENAME/DELETE 'FILESPEC'"
.F.S
^THE MEANING OF ERR IS GIVEN IN APPENDIX ^E OF THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL.
.S
^OTHER POSSIBLE ERRORS ARE:-
.NF.S
%<SIGNAL 10, 9, 0, "^BAD FILE SPECIFICATION - 'FILESPEC'"
%<SIGNAL 10, 6, 0, "^CANNOT OPEN DEVICE FOR 'FILESPEC'"
%<SIGNAL 2, 5, 0, "^ALL <I/O CHANNELS IN USE"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^ECHO\\
.INDEX ^^ECHO\\
.P-8
<DEFINITION: ^THIS ROUTINE TURNS ON CHARACTER ECHOING ON THE USERS CONSOLE
(IT IS THE CONVERSE OF <NOECHO).
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^ECHO\\
.P
<CALL:	^^ECHO\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^ECHOING OF CHARACTERS TYPED TO THE ^^DEC\\SYSTEM-10 IN FULL-DUPLEX
MODE ON THE USERS CONSOLE IS ENABLED. ^IT IS NORMALLY ONLY DISABLED BY
A CALL OF <NOECHO.
.UC.F.P
<ASSOCIATED <PROCEDURES: NOECHO
.LC.P
<ERROR <CONDITIGNS: ^NONE


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^ENDOFPERIOD\\
.INDEX ^^ENDOFPERIOD\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION RETURNS THE DATE AND TIME IN UNIVERSAL
DATE-TIME FORMAT OF THE END OF THE GIVEN ACCOUNTING PERIOD.

.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^ENDOFPERIOD\\(%<INTEGER PERIOD)
.P
<USE:	UDT=^^ENDOFPERIOD\\(PERIOD)
.LM 16;.F;.S 1

.I-8
PERIOD	IS AN INTEGER EXPRESSION BEING A FOUR DIGIT ACCOUNTING PERIOD WHOSE
END DATE-TIME IS REQUIRED
.LM 8;.S 1
THE FINAL DATE AND TIME OF THE GIVEN ACCOUNTING PERIOD, IS RETURNED
AS A UNIVERSAL DATE-TIME INTEGER VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD
.F.LC.P
<ERROR <CONDITIONS: WHEN THE PARAMETERS IS NOT OF THE FORM <YYMM
OR IS AN IMPOSSIBLE VALUE, THE FOLLOWING EVENT IS CAUSED:-
.NF.S
%<SIGNAL 11, 22, PERIOD, "^ACCOUNTING PERIOD INCORRECTLY SPECIFIED"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^ESC\\
.INDEX ^^ESC\\
.P-8
<DEFINITION: ^THIS INTEGER CONSTANT GIVES THE INTERNAL <ASCII CODE VALUE
FOR THE ESCAPE CHARACTER.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^ESC\\
.LM 8;.S 1
^THE NUMERICAL VALUE OF THE ESCAPE CHARACTER IS GIVEN.
.UC.F.P
<ASSOCIATED <CONSTANTS: SP, TAB, NL, FF
.LC

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^EVENT\\
.INDEX ^^EVENT\\

.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE LAST CLASS OF EVENT TO
HAVE BEEN TRAPPED BY AN %<ON %<EVENT BLOCK.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^EVENT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
WHEN A SERIES OF POSSIBLE EVENTS HAVE BEEN TRAPPED, THIS
INTEGER FUNCTION RETURNS THE NUMBER OF THE EVENT WHICH CAUSED THE TRAP, VIA
%<RESULT.
.F.P.UC
<ASSOCIATED <PROCEDURES: SUB EVENT, EVENT INFO
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^EVENT INFO\\
.INDEX ^^EVENT INFO\\

.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE EXTRA INFORMATION
ASSOCIATED WITH THE LAST EVENT WHICH OCCURRED.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^EVENT INFO\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
WHEN AN EVENT HAS BEEN TRAPPED, THE EXTRA INFORMATION ASSOCIATED WITH THE EVENT
IS RETURNED VIA %<RESULT
.F.P.UC
<ASSOCIATED <PROCEDURES: EVENT, SUB EVENT
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FF\\
.INDEX ^^FF\\
.P-8
<DEFINITION: ^THIS INTEGER CONSTANT GIVES THE INTERNAL <ASCII CODE VALUE
FOR THE FORM-FEED CHARACTER.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^FF\\
.F.LM 8;.S 1
^THE NUMERICAL VALUE OF THE FORM-FEED CHARACTER IS GIVEN.
.UC.F.P
<ASSOCIATED <CONSTANTS: SP, TAB, ESC, NL
.LC

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FILOP\\
.INDEX ^^FILOP\\
.P-8
<DEFINITION: ^THIS PREDICATE PERFORMS OPERATIONS LIKE OPENING A DEVICE
OR FILE, BY USING THE '<FILOP' <UUO OR USING EQUIVALENT ^MONITOR ^CALLS.
.NF;.P
<SPEC:	%<SYSTEMPREDICATE ^^FILOP\\(%<RECORD(SCB)%<NAME SCB, %<INTEGER<NAME ERR)
.P
<USE:	%<IF ^^FILOP\\(SCB,ERR) <%THEN . . .
.LM 16;.F;.S 1

.I-8
SCB	IS THE NAME OF A ^STREAM ^CONTROL ^BLOCK RECORD WHICH
HAS BEEN COMPLETELY SET UP, INCLUDING THE REQUIRED '<FILOP' FUNCTION CODE
.I-8
ERR	IS THE NAME OF AN INTEGER VARIABLE WHICH CONTAINS -1 IF THE FUNCTION
WAS SUCCESSFUL OR ELSE AN ERROR CODE WHOSE VALUES ARE GIVEN IN APPENDIX ^E OF THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL.
.LM 8;.S 1
^THE <FILOP ^FUNCTION SPECIFIED IN THE GIVEN ^STREAM ^CONTROL
^BLOCK IS PERFORMED EITHER BY A '<FILOP' <UUO OR BY ITS EQUIVALENTS DEPENDING
ON THE ^MONITOR VERSION AND THE FUNCTION REQUIRED.
.B
^ON SUCCESSFUL EXECUTION THE PROCEDURE RETURNS A VALUE <%TRUE AND 'ERR' = -1
.B
^ON FAILURE IT RETURNS A VALUE %<FALSE AND 'ERR' CONTAINS THE ERROR CODE.
.UC.F.P
<ASSOCIATED <PROCEDURES: TAPOP, IOUUO
.LC.P
<ERROR <CONDITIONS: ^AS WELL AS RETURNING ANY OF THE ERROR CODES MENTIONED ABOVE
THE FOLLOWING TWO EVENTS MAY OCCUR:-
.NF.S
%<SIGNAL 10, 6, 0, "^CANNOT OPEN DEVICE 'DEVICE'"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FINIT\\
.INDEX ^^FINIT\\
.P-8
<DEFINITION: ^THIS ROUTINE CLOSES ANY STREAMS WHICH USE <TMPCOR FILES, AND
IS USED BY THE RUN TIME SYSTEM AT THE TERMINATION OF A
PROGRAM PRIOR TO THE CLOSING OF ALL OTHER STREAMS.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^FINIT\\
.P
<CALL:	^^FINIT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^STREAMS ASSOCIATED WITH <TMPCOR FILES ARE SPECIAL
CASES AND REQUIRE TO BE CLOSED EXPLICITLY BY THE PROGRAM. ^THIS ROUTINE
CLOSES ANY CURRENTY OPEN <TMPCOR OUTPUT FILES AND IS USED
BY THE RUN TIME SYSTEM PRIOR TO RELEASING ALL ASSIGNED CHANNELS AT
THE TERMINATION OF A RUN.
.UC.F.P
<ASSOCIATED <PROCEDURES: INITIO, CLOSE OUTPUT, DEFINE OUTPUT
.LC.P
<ERROR <CONDITIONS: ^ANY OF THOSE ERRORS ASSOCIATED WITH <CLOSE <OUTPUT AND  <DEFINE <OUTPUT
COULD, BUT SHOULD NOT OCCUR.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FLOAT\\
.INDEX ^^FLOAT\\
.P-8
<DEFINITION: ^THIS REAL FUNCTION RETURNS THE VALUE OF THE GIVEN INTEGER
AS A FLOATING POINT NUMBER.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	R=^^FLOAT\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION WHICH IS TO BE CONVERTED TO A REAL
.LM 8;.S 1
THE INTEGER PARAMETER IS CONVERTED TO A REAL
NUMBER WHOSE VALUE IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: INT, INT PT, FRAC PT
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FRAC PT\\
.INDEX ^^FRAC PT\\
.P-8
<DEFINITION: ^THIS LONGREAL FUNCTION GIVES THE VALUE OF THE FRACTIONAL
PART OF THE GIVEN LONGREAL EXPRESSION.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	R=^^FRAC PT\\(X)
.LM 16;.F;.S 1

.I-8
X	IS A LONGREAL EXPRESSION FOR WHICH THE FRACTIONAL PART IS TO BE
RETURNED
.LM 8;.S 1
^THE FRACTIONAL PART OF 'X' IS RETURNED AS A LONG REAL VIA <%RESULT.
.NF.S
E.G.  THE <FRAC <PT(3.14159)  IS 0.14159
.UC.F.P
<ASSOCIATED <PROCEDURES: INT, INT PT, FLOAT
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FREE VEC\\
.INDEX ^^FREE VEC\\
.P-8
<DEFINITION: ^THIS ROUTINE RETURNS A GIVEN VECTOR BACK TO THE ^HEAP.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^FREE VEC\\(%<INTEGER N,M)
.P
<CALL:	^^FREE VEC\\(N,M)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING START ADDRESS OF THE
VECTOR TO BE RETURNED
.I-8
M	IS AN INTEGER EXPRESSION WHICH REPRESENTS THE LENGTH OF THE VECTOR
TO BE RETURNED.
.LM 8;.S 1
^THE SPACE CLAIMED FROM THE ^HEAP IS RETURNED
USING THIS ROUTINE. ^IT IS USED BY THE RUN-TIME SYSTEM FOR RETURNING <I/O BUFFER SPACE.
.UC.F.P
<ASSOCIATED <PROCEDURES: GET VEC, INIT HEAP
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FROM DATE\\
.INDEX ^^FROM DATE\\
.P-8
<DEFINITION: ^THIS ROUTINE TAKES A DATE IN <DEC INTERNAL FORMAT AND RETURNS
THE DAY, MONTH AND YEAR AS INTEGERS.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^FROM DATE\\(%<INTEGER<NAME D, M, Y)
.P
<CALL:	^^FROM DATE\\(D,M,Y)
.LM 16;.F;.S 1

.I-8
D	IS THE NAME OF AN INTEGER VARIABLE WHICH WILL CONTAIN THE RETURNED DAY
OF THE MONTH
.I-8
M	IS THE NAME OF AN INTEGER VARIABLE WHICH WILL CONTAIN THE RETURNED MONTH
OF THE YEAR
.I-8
Y	IS THE NAME OF AN INTEGER VARIABLE WHICH WILL CONTAIN THE RETURNED YEAR
INCLUDING CENTURIES
.LM 8;.S 1
THE DATE IN <DEC INTERNAL DATE FORMAT IS CONVERTED TO THREE
INTEGERS REPRESENTING THE DAY, MONTH AND YEAR, AND THESE ARE RETURNED
IN THE INTEGERNAME PARAMETERS GIVEN. ^THE YEAR IS RETURNED AS A FOUR DIGIT
NUMBER.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FROM TIME\\
.INDEX ^^FROM TIME\\
.P-8
<DEFINITION: ^THIS ROUTINE CONVERTS TIME IN MILLISECONDS (<DEC INTERNAL FORM),
INTO HOURS, MINUTES AND SECONDS.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^FROM TIME\\(%<INTEGER TIME, %<INTEGER<NAME H, M, S)
.P
<CALL:	^^FROM TIME\\(TIME,H,M,S)
.LM 16;.F;.S 1

.I-8
TIME	IS AN INTEGER EXPRESSION BEING THE TIME IN MILLISECONDS
.I-8
H	IS THE NAME OF AN INTEGER VARIABLE WHICH WILL CONTAIN THE RETURNED NUMBER OF
HOURS
.I-8
M	IS THE NAME OF AN INTEGER VARIABLE WHICH WILL CONTAIN THE RETURNED
NUMBER OF MINUTES PAST THE HOUR
.I-8
S	IS THE NAME OF AN INTEGER VARIABLE WHICH WILL CONTAIN THE RETRUNED NUMBER OF
SECONDS PAST THE MINUTE
.LM 8;.S 1
THE TIME IN MILLISECONDS PAST MIDNIGHT (<DEC INTERNAL FORM)
IS CONVERTED TO HOURS, MINUTES AND SECONDS PAST
MIDNIGHT AND RETURNED IN THE GIVEN NAME TYPE PARAMETERS.
.S
^NO PARAMETER CHECKING IS DONE SO THAT THE RESULT IS CALCULATED FOR ANY
NUMBER OF MILLISECONDS.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FROM UDT\\
.INDEX ^^FROM UDT\\
.P-8
<DEFINITION: ^THIS ROUTINE CONVERTS DATE AND TIME SPECIFIED IN
UNIVERSAL DATE-TIME FORMAT, TO DATE AND TIME IN <DEC INTERNAL FORMAT.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^FROM UDT\\(%<INTEGER UDT, %<INTEGER<NAME DATE, TIME)
.P
<CALL:	^^FROM UDT\\(UDT,DATE,TIME)
.LM 16;.F;.S 1

.I-8
UDT	IS AN INTEGER EXPRESSION BEING DATE AND TIME IN UNIVERSAL DATE-TIME
FORMAT
.I-8
DATE	IS THE NAME OF AN INTEGER VARIABLE WHICH WILL CONTAIN THE RETURNED
DATE IN <DEC INTERNAL FORM
.I-8
TIME	IS THE NAME OF AN INTEGER VARIABLE WHICH WILL CONTAIN THE RETURNED
TIME IN <DEC INTERNAL FORM
.LM 8;.S 1
THE DATE AND TIME SPECIFIED IN THE UNIVERSAL DATE-TIME FORM IS RETURNED
AS DATE AND TIME IN THE <DEC INTERNAL FORM IN THE THE NAME TYPE PARAMETERS
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^FSTOSTR\\
.INDEX ^^FSTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION CONVERTS A GIVEN FILE SPECIFICATION
RECORD INTO A STRING.
.NF;.P
<SPEC:	%<EXTERNALSTRING(255)%FN ^^FSTOSTR\\ (%<RECORD(FILESPEC)%<NAME FS)
.P
<USE:	S=^^FSTOSTR\\(FS)
.LM 16;.F;.S 1

.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD TO BE CONVERTED
.LM 8;.S 1
^THE GIVEN RECORD IS CONVERTED TO AN <IMP STRING AND RETURNED
VIA %<RESULT
.UC.F.P
<ASSOCIATED <PROCEDURES: STRTOFS, READ FS, WRITE FS, DEFAULT
.LC.P
<ERROR <CONDITIONS: ^NONE
.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GET CHANNEL\\
.INDEX ^^GET CHANNEL\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE NEXT FREE PHYSICAL
CHANNEL.
.NF;.P
<SPEC:	%<SYSTEMINTEGERFN ^^GET CHANNEL\\
.P
<USE:	N=^^GET CHANNEL\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE NEXT FREE PHYSICAL CHANNEL NUMBER IS RETURNED VIA %<RESULT.
^THE RUN-TIME SYSTEM USES THIS FUNCTION WHEN DEFINING STREAMS
AND OPENING <DA OR <SQ CHANNELS.
.UC.F.P
<ASSOCIATED <PROCEDURES: GETSTS, SETSTS, CLOSE, RELEASE, IOUUO
.LC.P
<ERROR <CONDITIONS: ^WHEN ALL <I/O CHANNELS ARE IN USE (I.E. WHEN 15 STREAMS OR
CHANNELS ARE OPEN SIMULTANEOUSLY) THE FOLLOWING EVENT OCCURS:-
.NF.S
<%SIGNAL 2, 5, 0, "^ALL <I/O CHANNELS IN USE"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GET DATE\\
.INDEX ^^GET DATE\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE CURRENT DATE
IN <DEC INTERNAL FORM
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^GET DATE\\
.P
<USE:	D=^^GET DATE\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE CURRENT DATE IN <DEC INTERNAL FORM IS RETURNED VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GET NOW\\
.INDEX ^^GET NOW\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE CURRENT DATE AND TIME IN UNIVERSAL DATE-TIME FORMAT
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^GET NOW\\
.P
<USE:	UDT=^^GET NOW\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE CURRENT DATE AND TIME ARE RETURNED IN UNIVERSAL
DATE-TIME FORMAT VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GET PAGES\\
.INDEX ^^GET PAGES\\
.P-8
<DEFINITION: ^THIS ROUTINE GETS A NUMBER OF FREE PAGES FROM THE ^^DEC\\SYSTEM-10 ^MONITOR
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^GET PAGES\\(%<INTEGER FIRST, LAST)
.P
<CALL:	^^GET PAGES\\(FIRST,LAST)
.LM 16;.F;.S 1

.I-8
FIRST	IS AN INTEGER EXPRESSION BEING THE PAGE NUMBER OF THE FIRST PAGE
REQUIRED
.I-8
LAST	IS AN INTEGER EXPRESSION BEING THE PAGE NUMBER OF THE LAST PAGE REQUIRED
.LM 8;.S 1
A NUMBER OF CONSECUTIVE PAGES IN STORE ARE OBTAINED FROM THE MONITOR.
^IF NECESSARY AND IF POSSIBLE, THE ROUTINE WILL GET VIRTUAL STORE IF
NO MORE PHYSICAL STORE IS AVAILABLE.
.S
^ON A ^^DEC\\SYSTEM-20 THIS ROUTINE JUST RETURNS.
.S
^IT IS UP TO THE USER TO KNOW WHAT THEY ARE DOING AND NOT TO OBTAIN PAGES
THAT THE RUN TIME SYSTEM MAY REQUIRE FOR STACK SPACE.
.F.LC.P
<ERROR <CONDITIONS: WHEN CORE CANNOT BE OBTAINED FOR ANY REASON THE FOLLOWING EVENT
IS CAUSED:-
.S
%<SIGNAL 2, 1, FAULT, "^CANNOT GET STORE"
.B
WHERE FAULT IS A PAGE FAULT NUMBER WHOSE MEANING CAN BE FOUND IN THE
^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GETSEG\\
.INDEX ^^GETSEG\\
.P-8
<DEFINITION: ^THIS ROUTINE HAS THE EFFECT OF REPLACING THE CURRENT
HIGH SEGMENT OF A PROGRAM BY THE ONE SPECIFIED, WHILST LEAVING THE
LOW SEGMENT DATA UNALTERED.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^GETSEG\\(%<STRING(6) DEV,FILE, %<STRING(3) EXT, %<INTEGER PPN)
.P
<CALL:	^^GETSEG\\(DEV,FILE,EXT,PPN)
.LM 16;.F;.S 1

.I-8
DEV	IS A STRING CONTAINING THE NAME OF THE DEVICE FROM WHICH THE
NEW HIGH SEGMENT IS TO BE TAKEN
.I-8
FILE	IS A STRING CONTAINING THE FILE NAME OF THE FILE FROM WHICH
THE NEW HIGH SEGMENT IS TO BE TAKEN
.I-8
EXT	IS A STRING SPECIFYING THE EXTENSION TO THE FILE NAME
(^IF AN EXTENSION <.SAV IS GIVEN, <.EXE WILL BE TRIED FIRST)
.I-8
PPN	IS AN INTEGER EXPRESSION GIVING THE OCTAL REPRESENTATION OF THE
PROJECT-PROGRAMMER PAIR FOR THE NEW HIGH-SEGMENT FILE
(^IF ZERO IS GIVEN, THE USERS OWN AREA IS ASSUMED.)
.LM 8;.S 1
^THIS ROUTINE ALLOWS THE USER TO USE A NUMBER OF CODE SEGMENTS
TO OPERATE ON THE SAME DATA SEGMENT. ^IT LEAVES THE REGISTERS UNALTERED
AND RETURNS CONTROL TO THE START OF THE NEW PROGRAM SEGMENT.
.UC.F.P
<ASSOCIATED <PROCEDURES: RUN
.LC.P
<ERROR <CONDITIONS: ^THE MONITOR MAY PRODUCE ONE OF THE FOLLOWING MESSAGES:-
.NF.S
.UC
?NOT A SAVE FILE
? ... .SAV NOT FOUND
?TRANSMISSION ERROR
?LOOKUP FAILURE 'N'
?'N'P OF CORE NEEDED
?NO START ADDRESS
.LC

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GETSTS\\
.INDEX ^^GETSTS\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE STATUS WORD
FOR THE DEVICE ASSOCIATED WITH A GIVEN PHYSICAL CHANNEL NUMBER.
.NF;.P
<SPEC:	%<SYSTEMINTEGERFN ^^GETSTS\\(%<INTEGER N)
.P
<USE:	N=^^GETSTS\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION GIVING THE NUMBER OF THE PHYSICAL
CHANNEL NUMBER TO BE LOOKED AT (THE LEFT-HALF OF THE <FILOPFN ITEM IN AN
<SCB RECORD)
.LM 8;.S 1
^EACH PHYSICAL CHANNEL HAS ASSOCIATED WITH IT A SET OF STATUS BITS
WHICH THIS FUNCTION READS AND RETURNS VIA %<RESULT. ^NOTE THAT THE
MEANING OF THESE BITS DEPEND ON THE PARTICULAR DEVICE BEING EXAMINED (SEE
THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL FOR THE PARTICULAR DEVICE
IN QUESTION).
.P
<ASSOCIATED <PROCEDURES:  <INSTATUS, <OUTSTATUS, <SETSTS
.P
<ERROR <CONDITIONS: ^WHEN THE CHANNEL NUMBER REFERS TO A CHANNEL WHICH HAS
NO DEVICE ASSOCIATED WITH IT, THE MONITOR GIVES THE FOLLOWING FATAL ERROR:-
.NF.S
?<I/O <TO <UNASSIGNED <CHANNEL <AT <USER ADDR

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GETTAB\\
.INDEX ^^GETTAB\\
.P-8
<DEFINITION: ^THIS PREDICATE RETURNS INFORMATION FROM ^^DEC\\SYSTEM-10 ^MONITOR TABLES.
.NF;.P
<SPEC:	%<SYSTEMPREDICATE ^^GETTAB\\(%<INTEGER TABLE,INDEX, %<INTEGER<NAME RESULT)
.P
<USE:	<%IF ^^GETTAB\\(TABLE,INDEX,RESULT) <%THEN . . .
.LM 16;.F;.S 1

.I-8
TABLE	IS AN INTEGER EXPRESSION GIVING THE TABLE NUMBER TO BE EXAMINED
.I-8
INDEX	IS AN INTEGER EXPRESSION GIVING THE INDEX INTO THAT TABLE
.I-8
RESULT	IS THE NAME OF AN INTEGER VARIABLE WHICH CONTAINS THE
RESULTANT VALUE IF THE PREDICATE WAS SUCCESSFUL, OTHERWISE IS CONTAINS ZERO
.LM 8;.S 1
^THIS PREDICATE USES THE ^MONITOR <GETTAB <UUO
WHICH IS A WAY OF EXAMINING THE TABLES IN WHICH THE ^MONITOR KEEPS
INFORMATION ABOUT JOBS AND ITSELF. (SEE THE DECRIPTION OF THE <GETTAB
<UUO IN THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL FOR A LIST OF ITS
POSSIBLE ARGUMENT VALUES). ^WHEN THE PREDICATE IS <%TRUE THE RESULT IS
PASSED BACK IN THE THIRD PARAMETER, OTHERWISE THAT PARAMETER IS SET TO ZERO.
.UC.F.P
<ASSOCIATED <PROCEDURES: CALLI1, CALLI2, CALLI3
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GET TIME\\
.INDEX ^^GET TIME\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION  RETURNS THE TIME OF DAY
IN MILLISECONDS SINCE MIDNIGHT.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^GET TIME\\
.P
<USE:	T=^^GET TIME\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE TIME OF DAY IN MILLISECONDS PAST MIDNIGHT (<DEC INTERNAL FORM) IS RETURNED VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^GET VEC\\
.INDEX ^^GET VEC\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION ALLOCATES SPACE IN THE <HEAP
AND RETURNS THE START ADDRESS OF THE REQUIRED VECTOR.
.NF;.P
<SPEC:	%<SYSTEMINTEGERFN ^^GET VEC\\(%<INTEGER SIZE)
.P
<USE:	N=^^GET VEC\\(SIZE)
.LM 16;.F;.S 1

.I-8
SIZE	IS AN INTEGER EXPRESSION SPECIFYING THE AMMOUNT OF <HEAP SPACE
REQUIRED
.LM 8;.S 1
^THE <HEAP IS SCANNED UNTIL A HOLE THE SIZE OF THE REQUIRED
LENGTH IS FOUND. ^THIS IS THEN FLAGGED AS ALLOCATED AND THE START ADDRESS
OF THE VECTOR IS RETURNED VIA <%RESULT.
.B
^THE SYSTEM USES THIS ROUTINE WHENEVER SPACE IS REQUIRED FOR <I/O  E.G.
<DEFINE <INPUT, <OPEN <SQ ETC. ^BUT TOGETHER WITH <FREE <VEC IT IS USEFUL
WHENEVER DYNAMIC STORAGE IS REQUIRED.
.UC.F.P
<ASSOCIATED <PROCEDURES: FREE VEC, INIT HEAP
.LC.P
<ERROR <CONDITIONS: ^WHEN NO HOLE LARGE ENOUGH IS FOUND IN THE HEAP
THE FOLLOWING EVENT OCCURS:-
.NF.S
%<SIGNAL 2, 4, SIZE, "^HEAP SPACE FULL"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^HEXTOSTR\\
.INDEX ^^HEXTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS A STRING CONTAINING THE
REPRESENTION OF AN UNSIGNED HEXIDECIMAL INTEGER AS A STRING OF DIGITS.
.NF;.P
<SPEC:	%<EXTERNALSTRING(9)%FN ^^HEXTOSTR\\(%<INTEGER N)
.P
<USE:	S=^^HEXTOSTR\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION  REPRESENTING AN HEXIDECIMAL NUMBER
.LM 8;.S 1
^AN INTEGER EXPRESSION IS TREATED AS AN UNSIGNED HEXIDECIMAL NUMBER
AND RETURNED AS A STRING OF UP TO 9 DIGITS AND LETTERS
WITHOUT LEADING ZEROES OR SPACES VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ HEX, WRITE HEX, STRTOHEX
.LC.P
<ERROR <CONDITIONS: ^NONE


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^ICALL (0-9)\\
.INDEX ^^ICALL (0-9)\\
.P-8
<DEFINITION: ^THESE INTEGER FUNCTIONS CALL THE <FORTRAN FUNCTION NAMED AS
THE FIRST PARAMETER WITH THE NECESSARY ARGUMENTS GIVEN AS THE SUCCEEDING PARAMETERS.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^ICALL (0-9)\\(%<<NAME IFN, %<<NAME ARG1, .. %<<NAME ARG9)
.P
<USE:	^^N = ICALL (0-9)\\(IFN,ARG1, .. ARG9)
.LM 16;.F;.S 1

.I-8
IFN	IS THE NAME OF A EXTERNAL <FORTRAN INTEGER FUNCTION.
^FOR EASE OF HANDLING, IT IS REQUIRED THAT THE SPEC GIVEN
IN THE <IMP PROGRAM IS THAT OF %<EXTERNALINTEGERSPEC.
.I-8
ARG1	IS THE NAME OF THE FIRST ARGUMENT IF ONE IS NEEDED
.I-8
AND SO ON UP TO
.I-8
ARG9	IS THE NAME OF THE NINTH ARGUMENT IF ONE IS NEEDED
.LM 8;.S 1
THERE ARE A SET OF <IMP INTEGER FUNCTIONS CALLED <ICALL0, <ICALL1, ETC.
UP TO <ICALL9. ^THE NUMBER REFERS TO THE NUMBER OF ARGUMENTS
WHICH THE <FORTRAN FUNCTION REQUIRES. ^SEE THE FOLLOWING EXAMPLE:-
.NF.UC.S.LIT
%BEGIN
%EXTERNALINTEGERSPEC FNOARG
      !A FORTRAN FUNCTION WITH NO ARGUMENTS
%EXTERNALINTEGERSPEC F3ARGS
      !A FORTRAN FUNCTION WITH THREE ARGUMENTS

%EXTERNALINTEGERFNSPEC ICALL0(%NAME FN)
%EXTERNALINTEGERFNSPEC ICALL3(%NAME FN, %NAME A,B,C)

%INTEGER ARG1,ARG2,ARG3
%INTEGER N,M

ARG1=1; ARG2=2; ARG3=3
N = ICALL0(FNOARG);                 !CALL FORTRAN
M = ICALL3(F3ARGS,ARG1,ARG2,ARG3);  !CALL FORTRAN
WRITE(N,0) %IF M < 0

%ENDOFPROGRAM
.END LITERAL
.LC.F.S
^THE %<INCLUDE FILE "<IMP:FORTRA.INC" CONTAINS ALL THE SPECS FOR THE <ICALL FUNCTIONS.
.UC.F.P
<ASSOCIATED <PROCEDURES: CALL (0-9), RCALL (0-9)
.LC.P
<ERROR <CONDITIONS: ^DEPENDING ON THE <FORTRAN FUNCTION CALLED.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^IMOD\\
.INDEX ^^IMOD\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE MODULUS
(I.E. THE ABSOLUTE VALUE) OF THE GIVEN INTEGER QUANTITY.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	M=^^IMOD\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION 
.LM 8;.S 1
^THE INTEGER VALUE OF THE MODULUS OF 'N' IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: MOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F.C
^^INDEV\\
.INDEX ^^INDEV\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE DEVICE TYPE
ASSOCIATED WITH THE CURRENT INPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^INDEV\\
.P
<USE:	N=^^INDEV\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^A NUMBER INDICATING THE GENERIC TYPE OF THE DEVICE ASSOCIATED
WITH THE CURRENT INPUT STREAM IS RETURNED VIA %<RESULT.
.B
^BELOW IS LISTED THE CURRENT RANGE OF POSSIBLE VALUES AND THEIR MEANINGS.
.NF.S.TS 28 34
%<CONSTINTEGER ^NAME	^VALUE	^DEVICE ^TYPE
.S
   <TMPDEV   = -2  A <TMPCOR FILE RESIDING IN CORE
   <NULDEV   = -1  A NULL DEVICE
            (DEFAULT VALUE FOR UNASSIGNED STREAMS)
   <DSKDEV   =  0  A ^DISK DEVICE
   <DTADEV   =  1  A <DEC TAPE
   <MTADEV   =  2  A MAGNETIC TAPE
   <TTYDEV   =  3  A TELETYPE
   <XDSKDEV _>=  4  ANY OTHER ^DISK-TYPE DEVICE
.TS 8 16
.UC.F.P
<ASSOCIATED <PROCEDURES: INSTREAM, SELECT INPUT, INSTATUS
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INITFOR\\
.INDEX ^^INITFOR\\
.P-8
<DEFINITION: ^THIS ROUTINE INITIALISES <FOROTS - THE <FORTRAN ^RUNTIME SYSTEM.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^INITFOR\\
.P
<CALL:	^^INITFOR\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^WHEN CALLING <FORTRAN ^PROCEDURES FROM <IMP, THE USER MAY WANT TO
USE THE FACILITIES OF <FOROTS (E.G. <FORTRAN <I/O).
THIS ROUTINE CAUSES THE <FOROTS LIBRARY TO BE SEARCHED AT LOAD TIME
AND INITIALISES THE <FOROTS SYSTEM FOR SUBSEQUENT USE.
 ^IT IS INADVISABLE TO MIX <IMP AND <FORTRAN <I/O TO
ANYTHING OTHER THAN THE USER'S TERMINAL, BUT IF THE <FORTRAN STREAMS
ARE SET UP BEFORE ANY <IMP STREAMS THEN NO TROUBLE SHOULD BE EXPERIENCED.
.UC.F.P
<ASSOCIATED <PROCEDURES: CALL, ICALL, RCALL
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INITHEAP\\
.INDEX ^^INITHEAP\\
.P-8
<DEFINITION: ^THIS ROUTINE INITIALISES THE HEAP SPACE FOR <IMP.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^INITHEAP\\
.P
<CALL:	^^INITHEAP\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE HEAP WHICH <IMP USES FOR <I/O BUFFER SPACE IS NORMALLY SET UP
BY AN <IMP MAIN PROGRAM. ^WHEN CALLING <IMP FROM ANOTHER LANGUAGE, AND
HEAP SPACE IS REQUIRED, THIS ROUTINE WILL NEED TO BE CALLED TO SET UP THE
LIST STRUCTURE OF THE HEAP. ^THE HEAP IS SET UP BY DEFAULT TO START AT
THE TOP OF THE LOW SEGMENT AND ALLOWED TO GROW UPWARDS DYNAMICALLY.
^THE HEAP CAN BE FIXED IN SIZE BY DECLARING AN EXTERNAL INTEGER <HEAPSIZE
AND BROUGHT INTO THE LOW SEGMENT BY DECLARING AN ARRAY CALLED
<HEAP.
.S
^FOR A FULL DESCIPTION OF THE MEMORY MANAGEMENT SYSTEM SEE THAT
SECTION IN THE '<IMP ON THE <DEC-10 - ^USER ^GUIDE'.
.UC.F.P
<ASSOCIATED <PROCEDURES: INITSTACK, GETVEC, FREEVEC, SAVE ACS, RESTORE,
INITIO
.F.LC.P
<ERROR <CONDITIONS: IF THE STORE IS BEING SET UP DYNAMICALLY AND THERE IS NOT
ENOUGH SPACE THE FOLLOWING EVENT IS CAUSED:-
.S
%<SIGNAL 2, 4, REQD SIZE, "^CANNOT GET STORE FOR HEAP"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INITIO\\
.INDEX ^^INITIO\\
.P-8
<DEFINITION: ^THIS ROUTINE SETS UP THE INPUT AND OUTPUT STREAMS
AT THE START OF PROGRAM EXECUTION.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^INITIO\\
.P
<CALL:	^^INITIO\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE SYSTEM USES THIS ROUTINE TO SET ALL STREAMS TO NULL
EXCEPT STREAMS ZERO WHICH ARE SET TO THE USERS CONSOLE AND ARE
SELECTED AS THE CURRENT INPUT AND OUTPUT STREAMS.
.S
^THIS ROUTINE IS IMPLICITLY CALLED BY AN <IMP MAIN PROGRAM, AND NEED ONLY
BE CALLED EXPLICITLY WHEN <IMP IS BEING CALLED FROM A MAIN
PROGRAM IN ANOTHER LANGUAGE AND <IMP REQUIRES TO DO INPUT OR OUTPUT.
.UC.F.P
<ASSOCIATED <PROCEDURES: INITHEAP, INITSTACK, SAVE ACS, RESTORE
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INITSTACK\\
.INDEX ^^INITSTACK\\
.P-8
<DEFINITION: ^THIS ROUTINE SETS UP THE <IMP STACK.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^INITSTACK\\
.P
<CALL:	^^INITSTACK\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
<IMP USES A STACK FOR RETURN ADDRESSES FROM PROCEDURES, THE PREVIOUS
STACK BASE ADDRESS AND FOR LOCAL DATA STORAGE. ^THE STACK
IS SET UP AUTOMATICALLY BY THE <IMP MAIN PROGRAM, HOWEVER IF
AN <IMP PROCEDURE IS BEING CALLED FROM ANOTHER LANGUAGE, THE STACK
MAY NEED TO BE SET UP. ^THIS ROUTINE SETS UP THE STACK BY DEFAULT
TO LIE AT THE TOP OF THE USER'S HIGH SEGMENT, AND IS ALLOWED TO
GROW UPWARDS. ^IT CAN HOWEVER BE MADE OF FIXED SIZE BY DECLARING THE EXTERNAL
INTEGER <STACKSIZE AND CAN BE BROUGHT INTO THE LOW SEGMENT BY
DECLARING AN EXTERNAL ARRAY <STACK.
.S
^FOR A FULL DESCIPTION OF THE MEMORY MANAGEMENT SYSTEM SEE THAT
SECTION IN THE '<IMP ON THE <DEC-10 - ^USER ^GUIDE'.
.UC.F.P
<ASSOCIATED <PROCEDURES: INITHEAP, INITIO, SAVE ACS, RESTORE
.LC.P
<ERROR <CONDITIONS: IF NO STORE CAN BE ALLOCATED FOR THE DYNAMIC STACK, THE FOLLOWING
EVENT IS CAUSED:-
.NF.S
%<SIGNAL 2, 4, FAULT, "^CANNOT GET STORE"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INPUT\\
.INDEX ^^INPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE CAUSES THE NEXT INPUT BUFFER ON THE CURRENTLY SELECTED
INPUT STREAM TO BE READ.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^INPUT\\
.P
<CALL:	^^INPUT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THIS ROUTINE PERFORMS THE ^^DEC\\SYSTEM-10 ^MONITOR <IN <UUO
WHICH CAUSES ALL SUBSEQUENT INPUT TO COME FROM THE NEXT BUFFER
AVAILABLE ON THE CURRENTLY SELECTED INPUT STREAM.
.S
^WHEN CALLED ON A TELETYPE OR NULL STREAM, NO ACTION IS PERFORMED.
.F.P.UC
<ASSOCIATED <PROCEDURES: OUTPUT, USETI, USETO, READ SYMBOL, PRINT SYMBOL
.LC.P
<ERROR <CONDITIONS: SEE <READ <SYMBOL

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INPUT PENDING\\
.INDEX ^^INPUT PENDING\\
.P-8
<DEFINITION: ^THIS PREDICATE RETURNS THE VALUE %<TRUE WHEN THERE IS
ANY INPUT PENDING ON THE CURRENT INPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALPREDICATE ^^INPUT PENDING\\
.P
<USE:	<%IF ^^INPUT PENDING\\ <%THEN . . .
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^A VALUE OF %<TRUE IS RETURNED WHEN THE CURRENT INPUT STREAM IS
ASSOCIATED WITH A DEVICE OTHER THAN A TELETYPE TYPE OR WHEN THERE ARE
CHARACTERS WAITING TO BE INPUT FROM THE USERS CONSOLE.  ^IT RETURNS %<FALSE
WHEN THERE ARE NO CHARACTERS WAITING TO BE INPUT FROM THE CURRENT INPUT
STREAM AND THAT STREAM IS THE USERS CONSOLE.
.UC.F.P
<ASSOCIATED <PROCEDURES: PROMPT
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INSTATUS\\
.INDEX ^^INSTATUS\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE STATUS WORD
FOR THE DEVICE ASSOCIATED WITH THE CURRENTLY SELECTED INPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^INSTATUS\\
.P
<USE:	N=^^INSTATUS\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
EACH DEVICE HAS ASSOCIATED WITH IT A SET OF STATUS BITS, WHICH
THIS FUNCTION READS AND RETURNS VIA %<RESULT.
^THE MEANING OF THESE BITS IS DEVICE DEPENDENT AND ARE DESCRIBED IN
THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL.
.S
^ZERO IS RETURNED IF THE CURRENTLY SELECTED INPUT STREAM IS THE NUL DEVICE OR THE TELETYPE.
.UC.F.P
<ASSOCIATED <PROCEDURES: OUTSTATUS, GETSTS, SETSTS, INDEV, INSTREAM
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INSTREAM\\
.INDEX ^^INSTREAM\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE NUMBER OF THE CURRENTLY SELECTED
INPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^INSTREAM\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE NUMBER (BETWEEN 0 AND 15) OF THE CURRENTLY SELECTED INPUT STREAM IS
RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: INDEV, SELECT INPUT
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INT\\
.INDEX ^^INT\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE NEAREST INTEGER
TO THE LONG REAL QUANTITY SPECIFIED
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^INT\\(A)
.LM 16;.F;.S 1

.I-8
A	IS A LONGREAL EXPRESSION 
.LM 8;.S 1
^THE VALUE OF THE NEAREST INTEGER TO A IS RETURNED VIA <%RESULT. ^IT IS
EQUIVALENT TO <INTPT (A+0.5).
.UC.F.P
<ASSOCIATED <PROCEDURES: INT PT, FRAC PT, FLOAT
.LC.P
<ERROR <CONDITIONS: ^SEE <INT <PT.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INTEGER\\
.INDEX ^^INTEGER\\
.P-8
<DEFINITION: ^THIS MAP ENABLES THE USER TO ACCESS DIRECTLY A PARTICULAR
LOCATION WHOSE ADDRESS IS SPECIFIED.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^INTEGER\\(ADR)
.LM 16;.F;.S 1

.I-8
ADR	IS AN INTEGER EXPRESSION GIVING THE ADDRESS OF THE
REQUIRED LOCATION.
.LM 8;.S 1
^THIS MAP ALLOWS THE USER TO READ OR WRITE DIRECTLY TO A LOCATION
IN STORE BY SPECIFYING THE ABSOLUTE ADDRESS IN 'ADR'.
.UC.F.P
<ASSOCIATED <PROCEDURES: BYTE INTEGER, SHORT INTEGER, REAL,
STRING, RECORD
.LC.P
<ERROR <CONDITIONS: ^IF THE VALUE OF 'ADR' LIES OUTSIDE THE CURRENT ADDRESSING SPACE THE
FOLLOWING FATAL ERROR WILL OCCUR:-
.NF.S
?<IMP: ^ILL ^MEM ^REF AT USER PC  'ADDR'

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INT PT\\
.INDEX ^^INT PT\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE INTEGRAL PART OF
THE GIVEN LONG REAL EXPRESSION.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^INT PT\\(A)
.LM 16;.F;.S 1

.I-8
A	IS A LONGREAL EXPRESSION 
.LM 8;.S 1
^THE INTEGRAL PART OF A IS RETURNED VIA <%RESULT.
.B
^THE INTEGRAL PART IS THE INTEGER THAT IS LESS THAN OR EQUAL TO THE
EXPRESSION. ^HENCE <INT <PT (-3.6) IS -4.
.UC.F.P
<ASSOCIATED <PROCEDURES: INT, FRAC PT, FLOAT
.LC.P
<ERROR <CONDITIONS: ^IF A IS LESS THAN 34359738367 OR GREATER THAN
-34359738368 THEN THE ^MONITOR GIVES THE FOLLOWING ERROR:-
.NF.S
?ARITHMETIC OVERFLOW AT USER <PC 'ADDR'


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^INTTOSTR\\
.INDEX ^^INTTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION GIVES THE VALUE OF THE GIVEN
INTEGER AS A STRING OF DECIMAL DIGITS.
.NF;.P
<SPEC:	%<EXTERNALSTRING(12)%FN ^^INTTOSTR\\(%<INTEGER N)
.P
<USE:	S=^^INTTOSTR\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION 
.LM 8;.S 1
^AN INTEGER EXPRESSION IS TREATED AS A DECIMAL NUMBER
AND RETURNED AS A SIGNED STRING OF DIGITS WITH NO LEADING SPACES
VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: OCTTOSTR, HEXTOSTR, BINTOSTR, SIXTOSTR, FSTOSTR, STRTOINT
.LC
.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^IOUUO\\
.INDEX ^^IOUUO\\
.P-8
<DEFINITION: ^THIS PREDICATE WILL PERFORM ONE OF THE ^^DEC\\SYSTEM-10 ^MONITOR CALLS
ASSOCIATED WITH INPUT AND OUTPUT, NAMELY <OPEN, <LOOKUP, <ENTER AND <RENAME.
.NF;.P
<SPEC:	%<SYSTEMPREDICATE ^^IOUUO\\(%<INTEGER OP,CHAN, %<NAME ADR)
.P
<USE:	<%IF ^^IOUUO\\(OP,CHAN,ADR) <%THEN . . .
.LM 16;.F;.S 1

.I-8
OP	IS AN INTEGER EXPRESSION GIVING THE OP-CODE OF THE REQUIRED
<I/O FUNCTION
.I-8
CHAN	IS AN INTEGER EXPRESSION GIVING THE PHYSICAL CHANNEL NUMBER
.I-8
ADR	IS THE NAME OF A VARIABLE CONTAINING THE ADDRESS OF THE
BLOCK OF INFORMATION THAT THE SPECIFIC FUNCTION REQUIRES.
.LM 8;.S 1
^THE PREDICATE HAS THE VALUE %<TRUE WHEN THE FUNCTION IS SUCESSFULLY
COMPLETED AND %<FALSE OTHERWISE. 
.UC.F.P
<ASSOCIATED <PROCEDURES: GET CHANNEL, FILOP, TAPOP, CLOSE, RELEASE
.LC.P
<ERROR <CONDITIONS: ^ANY OF THE ^MONITOR ERRORS ASSOCIATED WITH THE
GIVEN FUNCTION MAY OCCUR. ^FOR THE APPROPRIATE ACTION FOLLOWING A VALUE
OF %<FALSE THE USER WILL NEED TO CONSULT THE ^^DEC\\SYSTEM-10 <MONITOR
<CALLS ^MANUAL UNDER THE APPROPRIATE SECTION.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^IOWD\\
.INDEX ^^IOWD\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF A WORD GENERATED
BY AN EQIVALENT TO THE ^MACRO TYPE <IOWD PSEUDO-OP.
.NF;.P
<SPEC:	%<SYSTEMINTEGERFN ^^IOWD\\(%<INTEGER LEN, %<INTEGER<NAME ADR)
.P
<USE:	N=^^IOWD\\(LEN,ADR)
.LM 16;.F;.S 1

.I-8
LEN	IS AN INTEGER EXPRESSION GIVING THE LENGTH OF A BLOCK
.I-8
ADR	IS THE NAME OF AN INTEGER VARIABLE BEING THE ADDRESS OF THE START
OF THE BLOCK
.LM 8;.S 1
^THIS EQUIVALENT TO THE <MACRO PSEUDO-OP <IOWD HAS THE SAME FUNCTION.
^IT GENERATES THE FORM OF WORD REQUIRED BY <BLKI, <BLKO AND ALL FOUR
PUSHDOWN INSTRUCTIONS, FROM THE TWO PIECES OF INFORMATION SUPPLIED RELATING
TO THE LENGTH AND LOCATION OF A BLOCK OF DATA. ^THE GENERATED WORD IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: ADDR, INTEGER
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^IS FILE\\
.INDEX ^^IS FILE\\
.P-8
<DEFINITION: ^THIS PREDICATE TESTS TO SEE WHETHER THE SPECIFIED FILE EXISTS
OR NOT.
.NF;.P
<SPEC:	%<EXTERNALPREDICATE ^^IS FILE\\(%<STRING(255) SPEC)
.P
<USE:	<%IF ^^IS FILE\\(SPEC) <%THEN . . .
.LM 16;.F;.S 1

.I-8
SPEC	IS A STRING CONTAINING THE SPECIFICATION OF THE FILE
TO BE TESTED
.LM 8;.S 1
^THE PREDICATE HAS THE VALUE %<TRUE IF THE FILE EXISTS AND
%<FALSE IF IT DOES NOT, OR CANNOT BE ACCESSED FOR SOME REASON.
.UC.F.P
<ASSOCIATED <PROCEDURES: XISFILE, (X)COPY, (X)DELETE, (X)RENAME
.LC.P
<ERROR <CONDITIONS: ^THE ERRORS WHICH MAY OCCUR DURING THIS PREDICATE ARE:-
.F.S
^WHEN A SYNTAX ERROR IS FOUND IN THE STRING PARAMETER THE FOLLOWING
EVENT OCCURS:-
.NF.S
%<SIGNAL 10, 9, N, "^BAD FILE SPECIFICATION  'FILESPEC'"
.S
   (WHEN THE FULL <I/O CAPACITY IS BEING USED)
%<SIGNAL 2, 5, 0, "^ALL <I/O CHANNELS IN USE"
   OR (USUALLY WHEN A BAD DEVICE IS GIVEN)
%<SIGNAL 10, 6, 0, "^CANNOT OPEN DEVICE 'DEVICE'"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^JOBFILE\\
.INDEX ^^JOBFILE\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION GENERATES  SIX CHARACTER FILE NAME
OF THE FORM '<XXXNAM' WHERE XXX IS THE JOB NUMBER AS A THREE DIGIT NUMBER
AND '<NAM' IS A NAME GIVEN AS THE PARAMETER.
.NF;.P
<SPEC:	%<EXTERNALSTRING(6)%FN ^^JOBFILE\\(%<STRING(3) S)
.P
<USE:	ST=^^JOBFILE\\(S)
.LM 16;.F;.S 1

.I-8
S	IS A STRING FOR THE LAST PART OF THE FILE NAME
.LM 8;.S 1
^THERE ARE TIMES WHEN ONE WISHES TO CREATE FILES
HAVING UNIQUE FILE NAMES, DEPENDING ON WHICH JOB CREATED THEM.
^THIS FUNCTION CONCATENATES A THREE DIGIT STRING REPRESENTING THE JOB
NUMBER, TO THE STRING GIVEN TO THE FUNCTION. ^THE RESULTANT
JOB SPECIFIC NAME IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE INPUT, (X)DEFINE OUTPUT, (X)ISFILE,
(X)COPY, (X)DELETE, (X)RENAME
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^JOBNUM\\
.INDEX ^^JOBNUM\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE JOB NUMBER
OF THE USERS JOB.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^JOBNUM\\
.P
<USE:	N=^^JOBNUM\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE JOB NUMBER OF THE USERS CURRENT JOB IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: PPN, CPUTIME, TIME, JOBFILE
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^JSYS(0-4)\\
.INDEX ^^JSYS(0-4)\\
.P-8
<DEFINITION: ^THESE ROUTINES PERFORM <JSYS ^MONITOR CALLS ON THE
^^DEC\\SYSTEM-20 OPERATING SYSTEM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^JSYS(0-4)\\(%<INTEGER N, %<INTEGER<NAME AC1, ... AC4)
.P
<CALL:	^^JSYS(0-4)\\(N,AC1, ... AC4)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE <JSYS NUMBER
.I-8
AC1	IS THE NAME OF AN INTEGER VARIABLE CONTAINING THE
VALUE REQUIRED IN <AC1 BY THE <JSYS.
.I-8
AND SO ON UP TO
.I-8
AC4	IS THE NAME OF AN INTEGER VARIABLE CONTAINING THE VALUE REQUIRED IN <AC4 BY THE <JSYS.
.LM 8;.S 1
THE GIVEN <JSYS ^MONITOR CALL IS EXECUTED WITH THE APPROPRIATE
VALUES PROVIDED IN THE ARGUMENTS. ^THERE ARE FIVE ROUTINES PROVIDED, DEPENDING
ON THE NUMBER OF ARGUMENTS REQUIRED. <JSYS0, <JSYS1, <JSYS2, <JSYS3 AND <JSYS4.
^THEY ALL HAVE THE FIRST PARAMETER, BUT VARY IN THE NUMBER OF <%INTEGERNAME
ARGUMENTS WHICH THEY TAKE.
^THERE IS AN <INCLUDE FILE CALLED "<IMP:JSYS.INC" WHICH CONTAINS
SPECIFICATIONS FOR THEM.
.F.P.UC
<ASSOCIATED <PROCEDURES: 
.LC.P
<ERROR <CONDITIONS: ON AN ERROR RETURN FROM A <JSYS, THE FOLLOWING EVENT
IS CAUSED:-
.NF
%<SIGNAL 11, 0, N, "<JSYS ERROR RETURN"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^LENGTH\\
.INDEX ^^LENGTH\\
.P-8
<DEFINITION: ^THIS BYTEINTEGER FUNCTION GIVES LENGTH OF THE GIVEN STRING
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^LENGTH\\(S)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING WHOSE LENGTH IS REQUIRED
.LM 8;.S 1
^THE LENGTH OF THE STRING S IS RETURNED VIA <%RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: CHARNO, SUB STRING, TO STRING
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^MATCH\\
.INDEX ^^MATCH\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE STARTING
CHARACTER POSITION IN A NAMED STRING OF A MATCHING SUB-STRING.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^MATCH\\(%<STRINGNAME S, %<STRING(255) T)
.P
<USE:	N=^^MATCH\\(S,T)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING IN WHICH THE OCCURENCE OF A SUB-STRING IS TO
BE TESTED
.I-8
T	IS A STRING CONTAINING THE SUB-STRING WHOSE OCCURRENCE IS QUESTIONED
.LM 8;.S 1
^THE OCCURRENCE OF THE SUB-STRING 'T' IS TESTED IN THE STRING NAMED
IN 'S'. ^IF A MATCH IS FOUND THEN THE CHARACTER POSITION OF THE START OF
THIS MATCH IN 'S' IS RETURNED VIA %<RESULT.
.B
^IF NO MATCH IS FOUND THEN A VALUE OF ZERO IS RETURNED.
.UC.F.P
<ASSOCIATED <PROCEDURES: LENGTH, SUB STRING, TO STRING
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^MOD\\
.INDEX ^^MOD\\
.P-8
<DEFINITION: ^THIS LONGREAL FUNCTION GIVES THE VALUE OF THE MODULUS (I.E.
THE ABSOLUTE VALUE) OF THE QUANTITY GIVEN ON ENTRY.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	B=^^MOD\\(A)
.LM 16;.F;.S 1

.I-8
A	IS A LONGREAL EXPRESSION 
.LM 8;.S 1
^THE LONG REAL VALUE OF THE MODULUS OF A IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: IMOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^NEWLINE\\
.INDEX ^^NEWLINE\\
.P-8
<DEFINITION: ^THIS ROUTINE CAUSES A NEWLINE (CR-LF) SEQUENCE TO BE OUTPUT
ON THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^NEWLINE\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^A NEWLINE IS SENT TO THE OUTPUT STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: NEWLINES, NEWPAGE, SPACE, SPACES
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^NEWLINES\\
.INDEX ^^NEWLINES\\
.P-8
<DEFINITION: ^THIS ROUTINE CAUSES A SPECIFIED NUMBER OF NEWLINE (CR-LF)
CHARACTER SEQUENCES TO BE OUTPUT ON THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^NEWLINES\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION SPECIFYING THE NUMBER OF NEWLINES
REQUIRED
.LM 8;.S 1
'N' NEWLINE CHARACTER  SEQUENCES ARE SENT TO THE OUTPUT STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: NEWLINE, NEWPAGE, SPACE, SPACES
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^NEWPAGE\\
.INDEX ^^NEWPAGE\\
.P-8
<DEFINITION: ^THIS ROUTINE CAUSES THE 'FORM-FEED' CHARACTER TO BE OUTPUT
TO THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^NEWPAGE\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
A 'FORM-FEED' CHARACTER IS SENT TO THE CURRENT OUTPUT STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: NEWLINE, NEWLINES, SPACE, SPACES
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^NEXT ITEM\\
.INDEX ^^NEXT ITEM\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS THE NEXT SYMBOL FROM THE
CURRENTLY SELECTED INPUT STREAM, AS A ONE-CHARACTER STRING.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	S=^^NEXT ITEM\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^A STRING OF LENGTH ONE, CONSISTING OF THE NEXT <ASCII CHARACTER ON
THE CURRENT INPUT STREAM IS RETURNED VIA %<RESULT.
.B
^THE FILE POINTERS ARE NOT AFFECTED
AND THE CHARACTER MAY BE READ AGAIN BY <NEXT <ITEM, <READ <ITEM,
<NEXT <SYMBOL OR <READ <SYMBOL.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ ITEM, READ SYMBOL, NEXT SYMBOL, SKIP SYMBOL
.LC.P
<ERROR <CONDITIONS: ^SEE <READ <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^NEXT SYMBOL\\
.INDEX ^^NEXT SYMBOL\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE NEXT SYMBOL
ON THE CURRENTLY SELECTED INPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^NEXT SYMBOL\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE VALUE OF THE NEXT SYMBOL ON THE CURRENT INPUT STREAM IS RETURNED VIA
%<RESULT.
.B
^THE FILE POINTERS ARE NOT ALTERED, SO THE SAME SYMBOL MAY BE OBTAINED
FROM A SUBSEQUENT CALL OF <NEXT <SYMBOL OR <READ <SYMBOL.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ SYMBOL, SKIP SYMBOL, READ ITEM, NEXT ITEM
.LC.P
<ERROR <CONDITIONS: ^SEE <READ <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^NL\\
.INDEX ^^NL\\
.P-8
<DEFINITION: ^THIS INTEGER CONSTANT GIVES THE INTERNAL <ASCII CODE VALUE
FOR THE NEWLINE CHARACTER.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^NL\\
.F.LM 8;.S 1
^THE NUMERICAL VALUE OF THE NEWLINE (LF) CHARACTER IS GIVEN.
.UC.F.P
<ASSOCIATED <CONSTANTS: SP, ESC, TAB, FF
.LC

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^NO ECHO\\
.INDEX ^^NO ECHO\\
.P-8
<DEFINITION: ^THIS ROUTINE HAS THE EFFECT OF TURNING OFF THE ECHOING OF
CHARACTERS FROM THE ^^DEC\\SYSTEM-10 TO THE USERS CONSOLE.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^NO ECHO\\
.P
<CALL:	^^NO ECHO\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^CHARACTERS TYPED ON THE USERS CONSOLE ARE NOT ECHOED AFTER
THIS ROUTINE IS CALLED. ^ECHOING MAY BE RE-ENABLED
BY CALLING THE ROUTINE <ECHO.
.UC.F.P
<ASSOCIATED <PROCEDURES: ECHO
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^OCTTOSTR\\
.INDEX ^^OCTTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS A STRING CONTAINING THE
REPRESENTION OF AN UNSIGNED OCTAL INTEGER AS A STRING OF DIGITS.
.NF;.P
<SPEC:	%<EXTERNALSTRING(12)%FN ^^OCTTOSTR\\(%<INTEGER N)
.P
<USE:	S=^^OCTTOSTR\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION  REPRESENTING AN OCTAL NUMBER
.LM 8;.S 1
^AN INTEGER EXPRESSION IS TREATED AS AN UNSIGNED OCTAL NUMBER
AND RETURNED AS A STRING OF UP TO 12 DIGITS
WITHOUT LEADING ZEROES OR SPACES VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ OCT, WRITE OCT, STRTOOCT
.LC.P
<ERROR <CONDITIONS: ^NONE


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^OPEN DA\\
.INDEX ^^OPEN DA\\
.P-8
<DEFINITION: ^THIS ROUTINE OPENS A DIRECT ACCESS CHANNEL FOR A SPECIFIED
FILE ON A GIVEN CHANNEL NUMBER.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^OPEN DA\\(%<INTEGER N, %<STRING(255) SPEC)
.P
<CALL:	^^OPEN DA\\(N,SPEC)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE LOGICAL CHANNEL NUMBER TO BE
ASSOCIATED WITH THE SPECIFIED FILE. ^IT MUST LIE IN THE RANGE 1 TO 15.
.I-8
SPEC	IS A STRING CONTAINING A ^^DEC\\SYSTEM-10 STYLE FILE
SPECIFICATION FOR THE FILE TO BE OPENED
.LM 8;.S 1
^THE SPECIFIED FILE IS OPENED FOR BOTH READING OR WRITING AND
IS ASSOCIATED WITH THE GIVEN LOGICAL CHANNEL NUMBER.
.UC.F.P
<ASSOCIATED <PROCEDURES: XOPEN DA, READ DA, WRITE DA, CLOSE DA
.LC.P
<ERROR <CONDITIONS: ^THE MOST COMMON ERROR IS:-
.NF.S
%<SIGNAL 10, 21, ERR, "^CANNOT <OPEN <DA/SQ FILE 'FILESPEC' ERROR: 'ERR'"
.F
^WHERE ERR IS AN ERROR CODE LISTED IN APPENDIX ^E OF THE ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL.
.NF.S
^OR ON A SYNTAX ERROR IN THE FILE SPECIFICATION
.S
%<SIGNAL 10, 9, 0, "^BAD FILE SPECIFICATION:- 'FILESPEC'"
.S
^OTHER POSSIBLE ERRORS ARE:-
%<SIGNAL 10, 20, 0, "^NOT A <DA OR <SQ DEVICE 'DEV'"
%<SIGNAL 10, 22, N, "^^OPEN\\ING ALREADY OPEN <DA/SQ CHANNEL FOR 'FILESPEC'"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^OPEN SQ\\
.INDEX ^^OPEN SQ\\
.P-8
<DEFINITION: ^THIS ROUTINE OPENS A SEQUENTIAL FILE CHANNEL FOR A SPECIFIED
FILE ON A GIVEN CHANNEL NUMBER.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^OPEN SQ\\(%<INTEGER N, %<STRING(255) SPEC)
.P
<CALL:	^^OPEN SQ\\(N,SPEC)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE LOGICAL CHANNEL NUMBER TO BE
ASSOCIATED WITH THE SPECIFIED FILE. ^IT MUST LIE IN THE RANGE 1 TO 15.
.I-8
SPEC	IS A STRING CONTAINING A FULL ^^DEC\\SYSTEM-10 STYLE FILE
SPECIFICATION FOR THE FILE TO BE OPENED
.LM 8;.S 1
^THE SPECIFIED FILE IS OPENED FOR EITHER READING OR WRITING AND
IS ASSOCIATED WITH THE GIVEN LOGICAL CHANNEL NUMBER.
^BUT NOTE THAT BOTH OPTIONS OF READING AND WRITING MAY NOT BE EXERCISED
AND THAT THE FIRST CALL OF EITHER <READ <SQ OR <WRITE <SQ
DETERMINES THE SUBSEQUENT TYPE OF ACCESS.
.UC.F.P
<ASSOCIATED <PROCEDURES: XOPEN SQ, READ SQ, WRITE SQ
.LC.P
<ERROR <CONDITIONS: ^SEE <OPEN <DA.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^OUTDEV\\
.INDEX ^^OUTDEV\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE DEVICE TYPE
ASSOCIATED WITH THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^OUTDEV\\
.P
<USE:	N=^^OUTDEV\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^A NUMBER INDICATING THE GENERIC TYPE OF THE DEVICE ASSOCIATED
WITH THE CURRENT OUTPUT STREAM IS RETURNED VIA %<RESULT.
.B
^BELOW IS LISTED THE CURRENT RANGE OF POSSIBLE VALUES AND THEIR MEANINGS.
.NF.S.TS 28 34
%<CONSTINTEGER ^NAME	^VALUE	^DEVICE ^TYPE
.S
   <TMPDEV   = -2  A <TMPCOR FILE RESIDING IN CORE
   <NULDEV   = -1  A NULL DEVICE
            (DEFAULT VALUE FOR UNASSIGNED STREAMS)
   <DSKDEV   =  0  A ^DISK DEVICE
   <DTADEV   =  1  A <DEC TAPE
   <MTADEV   =  2  A MAGNETIC TAPE
   <TTYDEV   =  3  A TELETYPE
   <XDSKDEV _>=  4  ANY OTHER ^DISK-TYPE DEVICE
.TS 8 16
.UC.F.P
<ASSOCIATED <PROCEDURES: OUTSTREAM, SELECT OUTPUT, OUTSTATUS
.LC.P
<ERROR <CONDITIONS: ^NONE


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^OUTPUT\\
.INDEX ^^OUTPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE CAUSES THE CURRENT OUTPUT BUFFER ON THE CURRENTLY SELECTED
OUTPUT STREAM TO BE SENT.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^OUTPUT\\
.P
<CALL:	^^OUTPUT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THIS ROUTINE PERFORMS THE ^^DEC\\SYSTEM-10 ^MONITOR <OUT <UUO
WHICH CAUSES THE CONTENTS OF THE CURRENT OUTPUT BUFFER TO BE FORCED OUT
ON THE CURRENTLY SELECTED OUTPUT STREAM.
.S
^WHEN CALLED ON A TELETYPE OR NULL STREAM, NO ACTION IS PERFORMED.
.F.P.UC
<ASSOCIATED <PROCEDURES: INPUT, USETI, USETO, READ SYMBOL, PRINT SYMBOL
.LC.P
<ERROR <CONDITIONS: SEE <PRINT SYMBOL

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^OUTSTATUS\\
.INDEX ^^OUTSTATUS\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE STATUS WORD
FOR THE DEVICE ASSOCIATED WITH THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^OUTSTATUS\\
.P
<USE:	N=^^OUTSTATUS\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
EACH DEVICE HAS ASSOCIATED WITH IT A SET OF STATUS BITS, WHICH
THIS FUNCTION READS AND RETURNS VIA %<RESULT.
^THE MEANING OF THESE BITS IS DEVICE DEPENDENT AND ARE DESCRIBED IN
THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL.
.S
^ZERO IS RETURNED IF THE CURRENTLY SELECTED OUTPUT STREAM IS THE NUL DEVICE OR THE TELETYPE.
.UC.F.P
<ASSOCIATED <PROCEDURES: INSTATUS, GETSTS, SETSTS, OUTDEV, OUTSTREAM
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^OUTSTREAM\\
.INDEX ^^OUTSTREAM\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE NUMBER OF THE CURRENTLY SELECTED
OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^OUTSTREAM\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE NUMBER (BETWEEN 0 AND 15) OF THE CURRENTLY SELECTED OUTPUT STREAM IS
RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: OUTDEV, SELECT OUTPUT, OUTSTATUS
.LC.P
<ERROR <CONDITIONS: ^NONE


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^PI\\
.INDEX ^^PI\\
.P-8
<DEFINITION: ^THIS LONGREAL CONSTANT GIVES THE VALUE OF PI.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	R=^^PI\\
.F.LM 8;.S 1
^THE VALUE OF PI (3.141592653589793238) IS GIVEN.
.LC

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^PPN\\
.INDEX ^^PPN\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE PROJECT-PROGRAMMER
NUMBER ASSOCIATED WITH THE CURRENT JOB.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^PPN\\
.P
<USE:	P=^^PPN\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE PROJECT-PROGRAMMER NUMBER ASSOCIATED WITH THE CURRENT JOB IS RETURNED
VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: JOBNUM, CPUTIME, TIME
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^PRINT\\
.INDEX ^^PRINT\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS THE VALUE OF THE SPECIFIED LONG REAL
NUMBER ON THE CURRENTLY SELECTED OUTPUT STREAM IN FIXED-POINT FORM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^PRINT\\(X,N,M)
.LM 16;.F;.S 1

.I-8
X	IS A LONGREAL EXPRESSION WHICH IS TO BE OUTPUT
.I-8
N	IS AN INTEGER EXPRESSION INDICATING HOW MANY PRINTING POSITIONS,
INCLUDING THE SIGN, ARE TO BE OUTPUT BEFORE THE DECIMAL POINT
.I-8
M	IS AN INTEGER EXPRESSION INDICATING HOW MANY DIGITS TO
BE OUTPUT AFTER THE DECIMAL POINT
.LM 8;.S 1
X IS PRINTED ON THE CURRENT OUTPUT STREAM IN FIXED-POINT FORM, WITH
'N' PRINTING POSITIONS BEFORE AND 'M' DIGITS AFTER THE DECIMAL POINT.
^THE DIGITS BEFORE THE DECIMAL POINT ARE RIGHT JUSTIFIED AND LEADING
ZEROS ARE REPLACED BY SPACES.
^THE POSITIVE SIGN IS REPRESENTED BY A SPACE.
.B
^IF MORE THAN N SIGNIFICANT DIGITS OCCUR BEFORE THE DECIMAL POINT, THESE
WILL BE PRINTED AND THE REST OF THE DIGITS WILL BE DISPLACED TO THE RIGHT.
^IF 'N' IS ZERO, NO LEADING SPACES OR POSITIVE SIGN WILL BE OUTPUT.
.S
^IF 'X' IS _> 34359738367 THEN THE ROUTINE ^^PRINT FL\\(X,N+M) WILL BE USED.
.UC.F.P
<ASSOCIATED <PROCEDURES: WRITE, PRINT FL
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^PRINT FL\\
.INDEX ^^PRINT FL\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS THE SPECIFIED LONG REAL VALUE  ON
THE CURRENTLY SELECTED OUTPUT STREAM IN FLOATING-POINT FORM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^PRINT FL\\(X,N)
.LM 16;.F;.S 1

.I-8
X	IS A LONGREAL EXPRESSION WHICH IS TO BE PRINTED OUT
.I-8
N	IS AN INTEGER EXPRESSION INDICATING THE NUMBER OF DIGITS TO BE
PRINTED AFTER THE DECIMAL POINT
.LM 8;.S 1
^A FLOATING-POINT LONG REAL NUMBER IS PRINTED OUT USING N+7
PRINTING POSITIONS, WITH N DIGITS AFTER THE DECIMAL POINT.
^THE NUMBER IS STANDARDISED IN THE RANGE 1_<=X_<=10.
.NF
E.G.   ^^PRINT FL\\(PI,5)  GIVES 3.14159@ 0
.UC.F.P
<ASSOCIATED <PROCEDURES: WRITE, PRINT
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^PRINT STRING\\
.INDEX ^^PRINT STRING\\
.P-8
<DEFINITION: ^THIS ROUTINE OUTPUTS A STRING ON THE CURRENTLY SELECTED
OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^PRINT STRING\\(S)
.LM 16;.F;.S 1

.I-8
S	IS A STRING EXPRESSION TO BE OUTPUT
.LM 8;.S 1
^THE STRING S IS PRINTED ON THE CURRENT OUTPUT STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: PRINT SYMBOL, REPORT, PROMPT
.LC.P
<ERROR <CONDITIONS: ^^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^PRINT SYMBOL\\
.INDEX ^^PRINT SYMBOL\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS THE SYMBOL WHOSE VALUE IS GIVEN, ON THE
CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^PRINT SYMBOL\\(S)
.LM 16;.F;.S 1

.I-8
S	IS AN INTEGER EXPRESSION BEING THE VALUE OF THE SYMBOL TO
BE PRINTED
.LM 8;.S 1
^THE SYMBOL WHOSE VALUE IS GIVEN IS OUTPUT TO THE CURRENT
OUTPUT STREAM. ^NOTE THAT NUMBER OF BITS ACTUALLY OUTPUT DEPEND ON THE
MODE OF THE OUTPUT STREAM (E.G. ASCII = 7,  BINARY = 36 ).
.UC.F.P
<ASSOCIATED <PROCEDURES: SPACE, NEWLINE, NEWPAGE
.LC.P
<ERROR <CONDITIONS: ^IF AN ERROR OCCURS DURING OUTPUT, THE FOLLOWING EVENT OCCURS:-
.NF.S
%<SIGNAL 4, 1, STATUS, "<I/O TRANSMISSION ERROR"
.F.S
WHERE 'STATUS' IS A DEVICE DEPENDENT STATUS WORD WHOSE MEANING
IS DESCRIBED IN THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS
^MANUAL UNDER THE SECTION DEALING WITH THE PARTICULAR DEVICE IN QUESTION.
^IT SHOULD BE NOTED THAT THE STATUS WILL BE OUTPUT AS A DECIMAL NUMBER BUT SHOULD
BE INTERPRETED IN OCTAL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^PROMPT\\
.INDEX ^^PROMPT\\
.P-8
<DEFINITION: ^THIS ROUTINE OUTPUTS THE GIVEN PROMPT STRING TO THE
USERS CONSOLE IF THE USERS CONSOLE IS ALSO SELECTED AS THE CURRENT INPUT
STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^PROMPT\\(%<STRING(255) PR)
.P
<CALL:	^^PROMPT\\(PR)
.LM 16;.F;.S 1

.I-8
PR	IS A STRING TO BE OUTPUT AS A PROMPT
.LM 8;.S 1
^THIS ROUTINE ALLOWS THE USER TO OUTPUT A PROMPT FOR INPUT WHICH
WILL ONLY BE OUTPUT IF IT IS RELEVANT, THAT IS IF THE INPUT IS COMING
FROM THE USERS CONSOLE.
.UC.F.P
<ASSOCIATED <PROCEDURES: INPUT PENDING, PRINT STRING, REPORT
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RAD50\\
.INDEX ^^RAD50\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE INTEGER VALUE OF THE
^^DEC\\SYSTEM-10 ^RADIX-50 REPRENTATION OF A SIX CHARACTER STRING.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^RAD50\\(%<STRING(6) S)
.P
<USE:	N=^^RAD50\\(S)
.LM 16;.F;.S 1

.I-8
S	IS A SIX CHARACTER STRING CONTAINING THE WORD TO BE ENCODED
.LM 8;.S 1
^THE ^RADIX-50 REPRESENTATION ALLOWS UP TO SIX CHARACTERS TO BE
REPRESENTED BY A SINGLE INTEGER WHICH IS HERE RETURNED VIA %<RESULT.
.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RCALL (0-9)\\
.INDEX ^^RCALL (0-9)\\
.P-8
<DEFINITION: ^THESE REAL FUNCTIONS CALL THE <FORTRAN FUNCTION NAMED AS
THE FIRST PARAMETER WITH THE NECESSARY ARGUMENTS GIVEN AS THE SUCCEEDING PARAMETERS.
.NF;.P
<SPEC:	%<EXTERNALREALFN ^^RCALL (0-9)\\(%<<NAME RFN, %<<NAME ARG1, .. %<<NAME ARG9)
.P
<USE:	^^R = RCALL (0-9)\\(RFN,ARG1, .. ARG9)
.LM 16;.F;.S 1

.I-8
RFN	IS THE NAME OF A EXTERNAL <FORTRAN REAL FUNCTION.
^FOR EASE OF HANDLING, IT IS REQUIRED THAT THE SPEC GIVEN
IN THE <IMP PROGRAM IS THAT OF %<EXTERNALINTEGERSPEC.
.I-8
ARG1	IS THE NAME OF THE FIRST ARGUMENT IF ONE IS NEEDED
.I-8
AND SO ON UP TO
.I-8
ARG9	IS THE NAME OF THE NINTH ARGUMENT IF ONE IS NEEDED
.LM 8;.S 1
THERE ARE A SET OF <IMP REAL FUNCTIONS CALLED <RCALL0, <RCALL1, ETC.
UP TO <RCALL9. ^THE NUMBER REFERS TO THE NUMBER OF ARGUMENTS
WHICH THE <FORTRAN FUNCTION REQUIRES. ^SEE THE FOLLOWING EXAMPLE:-
.NF.UC.S.LIT
%BEGIN
%EXTERNALINTEGERSPEC FNOARG
      !A FORTRAN FUNCTION WITH NO ARGUMENTS
%EXTERNALINTEGERSPEC F3ARGS
      !A FORTRAN FUNCTION WITH THREE ARGUMENTS

%EXTERNALREALFNSPEC RCALL0(%NAME FN)
%EXTERNALREALFNSPEC RCALL3(%NAME FN, %NAME A,B,C)

%INTEGER ARG1,ARG2,ARG3
%REAL R,P

ARG1=1; ARG2=2; ARG3=3
R = RCALL0(FNOARG);                 !CALL FORTRAN
P = RCALL3(F3ARGS,ARG1,ARG2,ARG3);  !CALL FORTRAN
PRINT(P,2,3) %IF R < 0.0

%ENDOFPROGRAM
.END LITERAL
.LC.F.S
^THE %<INCLUDE FILE "<IMP:FORTRA.INC" CONTAINS ALL THE SPECS FOR THE <RCALL FUNCTIONS.
.UC.F.P
<ASSOCIATED <PROCEDURES: CALL (0-9), ICALL (0-9)
.LC.P
<ERROR <CONDITIONS: ^DEPENDING ON THE <FORTRAN FUNCTION CALLED.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ\\
.INDEX ^^READ\\
.P-8
<DEFINITION: ^THIS ROUTINE READS DATA OF THE APPROPRIATE TYPE AS SPECIFIED BY THE
TYPE OF THE NAME TYPE PARAMETER, FROM THE CURRENTLY SELECTED INPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^READ\\(A)
.LM 16;.F;.S 1

.I-8
A	IS THE NAME OF ANY TYPE EXCEPT RECORDS, WHICH DETERMINES THE NATURE
OF THE READING PROCEDURE USED
.LM 8;.S 1
^THIS ROUTINE MAY RESULT IN NUMERICAL DATA BEING READ INTO A <BYTE,
<SHORT OR FULL LENGTH <INTEGER, OR A <REAL OF <LONG <REAL VARIABLE OR
INTO A <STRING, DEPENDING ON THE TYPE OF THE %<NAME PARAMETER GIVEN WHEN
CALLED.
.S
^WHEN READING NUMBERS, CHARACTERS ARE READ UP TO, BUT NOT INCLUDING
THE FIRST NON-NUMERIC CHARACTER. ^THUS READING AN INTEGER FROM 12.34
WOULD RETURN THE INTEGER 12 AND LEAVE THE DECIMAL POINT AS THE NEXT
CHARACTER TO BE READ.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ STRING, READ TEXT, READ OCT, READ HEX, WRITE, PRINT, PRINT FL
.LC.P
<ERROR <CONDITIONS: ^AS WELL AS THE ERRORS WHICH MAY RESULT FROM THE <READSYMBOL ROUTINE
(^SEE <READ <SYMBOL), THE FOLLOWING MAY ALSO OCCUR, DEPENDING ON THE
TYPE OF DATA BEING READ.
.NF.S
%<SIGNAL 1, 1, 0, "^INTEGER TOO LARGE"
%<SIGNAL 1, 1, N, "^INTEGER TOO LARGE FOR SHORT OR BYTE INTEGER"
%<SIGNAL 3, 1, SYMBOL, "^NUMBER NOT FOUND"
%<SIGNAL 3, 1, SYMBOL, "^INTEGER NOT FOUND"
%<SIGNAL 3, 2, SYMBOL, "^NO OPENING STRING QUOTE"
    WHERE 'SYMBOL' IS THE VALUE OF THE FIRST ILLEGAL SYMBOL FOUND.
%<SIGNAL 5, 6, TYPE, "^ILLEGAL %<NAME TYPE PARAMETER"
%<SIGNAL 6, 1, 0, "^STRING CAPACITY EXCEEDED"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ DA\\
.INDEX ^^READ DA\\
.P-8
<DEFINITION: ^THIS ROUTINE READS DATA FROM THE FILE ASSOCIATED WITH THE
GIVEN LOGICAL CHANNEL NUMBER INTO AN SPECIFIED AREA, STARTING
FROM A SPECIFIED BLOCK OF THE FILE.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^READ DA\\(%<INTEGER N, %<INTEGER<NAME BLOCK, %<NAME BEGIN,END)
.P
<CALL:	^^READ DA\\(N,BLOCK,BEGIN,END)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE LOGICAL CHANNEL NUMBER AND LYING
IN THE RANGE 1 TO 15
.I-8
BLOCK	IS THE NAME OF AN INTEGER VARIABLE WHICH ON ENTRY SPECIFIES THE
BLOCK NUMBER AT WHICH READING IS TO START AND ON EXIT CONTAINS THE BLOCK
NUMBER OF THE LAST BLOCK READ FROM
.I-8
BEGIN	IS THE NAME OF A VARIABLE SPECIFYING THE FIRST DATA ITEM INTO
WHICH DATA IS TO BE READ
.I-8
END	IS THE NAME OF A VARIABLE SPECIFYING THE LAST DAT ITEM INTO
WHICH DATA IS TO BE READ
.LM 8;.S 1
^DATA FROM THE FILE ASSOCIATED WITH A GIVEN LOGICAL CHANNEL
NUMBER N, STARTING AT BLOCK BLOCK IS WRITTEN INTO AN AREA STARTING AT
BEGIN AND FINISHING AT END.
^THIS AREA IS NORMALLY AN ARRAY BUT MAY BE ANY TYPE OF DATA ITEM
INCLUDING RECORDS.
.S 1
^DATA IS STORED ON THE EXTERNAL MEDIUM IN MULTIPLES OF FIXED LENGTH
BLOCKS (FOR DISK IT IS 200 OCTAL WORDS). ^INCOMPLETE BLOCKS READ ARE FILLED
OUT WITH WORDS CONTAINING ZERO. ^IT IS THE USERS RESPONSIBILITY, WHEN
READING, TO KNOW THE STARTING BLOCK AND LENGTH OF DATA RECORD TO BE READ,
AS READING ALWAYS STARTS AT THE HEAD OF THE BLOCK
SPECIFIED AND CONTINUES UNTIL THE REQUIRED DATA AREA IS FILLED
OR THE END-OF-FILE CONDITION OCCURS (%<EVENT 9).
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)OPEN DA, WRITE DA, CLOSE DA
.LC.P
<ERROR <CONDITIONS: ^THE FOLLOWING EVENTS MAY OCCUR:-
.NF.S
%<SIGNAL 20, 23, CHAN, "^READ/WRITE TO ILLEGAL <DA/SQ CHANNEL"
%<SIGNAL 20, 23, CHAN, "^READ/WRITE TO <DA/SQ CHANNEL BEFORE ^^OPEN\\ING IT"
%<SIGNAL 20, 24, CHAN, "^ACCESSING <DA CHANNEL BY <SQ ROUTINE OR VICE VERSA"
%<SIGNAL 20, 25, 0, "^STORAGE AREA FOR <DA/SQ ROUTINE INSIDE OUT"
%<SIGNAL 20, 26, BLOCK, "^ILLEGAL BLOCK NUMBER FOR <DA READ/WRITE ROUTINE"
%<SIGNAL 9, 0, CHAN, "<EOF ON <DA OR <SQ CHANNEL"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ FS\\
.INDEX ^^READ FS\\
.P-8
<DEFINITION: ^THIS ROUTINE READS A ^^DEC\\SYSTEM-10 FILE SPECIFICATION FROM
THE CURRENTLY SELECTED INPUT STREAM AND PARSES IT INTO A FILE SPECIFICATION RECORD.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^READ FS\\(%<RECORD(FILESPEC)%<NAME FS)
.P
<CALL:	^^READ FS\\(FS)
.LM 16;.F;.S 1

.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD WHICH WILL CONTAIN
THE SPECIFICATION READ FROM THE INPUT STREAM
.LM 8;.S 1
^A ^^DEC\\SYSTEM-10 TYPE FILE SPECIFICATION IS READ FROM THE CURRENT
INPUT STREAM AND PARSED INTO THE FORM A FILE SPECIFICATION RECORD (SEE
SECTION 3).
.B
.UC.F.P
<ASSOCIATED <PROCEDURES: STRTOFS, FSTOSTR, WRITE FS, DEFAULT
.LC.P
<ERROR <CONDITIONS: ^IF A SYNTAX ERROR IS FOUND IN THE SPECIFICATION,
THE FOLLOWING EVENT IS CAUSED:-
.NF.S
%<SIGNAL 10, 9, 0, "^BAD FILE SPEC:-  'FILESPEC'"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ HEX\\
.INDEX ^^READ HEX\\
.P-8
<DEFINITION: ^THIS ROUTINE READS AN HEXIDECIMAL NUMBER FROM THE CURRENTLY
SELECTED INPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^READ HEX\\(%<INTEGER<NAME N)
.P
<CALL:	^^READ HEX\\(N)
.LM 16;.F;.S 1

.I-8
N	IS THE NAME OF AN INTEGER VARIABLE IN WHICH AN HEXIDECIMAL NUMBER
IS RETURNED
.LM 8;.S 1
^A SIGNED HEX NUMBER IS READ FROM THE CURRENT INPUT STREAM AND RETURNED
IN 'N'.
.S
^IF A NON-LEADING NON-HEXIDECIMAL CHARACTER IS FOUND IN A
SERIES OF DIGITS THEN THE NUMBER READ WILL ONLY INCLUDE THE DIGITS UP
TO THAT POINT.
.S
E.G.   A NUMBER  '-<1FA73J5' WILL GIVE AN HEXIDECIMAL NUMBER '-<1FA73' AND
THE NEXT CHARACTER AVAILABLE FOR INPUT WILL BE '<J'
.UC.F.P
<ASSOCIATED <PROCEDURES: HEXTOSTR, WRITE HEX, READ OCT
.LC.P
<ERROR <CONDITIONS: ^IF A LEADING NON-HEXIDECIMAL CHARACTER IS FOUND THE
FOLLOWING EVENT OCCURS:-
.NF.S
%<SIGNAL 3, 1, SYMBOL, "^HEX INTEGER NOT FOUND"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ ITEM\\
.INDEX ^^READ ITEM\\
.P-8
<DEFINITION: ^THIS ROUTINE READS THE NEXT SYMBOL FROM THE CURRENTLY SELECTED
INPUT STREAM INTO A SINGLE-CHARACTER STRING.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^READ ITEM\\(S)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING IN WHICH THE SYMBOL IS STORED
.LM 8;.S 1
^THE NEXT SYMBOL ON THE CURRENT INPUT STREAM IS CONSTRUCTED INTO
A ONE-CHARACTER STRING  AND RETURNED IN S.
.UC.F.P
<ASSOCIATED <PROCEDURES: NEXT ITEM, NEXT SYMBOL, READ SYMBOL, SKIP SYMBOL
.LC.P
<ERROR <CONDITIONS: ^SEE <READ <SYMBOL.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ OCTAL\\
.INDEX ^^READ OCTAL\\
.P-8
<DEFINITION: ^THIS ROUTINE READS AN OCTAL NUMBER FROM THE CURRENTLY
SELECTED INPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^READ OCTAL\\(%<INTEGER<NAME N)
.P
<CALL:	^^READ OCTAL\\(N)
.LM 16;.F;.S 1

.I-8
N	IS THE NAME OF AN INTEGER VARIABLE IN WHICH AN OCTAL NUMBER
IS RETURNED
.LM 8;.S 1
^A SIGNED OCTAL NUMBER IS READ FROM THE CURRENT INPUT STREAM AND RETURNED
IN 'N'.
.S
^IF A NON-LEADING NON-OCTAL DIGIT IS FOUND IN A
SERIES OF DIGITS THEN THE NUMBER READ WILL ONLY INCLUDE THE DIGITS UP
TO THAT POINT.
.S
E.G.   A NUMBER  '-1067389' WILL GIVE AN OCTAL NUMBER '-10673' AND
THE NEXT CHARACTER AVAILABLE FOR INPUT WILL BE '8'
.UC.F.P
<ASSOCIATED <PROCEDURES: OCTTOSTR, WRITE OCT, READ HEX
.LC.F.P
<ERROR <CONDITIONS: ^IF A LEADING NON-OCTAL DIGIT IS FOUND THE FOLLOWING EVENT OCCURS:-
.S
%<SIGNAL 3, 1, SYMBOL, "^OCTAL INTEGER NOT FOUND"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ PPN\\
.INDEX ^^READ PPN\\
.P-8
<DEFINITION: ^THIS ROUTINE READS A PAIR OF OCTAL NUMBERS SEPARATED BY A
COMMA FROM THE CURRENTLY SELECTED INPUT STREAM AND RETURNS AN INTEGER
HAVING THE FIRST NUMBER IN THE LEFT HALF
AND THE SECOND NUMBER IN THE RIGHT HALF.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^READ PPN\\(%<INTEGER<NAME PPN)
.P
<CALL:	^^READ PPN\\(PPN)
.LM 16;.F;.S 1

.I-8
PPN	IS THE NAME OF AN INTEGER VARIABLE IN WHICH THE PAIR OF
OCTAL NUMBERS ARE RETURNED
.LM 8;.S 1
^A PAIR OF OCTAL NUMBERS SEPARATED BY A COMMA ARE READ FROM THE
THE CURRENT INPUT STREAM.  ^AN INTEGER IS RETURNED WITH THE
FIRST NUMBER IN THE LEFT HALF AND THE SECOND NUMBER IN THE RIGHT HALF.
.UC.F.P
<ASSOCIATED <PROCEDURES: WRITE PPN, READ OCTAL, WRITE OCTAL
.LC.P
<ERROR <CONDITIONS: ^IF NO COMMA IS FOUND AFTER THE FIRST NUMBER ONLY
THAT FIRST NUMBER IS READ.  ^OTHERWISE SEE <READ <OCTAL
.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ SQ\\
.INDEX ^^READ SQ\\
.P-8
<DEFINITION: ^THIS ROUTINE READS DATA FROM THE FILE ASSOCIATED WITH THE
GIVEN LOGICAL CHANNEL NUMBER INTO A SPECIFIED AREA.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^READ SQ\\(%<INTEGER N, %<NAME BEGIN,END)
.P
<CALL:	^^READ SQ\\(N,BEGIN,END)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE LOGICAL CHANNEL NUMBER AND LYING
IN THE RANGE 1 TO 15
.I-8
BEGIN	IS THE NAME OF A VARIABLE SPECIFYING THE FIRST DATA ITEM INTO
WHICH DATA IS TO BE READ
.I-8
END	IS THE NAME OF A VARIABLE SPECIFYING THE LAST DATA ITEM INTO
WHICH DATA IS TO BE READ
.LM 8;.S 1
^DATA FROM THE FILE ASSOCIATED WITH A GIVEN LOGICAL CHANNEL
NUMBER N IS READ INTO AN AREA STARTING AT
BEGIN AND FINISHING AT END.
^THIS AREA IS NORMALLY AN ARRAY BUT MAY BE ANY TYPE OF DATA ITEM
INCLUDING RECORDS.
^THE FIRST CALL OF THIS ROUTINE AFTER A SEQUENTIAL CHANNEL HAS BEEN
OPENED DETERMINES THAT ALL SUBSEQUENT ACCESS ON THAT CHANNEL MUST BE
FOR READING UNLESS THE CHANNEL IS RE-OPENED.
.S 1
^DATA IS STORED ON THE EXTERNAL MEDIUM AS AN UNSTRUCTURED SEQUENCE
OF WORDS. ^IT IS THE USERS RESPONSIBILITY TO KNOW THE NATURE OF THE
DATA STORED BECAUSE ONCE READ, DATA CANNOT BE REREAD UNLESS THE CHANNEL
IS RE-OPENED. ^ONCE STARTED, READING CONTINUES UNTIL THE REQUIRED
AREA IS FILLED OR THE END-OF-FILE CONDITION OCCURS (%<EVENT 9).
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)OPEN SQ, WRITE SQ, CLOSE SQ
.LC.P
<ERROR <CONDITIONS: ^THE FOLLOWING EVENTS MAY OCCUR:-
.NF.S
%<SIGNAL 20, 23, CHAN, "^READ/WRITE TO ILLEGAL <DA/SQ CHANNEL"
%<SIGNAL 20, 23, CHAN, "^READ/WRITE TO <DA/SQ CHANNEL BEFORE ^^OPEN\\ING IT"
%<SIGNAL 20, 24, "^ACCESSING <DA CHANNEL BY <SQ ROUTINE OR VICE VERSA"
%<SIGNAL 20, 25, 0, "^STORAGE AREA FOR <DA/SQ ROUTINE INSIDE OUT"
%<SIGNAL 20, 26, BLOCK, "^ILLEGAL BLOCK NUMBER FOR <DA READ/WRITE ROUTINE"
%<SIGNAL 20, 27, CHAN, "^INPUTTING FROM <SQ CHANNEL SET FOR OUTPUT"
%<SIGNAL 9, 0, CHAN, "<EOF ON <DA OR <SQ CHANNEL"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ STRING\\
.INDEX ^^READ STRING\\
.P-8
<DEFINITION: ^THIS ROUTINE READS A STRING FROM THE CURRENTLY SELECTED INPUT
STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^READ STRING\\(S)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING INTO WHICH THE STRING OF SYMBOLS IS STORED
.LM 8;.S 1
^THE STRING OF SYMBOLS, WHICH MUST BE ENCLOSED BETWEEN
STRING QUOTES, IS READ FROM THE CURRENT INPUT STREAM INTO 'S'.
^TO INCLUDE A DOUBLE QUOTE CHARACTER IN THE STRING TO BE
READ, TWO DOUBLE QUOTES SHOULD BE GIVEN.
.UC.F.P
<ASSOCIATED <PROCEDURES: PRINT STRING, READ TEXT, READ
.LC.P
<ERROR <CONDITIONS: ^THE FOLLOWING TWO EVENTS MAY OCCUR:-
.NF.S
%<SIGNAL 3, 2, SYMBOL, "^NO OPENING STRING QUOTE"
%<SIGNAL 6, 1, 0, "^STRING CAPACITY EXCEEDED"
.F.S
^AND ALSO SEE <READ <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ SYMBOL\\
.INDEX ^^READ SYMBOL\\
.P-8
<DEFINITION: ^THIS ROUTINE READS THE NEXT SYMBOL FROM THE CURRENTLY SELECTED
INPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^READ SYMBOL\\(S)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF AN INTEGER, SHORT INTEGER OR BYTE INTEGER VARIABLE
INTO WHICH THE NEXT SYMBOL IS READ
.LM 8;.S 1
^THE NEXT SYMBOL ON THE INPUT STREAM IS READ INTO 'S'. ^THE NUMBER
OF BITS READ DEPENDS ON THE MODE AND TYPE OF DEVICE WHICH IS CURRENTLY
SELECTED.
^IN <ASCII MODE, NULL CHARACTERS AND CARRIAGE RETURNS ARE IGNORED,
ALL OTHER SYMBOLS ARE PASSED THROUGH.
.UC.F.P
<ASSOCIATED <PROCEDURES: NEXT SYMBOL, SKIP SYMBOL
.LC.P
<ERROR <CONDITIONS: ^WHEN THE END OF A FILE IS READ THE FOLLOWING EVENT IS CAUSED:-
.NF.S
%<SIGNAL 9, 0, STREAM, "<EOF ON STREAM"
.F.S
^IF A SYSTEM-DETECTED ERROR OCCURS DURING READING FROM THE CURRENT DEVICE
THE FOLLOWING OCCURS:-
.NF.S
%<SIGNAL 4, 1, STATUS, "<I/O TRANSMISSION ERROR"
.F.S
WHERE 'STATUS' IS A DEVICE DEPENDENT STATUS WORD WHOSE MEANING
IS DESCRIBED IN THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS
^MANUAL UNDER THE SECTION DEALING WITH THE PARTICULAR DEVICE IN QUESTION.
^IT SHOULD BE NOTED THAT THE STATUS WILL BE OUTPUT AS A DECIMAL NUMBER BUT SHOULD
BE INTERPRETED IN OCTAL.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^READ TEXT\\
.INDEX ^^READ TEXT\\
.P-8
<DEFINITION: ^THIS ROUTINE READS A STRING OF TEXT FROM THE CURRENTLY
SELECTED INPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^READ TEXT\\(S,DELIM)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING INTO WHICH THE STRING OF SYMBOLS IS STORED
.I-8
DELIM	IS AN INTEGER VARIABLE CONTAINING THE VALUE OF THE
<ASCII CHARACTER ON WHICH READING IS TO TERMINATE
.LM 8;.S 1
^THE STRING OF SYMBOLS, FROM THE NEXT SYMBOL UP TO THE NEXT OCCURRENCE
OF THE GIVEN DELIMITER, IS READ FROM THE CURRENT INPUT STREAM INTO 'S'.
^THE TERMINATING DELIMITER IS READ BUT NOT INCLUDED IN THE STRING.
.S
E.G. ^^READ TEXT\\(STR,NL) WILL RETURN A STRING CONTAINING THE
REST OF THE CURRENT LINE, BUT THE NEXT CHARACTER TO BE READ WILL BE THE
FIRST CHARACTER OF THE NEXT LINE.
.UC.F.P
<ASSOCIATED <PROCEDURES: PRINT STRING, READ STRING
.LC.P
<ERROR <CONDITIONS: ^THE FOLLOWING EVENT MAY OCCUR:-
.NF.S
%<SIGNAL 6, 1, 0, "^STRING CAPACITY EXCEEDED"
.F.S
^AND ALSO SEE <READ <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^REAL\\
.INDEX ^^REAL\\
.P-8
<DEFINITION: ^THIS MAP ENABLES THE USER TO ACCESS DIRECTLY A PARTICULAR
LOCATION WHOSE ADDRESS IS SPECIFIED.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^REAL\\(ADR)
.LM 16;.F;.S 1

.I-8
ADR	IS AN INTEGER EXPRESSION GIVING THE ADDRESS OF THE
REQUIRED LOCATION.
.LM 8;.S 1
^THIS MAP ALLOWS THE USER TO READ OR WRITE DIRECTLY TO A LOCATION
IN STORE BY SPECIFYING THE ABSOLUTE ADDRESS IN 'ADR'.
.UC.F.P
<ASSOCIATED <PROCEDURES: BYTE INTEGER, SHORT INTEGER, INTEGER,
RECORD, STRING
.LC.P
<ERROR <CONDITIONS: ^SEE <INTEGER.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RECORD\\
.INDEX ^^RECORD\\
.P-8
<DEFINITION: ^THIS MAP ALLOWS A SECTION OF DATA WHOSE START ADDRESS IS GIVEN
TO BE ACCESSED AS A RECORD.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^RECORD\\(ADR)
.LM 16;.F;.S 1

.I-8
ADR	IS AN INTEGER EXPRESSION BEING THE ABSOLUTE ADDRESS OF THE
START OF THE DATA SECTION TO BE MAPPED ONTO
.LM 8;.S 1
^THE ADDRESS OF THE START OF THE GIVEN DATA SECTION, SUCH THAT
IT CAN BE ACCESSED AS A RECORD, IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: BYTE INTEGER, SHORT INTEGER, INTEGER,
REAL, STRING
.LC.P
<ERROR <CONDITIONS: ^SEE <INTEGER.

.LC.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RELEASE\\
.INDEX ^^RELEASE\\
.P-8
<DEFINITION: ^THIS ROUTINE RELEASES THE DEVICE ATTACHED TO A GIVEN
PHYSICAL CHANNEL NUMBER.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^RELEASE\\(%<INTEGER N)
.P
<CALL:	^^RELEASE\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION GIVING THE PYSICAL CHANNEL NUMBER
ASSOCIATED WITH A PARTICULAR DEVICE
.LM 8;.S 1
^THIS ROUTINE IS USED BY THE RUN TIME SYSTEM TO RELEASE
THE DEVICES ASSOCIATED WITH <I/O STREAMS AND CHANNELS
IN THE <CLOSE <INPUT, <CLOSE <OUTPUT, <CLOSE <DA AND <CLOSE <SQ ROUTINES.
.UC.F.P
<ASSOCIATED <PROCEDURES: GET CHANNEL, IOUUO, CLOSE, FILOP, TAPOP
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^REM\\
.INDEX ^^REM\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE REMAINDER OF
THE DIVISION SPECIFIED IN ITS PARAMETERS
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	X=^^REM\\(N,M)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE DIVIDEND
.I-8
M	IS AN INTEGER EXPRESSION BEING THE DIVISOR
.LM 8;.S 1
^THE REMAINDER OF THE GIVEN DIVISION IS RETURNED VIA %<RESULT.
^THE QUOTIENT IS LOST.
.F.P
<ERROR <CONDITIONS: ^IF THE DIVISOR IS ZERO, THE FOLLOWING FATAL ERROR WILL OCCUR:-
.NF.S
?ARITHMETIC OVERFLOW AT USER <PC 'ADDR'

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RENAME\\
.INDEX ^^RENAME\\
.P-8
<DEFINITION: ^THIS ROUTINE ALLOWS A SPECIFIED DISK FILE TO BE RENAMED.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^RENAME\\(%<STRING(255) OLD,NEW)
.P
<CALL:	^^RENAME\\(OLD,NEW)
.LM 16;.F;.S 1

.I-8
OLD	IS A STRING CONTAINING THE NAME OF THE FILE TO BE RENAMED
.I-8
NEW	IS A STRING CONTAINING THE NAME WHICH FILE IS TO BE GIVEN
.LM 8;.S 1
^A SPECIFIED FILE IS GIVEN A NEW NAME.
.UC.F.P
<ASSOCIATED <PROCEDURES: XRENAME, (X)COPY, (X)DELETE, (X)ISFILE
.LC.P
<ERROR <CONDITIONS: ^IF THE RENAMING IS NOT SUCCESSFUL, THE FOLLOWING EVENT OCCURS
.NF.S
%<SIGNAL 10, 4, ERR, "^CANNOT <RENAME/DELETE 'FILESPEC'"
.F.S
^THE MEANING OF ERR IS GIVEN IN APPENDIX ^E OF THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL.
.S
^OTHER POSSIBLE ERRORS ARE:-
.NF.S
%<SIGNAL 10, 9, 0, "^BAD FILE SPECIFICATION - 'FILESPEC'"
%<SIGNAL 10, 6, 0, "^CANNOT OPEN DEVICE FOR 'FILESPEC'"
%<SIGNAL 2, 5, 0, "^ALL <I/O CHANNELS IN USE"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^REPORT\\
.INDEX ^^REPORT\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS THE GIVEN STRING ON THE USERS CONSOLE.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^REPORT\\(%<STRING(255) S)
.P
<CALL:	^^REPORT\\(S)
.LM 16;.F;.S 1

.I-8
S	IS A STRING TO BE OUTPUT
.LM 8;.S 1
^THE GIVEN STRING IS OUTPUT ON THE USERS CONSOLE, IRRESPECTIVE
OF WHETHER OR NOT IT IS THE CURRENTLY SELECTED OUTPUT STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: PRINT STRING, PROMPT
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <STRING.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RESET INPUT\\
.INDEX ^^RESET INPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE REWINDS THE CURRENTLY SELECTED INPUT STREAM
TO THE BEGINNING.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^RESET INPUT\\
.P
<CALL:	^^RESET INPUT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE CURRENT INPUT STREAM IS CLOSED AND RE-OPENED SO THAT
INPUT STARTS FROM THE BEGINNING AGAIN.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE INPUT, SDEF INPUT, SELECT INPUT, CLOSE INPUT
.LC.P
<ERROR <CONDITIONS: ^IF FOR SOME REASON AN INPUT FILE CANNOT BE RE-OPENED
THE FOLLOWING EVENT OCCURS:-
.NF.S
%<SIGNAL 10, 12, STREAM, "^CANNOT <RESET INPUT STREAM"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RESET OUTPUT\\
.INDEX ^^RESET OUTPUT\\
.P-8
<DEFINITION: ^THIS  ROUTINE REWINDS THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^RESET OUTPUT\\
.P
<CALL:	^^RESET OUTPUT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE CURRENT OUTPUT STREAM IS REWOUND TO THE BEGINNING.
^IN THE CASE OF THE USERS CONSOLE, IT WILL HAVE NO EFFECT. ^IN THE CASE
OF DISK TYPE DEVICES, IT WILL OVERWRITE ALL PREVIOUS OUTPUT.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE OUTPUT, SDEF OUTPUT, SELECT OUTPUT, CLOSE OUTPUT
.LC.P
<ERROR <CONDITIONS: ^IF FOR SOME REASON A FILE CANNOT BE RE-OPENED THE
FOLLOWING EVENT WILL OCCUR:-
.NF.S
%<SIGNAL 10, 13, STREAM, "^CANNOT <RESET OUTPUT STREAM"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RESTORE\\
.INDEX ^^RESTORE\\
.P-8
<DEFINITION: ^THIS ROUTINE RESTORES THE REGISTERS IN A <MACRO PROGRAM
WHICH HAS JUST CALLED AN <IMP PROCEDURE.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^RESTORE\\
.P
<CALL:	^^RESTORE\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^ONCE A <MACRO PROGRAM HAS SAVED THE REGISTERS WITH A CALL TO <SAVE <ACS
AND THEN CALLED THE <IMP PROCEDURE, THIS ROUTINE WILL
RESET THE <MACRO ENVIRONMENT TO WHAT IT WAS BEFORE <IMPENV WAS CALLED.
^THE REGISTERS ARE ALL RESTORED, WITH THE EXCEPTION OF REGISTERS
0 AND 1 IN CASE A FUNCTION OR MAP HAS BEEN CALLED, AND HAS RETURNED
AN ARGUMENT.
.S
^A TYPICAL CALLING SEQUENCE FROM MACRO IS THEREFORE:-
.UC.NF
  PUSHJ   P,SAVEACS_#_# ;SAVE THE MACRO ENVIRONMENT
  PUSHJ   P,FRED_#_#    ;CALL THE REQUIRED IMP ROUTINE
  PUSHJ   P,RESTORE_#_# ;RESTORE THE MACRO ENVIRONMENT
.LC.F
.UC.F.P
<ASSOCIATED <PROCEDURES: SAVE ACS, INITHEAP, INITIO, INITSTACK
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^RUN\\
.INDEX ^^RUN\\
.P-8
<DEFINITION: ^THIS ROUTINE CAUSES THE SPECIFIED PROGRAM TO BE RUN.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^RUN\\(%<STRING(6) DEV,FILE, %<STRING(3) EXT, %<INTEGER PPN,INC)
.P
<CALL:	^^RUN\\(DEV,FILE,EXT,PPN,INC)
.LM 16;.F;.S 1

.I-8
DEV	IS A STRING CONTAINING THE DEVICE NAME OF THE PROGRAM TO BE RUN
.I-8
FILE	IS A STRING CONTAINING THE FILE NAME OF THE PROGRAM TO BE RUN
.I-8
EXT	IS A STRING CONTAINING THE EXTENSION OF THE FILE NAME OF THE
PROGRAM TO BE RUN
(^IF AN EXTENSION OF <.SAV IS GIVEN <.EXE WILL BE LOOKED FOR FIRST.)
.I-8
PPN	IS AN INTEGER EXPRESSION BEING THE PROJECT-PROGRAMMER PAIR OF THE
PROGRAM TO BE RUN
.I-8
INC	IS AN INTEGER EXPRESSION SPECIFYING THE START ADDRESS INCREMENT
FOR THE PROGRAM TO BE RUN (ONLY 0 AND 1 ARE ALLOWED). 1 BEING THE
<CCL
START ADDRESS INCREMENT.
.LM 8;.S 1
^ALL THE CURRENT INPUT AND OUTPUT STREAMS ARE CLOSED AND
THE PROGRAM SPECIFIED IS RUN THEREBY DESTROYING THE CURRENT CORE IMAGE.
.UC.F.P
<ASSOCIATED <PROCEDURES: GETSEG
.LC.P
<<ERROR <CONDITIONS: ^THE MONITOR MAY PRODUCE ONE OF THE FOLLOWING MESSAGES:-
.NF.S
.UC
?NOT A SAVE FILE
? ... .SAV NOT FOUND
?TRANSMISSION ERROR
?LOOKUP FAILURE 'N'
?'N'P OF CORE NEEDED
?NO START ADDRESS
.LC

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SAVE ACS\\
.INDEX ^^SAVE ACS\\
.P-8
<DEFINITION: ^THIS ROUTINE SAVES THE REGISTERS WHEN CALLING AN <IMP ROUTINE FROM <MACRO.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^SAVE ACS\\
.P
<CALL:	^^SAVE ACS\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
WHEN USING <IMP FROM MACRO, THE DATA STACK POINTER'S LEFT HALF WILL
BE CORRUPTED, AND NONE OF THE REST OF THE REGISTERS CAN BE GUARANTEED.
^THIS ROUTINE SAVES REGISTERS 2-17. ^IT IS ALSO NECESSARY THAT THERE IS
ENOUGH STACK SPACE FOR <IMP SO THAT IT DOES NOT TRY TO EXPAND IT.
^IF <IMP IS REQUIRED TO DO <I/O THEN THE ROUTINE
<INITIO MUST BE CALLED, AND IF ANY BUT STREAMS ZERO ARE TO BE USED THEN
THE HEAP MUST BE SET UP (SEE <INITHEAP).
^THIS ROUTINE IS TO BE USED IN CONJUCTION WITH <RESTORE
WHICH WILL RESTORE THE ORIGINAL REGISTERS.
.S
^A TYPICAL CALLING SEQUENCE FROM MACRO IS THEREFORE:-
.NAP.UC.NF
  PUSHJ   P,SAVEACS_#_# ;SAVE THE MACRO ENVIRONMENT
  PUSHJ   P,FRED_#_#    ;CALL THE REQUIRED IMP ROUTINE
  PUSHJ   P,RESTORE_#_# ;RESTORE THE MACRO ENVIRONMENT
.AP.LC.F
.UC.F.P
<ASSOCIATED <PROCEDURES: RESTORE, INITHEAP, INITIO, INITSTACK
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SDEF INPUT\\
.INDEX ^^SDEF INPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE OPENS THE STRING GIVEN IN THE STRING NAME
PARAMETER AND ASSOCIATES IT WITH A LOGICAL INPUT STREAM NUMBER.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^SDEF INPUT\\(%<INTEGER N, %<STRINGNAME S)
.P
<CALL:	^^SDEF INPUT\\(N,S)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION SPECIFYING THE LOGICAL INPUT
STREAM NUMBER IN THE RANGE 1 TO 15
.I-8
S	IS THE NAME OF A STRING VARIABLE TO BE OPENED FOR INPUT
.LM 8;.S 1
^THE STRING SPECIFIED IS ASSOCIATED WITH THE GIVEN LOGICAL
INPUT STREAM NUMBER, SO THAT INPUT MAY BE SUBEQUENTLY READ DIRECTLY FROM IT.
.F.P
<ASSOCIATED <PROCEDURES: <DEFINE <INPUT, <XDEFINE <INPUT, <SELECT <INPUT, <CLOSE <INPUT, <RESET <INPUT
.LC.P
<ERROR <CONDITIONS: ^A STREAM NUMBER LYING OUTSIDE THE RANGE 1 TO 15 CAUSES EVENT
.NF.S
%<SIGNAL 10, 1, N, "^DEFINING ILLEGAL STREAM"
.F.S
^TRYING TO RE-DEFINE A PREVIOUSLY DEFINED STREAM CAUSES EVENT
.NF.S
%<SIGNAL 10, 2, N, "^STREAM/CHANNEL ALREADY DEFINED"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SDEF OUTPUT\\
.INDEX ^^SDEF OUTPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE OPENS THE STRING GIVEN IN THE STRING NAME
PARAMETER AND ASSOCIATES IT WITH A LOGICAL OUTPUT STREAM NUMBER.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^SDEF OUTPUT\\(%<INTEGER N, %<STRINGNAME S)
.P
<CALL:	^^SDEF OUTPUT\\(N,S)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION SPECIFYING THE LOGICAL OUTPUT
STREAM NUMBER IN THE RANGE 1 TO 15
.I-8
S	IS THE NAME OF A STRING VARIABLE TO BE OPENED FOR OUTPUT
.LM 8;.S 1
^THE STRING SPECIFIED IS ASSOCIATED WITH THE GIVEN LOGICAL
OUTPUT STREAM NUMBER, SO THAT OUTPUT MAY BE SUBEQUENTLY WRITTEN DIRECTLY TO IT.
.F.P
<ASSOCIATED <PROCEDURES: <DEFINE <OUTPUT, <XDEFINE <OUTPUT, <SELECT <OUTPUT, <CLOSE <OUTPUT, <RESET <OUTPUT
.LC.P
<ERROR <CONDITIONS:  ^SEE <SDEF <INPUT

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SELECT INPUT\\
.INDEX ^^SELECT INPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE SELECTS THE GIVEN STREAM NUMBER TO BE THE STREAM
FROM WHICH ALL SUBSEQUENT INPUT WILL BE TAKEN.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^SELECT INPUT\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE STREAM NUMBER TO BE SELECTED
IN THE RANGE 0 TO 15
.LM 8;.S 1
^THE GIVEN STREAM NUMBER IS SELECTED TO BE THE ONE FROM WHICH
ALL SUBSEQUENT INPUT IS TAKEN, UNTIL ANOTHER CALL OF <SELECT <INPUT.
.S
^IF THE STREAM NUMBER SELECTED IS NOT DEFINED BY THE
USER, IT DEFAULTS TO BEING THE <NUL: DEVICE. I.E. ANY INPUT WILL CAUSE
AN END OF FILE EVENT (%<EVENT 9).
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE INPUT, SDEF INPUT, CLOSE INPUT, RESET INPUT
.LC.P
<ERROR <CONDITIONS: ^IF THE STREAM NUMBER GIVEN LIES OUTSIDE THE RANGE 0 TO 15 THE
FOLLOWING EVENT IS CAUSED:-
.NF.S
%<SIGNAL 10, 10, N, "^SELECTING ILLEGAL INPUT STREAM"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SELECT OUTPUT\\
.INDEX ^^SELECT OUTPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE SELECTS THE GIVEN STREAM NUMBER TO BE THE STREAM
TO WHICH ALL SUBSEQUENT OUTPUT WILL BE SENT.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^SELECT OUTPUT\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE STREAM NUMBER TO BE SELECTED
IN THE RANGE 0 TO 15
.LM 8;.S 1
^THE GIVEN STREAM NUMBER IS SELECTED TO BE THE ONE TO WHICH
ALL SUBSEQUENT OUTPUT IS SENT, UNTIL ANOTHER CALL OF <SELECT <OUTPUT.
.S
^IF THE STREAM NUMBER SELECTED IS NOT DEFINED BY THE
USER, IT DEFAULTS TO BEING THE <NUL: DEVICE. I.E. ANY OUTPUT WILL BE LOST.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE OUTPUT, SDEF OUTPUT, CLOSE OUTPUT, RESET OUTPUT
.LC.P
<ERROR <CONDITIONS: ^IF THE STREAM NUMBER GIVEN LIES OUTSIDE THE RANGE 0 TO 15 THE
FOLLOWING EVENT IS CAUSED:-
.NF.S
%<SIGNAL 10, 11, N, "^SELECTING ILLEGAL OUTPUT STREAM"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SET STREAMS\\
.INDEX ^^SET STREAMS\\
.P-8
<DEFINITION: ^THIS ROUTINE SETS UP, UP TO THREE INPUT AND THREE OUTPUT STREAMS.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^SET STREAMS\\
.P
<CALL:	^^SET STREAMS\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE USER IS PROMPTED,
.NF.S
^FILES:- 
.F.S
TO WHICH THE RESPONSE IS A LIST OF UP TO THREE OUTPUT FILE SPECIFICATIONS
SEPARATED BY COMMAS, FOLLOWED BY AN EQUALS SIGN AND UP TO THREE
INPUT FILE SPECIFICATIONS SEPARATED BY COMMAS. ^THE COMMAS MAY BE ABSENT
IF NO FURTHER OUTPUT OR INPUT FILE SPECIFICATIONS FOLLOW.
^SIMILARLY NO EQUALS SIGN IS NEEDED IF NO INPUT FILES ARE GIVEN.
 ^THE STREAMS ARE SET UP TO BE STREAM 1, 2 AND 3 RESPECTIVELY FOR BOTH THE
OUTPUT AND INPUT SIDES.
.S
^THE FOLLOWING ARE EXAMPLES OF LEGAL RESPONSES.
.NF.S
^FILES:- TTY:=FRED.IMP
	!SETS OUTPUT STREAM 1 = <TTY:
	!SETS INPUT STREAM 1 = <FRED.IMP
^FILES:- =FRED.IMP,JOE.IMP,TTY:
	!SETS INPUT STREAM 1 = <FRED.IMP
	!SETS INPUT STREAM 2 = <JOE.IMP
	!SETS INPUT STREAM 3 = <TTY:
^FILES:- FRED.IMP
	!SETS OUTPUT STREAM 1 = <FRED.IMP
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE (INPUT/OUTPUT), SELECT (INPUT/OUTPUT),
CLOSE (INPUT/OUTPUT), READFS, CUSPFS
.F.LC.P
<ERROR <CONDITIONS: ^IF A BAD COMMAND LINE IS TYPED THE FOLLOWING MESSAGE
IS OUTPUT
.NF.S
^COMMAND ERROR:  "REST OF LINE"
.S.F
TOGETHER WITH THE REST OF THE INPUT LINE STARTING AFTER THE OFFENDING CHARACTER.
.B
^FOR NON-SYNTACTIC ERRORS SEE <DEFINE <INPUT, <DEFINE <OUTPUT.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SETSTS\\
.INDEX ^^SETSTS\\
.P-8
<DEFINITION: ^THIS ROUTINE SETS THE STATUS BITS OF THE DEVICE
ASSOCIATED WITH A GIVEN PHYSICAL CHANNEL NUMBER.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^SETSTS\\(%<INTEGER CHAN,BITS)
.P
<CALL:	^^SETSTS\\(CHAN,BITS)
.LM 16;.F;.S 1

.I-8
CHAN	IS AN INTEGER EXPRESSION GIVING THE NUMBER OF THE PHYSICAL
CHANNEL NUMBER TO BE AFFECTED (THE LEFT-HALF OF THE <FILOPFN ITEM IN AN
<SCB RECORD)
.I-8
BITS	IS AN INTEGER EXPRESSION GIVING THE STATUS BITS TO BE CHANGED
.LM 8;.S 1
^EACH PHYSICAL CHANNEL NUMBER HAS ASSOCIATED WITH IT A SET OF STATUS BITS
WHICH THIS ROUTINE CAN SET. ^NOTE THAT THE
MEANING OF THESE BITS DEPEND ON THE PARTICULAR DEVICE (SEE
THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL FOR A PARTICULAR DEVICE).
.UC.F.P
<ASSOCIATED <PROCEDURES: GETSTS, INSTATUS, OUTSTATUS
.LC.P
<ERROR <CONDITIONS: ^WHEN THE CHANNEL NUMBER REFERS TO A CHANNEL WHICH HAS
NO DEVICE ASSOCIATED WITH IT, THE MONITOR GIVES THE FOLLOWING FATAL ERROR:-
.NF.S
?<I/O <TO <UNASSIGNED <CHANNEL <AT <USER ADDR


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SHIFTC\\
.INDEX ^^SHIFTC\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION CYCLICALLY SHIFTS A GIVEN BIT
PATTERN A SPECIFIED NUMBER OF BIT POSITIONS.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^SHIFTC\\(%<INTEGER N,M)
.P
<USE:	X=^^SHIFTC\\(N,M)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION WHOSE BINARY PATTERN IS TO BE SHIFTED
.I-8
M	IS AN INTEGER EXPRESSION INDICATING THE NUMBER OF BIT POSITIONS THAT
'N' IS TO BE SHIFTED.
.LM 8;.S 1
^THE BIT PATTERN IN 'N' IS SHIFTED 'M' (MODULO 72) PLACES, LEFT OR RIGHT
ACCORDING TO THE SIGN OF 'M' (+ OR - RESPECTIVELY). ^BITS LOST OFF ONE
END OF THE WORD, REAPPEAR IN THE SAME ORDER AT THE OTHER END OF THE WORD.
.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SHORT INTEGER\\
.INDEX ^^SHORT INTEGER\\
.P-8
<DEFINITION: ^THIS MAP ENABLES THE USER TO ACCESS DIRECTLY A PARTICULAR
SHORT INTEGER WHOSE ADDRESS IS SPECIFIED.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^SHORT INTEGER\\(ADR)
.LM 16;.F;.S 1

.I-8
ADR	IS AN INTEGER EXPRESSION GIVING THE ADDRESS OF THE
REQUIRED LOCATION.
.LM 8;.S 1
^THIS MAP ALLOWS THE USER TO READ OR WRITE DIRECTLY TO A LOCATION
IN STORE BY SPECIFYING THE ABSOLUTE ADDRESS IN 'ADR'.
.UC.F.P
<ASSOCIATED <PROCEDURES: BYTE INTEGER, INTEGER, REAL,
STRING, RECORD
.LC.P
<ERROR <CONDITIONS: ^IF THE VALUE OF 'ADR' LIES OUTSIDE THE CURRENT ADDRESSING SPACE THE
FOLLOWING FATAL ERROR WILL OCCUR:-
.NF.S
?<IMP: ^ILL ^MEM ^REF AT USER PC  'ADDR'

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SIXTOSTR\\
.INDEX ^^SIXTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION TAKES A ^^DEC\\SYSTEM-10 <SIXBIT
INTEGER WORD AND RETURNS IT AS AN <IMP STRING OF SIX <ASCII CHARACTERS.
.NF;.P
<SPEC:	%<EXTERNALSTRING(6)%FN ^^SIXTOSTR\\(%<INTEGER SIXBIT)
.P
<USE:	S=^^SIXTOSTR\\(SIXBIT)
.LM 16;.F;.S 1

.I-8
SIXBIT	IS AN INTEGER EXPRESSION REPRESENTING A WORD OF SIX <SIXBIT CHARACTERS
.LM 8;.S 1
^AN <IMP STRING OF SIX <ASCII CHARACTERS IS GENERATED FROM
THE GIVEN <SIXBIT INTEGER WORD AND RETURNED VIA %<RESULT. ^SEE THE
^^DEC\\SYSTEM-10 ^HARDWARE ^REFERENCE ^MANUAL FOR A LIST OF THE <SIXBIT
CHARACTER SET.
.UC.F.P
<ASSOCIATED <PROCEDURES: STRTOSIX
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SKIP SYMBOL\\
.INDEX ^^SKIP SYMBOL\\
.P-8
<DEFINITION: ^THIS ROUTINE PASSES OVER THE NEXT SYMBOL ON THE CURRENTLY
SELECTED INPUT STREAM, WITHOUT READING IT.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^SKIP SYMBOL\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^THE NEXT CHARACTER FOR INPUT IS PASSED OVER AND IGNORED.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ SYMBOL, NEXT SYMBOL
.LC.P
<ERROR <CONDITIONS: ^SEE <READ <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SLEEP\\
.INDEX ^^SLEEP\\
.P-8
<DEFINITION: ^THIS ROUTINE CAUSES THE USERS PROGRAM TO GO TO SLEEP FOR
A SPECIFIED LENGTH OF TIME.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^SLEEP\\(%<INTEGER N)
.P
<CALL:	^^SLEEP\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION INDICATING THE TIME IN MILLISECONDS FOR
THE REQUIRED SLEEP
.LM 8;.S 1
^THE PROGRAM IS CAUSED TO GO INTO A SPECIAL STATE CALLED HIBERNATION
FROM WHICH IT AWAKENS AFTER THE GIVEN NUMBER OF MILLISECONDS. ^THE
MAXIMUM PERIOD IS 68 SECONDS.
.P
<ERROR <CONDITIONS: ^A VALUE OF N <= 0 WILL CAUSE AN IMMEDIATE RETURN.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SP\\
.INDEX ^^SP\\
.P-8
<DEFINITION: ^THIS INTEGER CONSTANT GIVES THE INTERNAL <ASCII CODE VALUE
FOR THE SPACE CHARACTER.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^SP\\
.F.LM 8;.S 1
^THE NUMERICAL VALUE OF THE SPACE CHARACTER IS GIVEN.
.UC.F.P
<ASSOCIATED <CONSTANTS: NL, TAB, ESC, FF
.LC

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SPACE\\
.INDEX ^^SPACE\\
.P-8
<DEFINITION: ^THIS ROUTINE CAUSES ONE 'SPACE' CHARACTER TO BE SENT TO
THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^SPACE\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
^ONE 'SPACE' CHARACTER IS SENT TO THE OUTPUT STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: SPACES, NEWLINE, NEWLINES, NEWPAGE
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SPACES\\
.INDEX ^^SPACES\\
.P-8
<DEFINITION: ^THIS ROUTINE CASES A SPECIFIED NUMBER OF 'SPACE' CHARACTERS
TO BE SENT TO THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^SPACES\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION GIVING THE NUMBER OF 'SPACE' CHARACTERS
TO BE OUTPUT
.LM 8;.S 1
N 'SPACE' CHARACTERS ARE SENT TO THE OUTPUT STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: SPACE, NEWLINE, NEWLINES, NEWPAGE
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^STARTOFPERIOD\\
.INDEX ^^STARTOFPERIOD\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION RETURNS THE DATE AND TIME IN UNIVERSAL
DATE-TIME FORMAT OF THE START OF THE GIVEN ACCOUNTING PERIOD.

.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^STARTOFPERIOD\\(%<INTEGER PERIOD)
.P
<USE:	UDT=^^STARTOFPERIOD\\(PERIOD)
.LM 16;.F;.S 1

.I-8
PERIOD	IS AN INTEGER EXPRESSION BEING A FOUR DIGIT ACCOUNTING PERIOD WHOSE
START DATE-TIME IS REQUIRED
.LM 8;.S 1
THE INITIAL DATE AND TIME OF THE GIVEN ACCOUNTING PERIOD, IS RETURNED
AS A UNIVERSAL DATE-TIME INTEGER VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, ENDOFPERIOD
.F.LC.P
<ERROR <CONDITIONS: WHEN THE PARAMETERS IS NOT OF THE FORM <YYMM
OR IS AN IMPOSSIBLE VALUE, THE FOLLOWING EVENT IS CAUSED:-
.NF.S
%<SIGNAL 11, 22, PERIOD, "^ACCOUNTING PERIOD INCORRECTLY SPECIFIED"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^STRING\\
.INDEX ^^STRING\\
.P-8
<DEFINITION: ^THIS MAP ENABLES THE USER TO ACCESS DIRECTLY AS A STRING
A PARTICULAR LOCATION WHOSE ADDRESS IS SPECIFIED.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^STRING\\(ADR)
.LM 16;.F;.S 1

.I-8
ADR	IS AN INTEGER EXPRESSION GIVING THE ADDRESS OF THE
REQUIRED LOCATION.
.LM 8;.S 1
^THIS MAP ALLOWS THE USER TO READ OR WRITE DIRECTLY TO A LOCATION
IN STORE AS A STRING BY SPECIFYING THE ABSOLUTE ADDRESS IN 'ADR'.
.UC.F.P
<ASSOCIATED <PROCEDURES: BYTE INTEGER, SHORT INTEGER, INTEGER,
REAL, RECORD
.LC.P
<ERROR <CONDITIONS: ^IF THE VALUE OF 'ADR' LIES OUTSIDE THE CURRENT ADDRESSING SPACE THE
FOLLOWING FATAL ERROR WILL OCCUR:-
.NF.S
?<IMP: ^ILL ^MEM ^REF AT USER PC  'ADDR'

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^STRTOASC\\
.INDEX ^^STRTOASC\\
.P-8
<DEFINITION: ^THIS ROUTINE CONVERTS AN <IMP STRING INTO AN <ASCIZ
STRING.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^STRTOASC\\(%<STRING<NAME S, %<<NAME ADR)
.P
<CALL:	^^STRTOASC\\(S,ADR)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A N <IMP TYPE STRING WHICH IS TO BE CONVERTED
TO <ASCIZ FORM.
.I-8
ADR	IS THE NAME OF A  VARIABLE AT WHICH THE CONVERTED STRING IS TO START
.LM 8;.S 1
THE GIVEN <IMP STRING IS CONVERTED TO <ASCIZ FORM
(7-BIT BYTES, TERMINATED BY A ZERO BYTE) AND RETURNED IN MEMORY STARTING
AT ADDRESS 'ADR'.
.F.P.UC
<ASSOCIATED <PROCEDURES: ASCTOSTR
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^STRTOFS\\
.INDEX ^^STRTOFS\\

.P-8
<DEFINITION: ^THIS RECORD FUNCTION PARSES THE GIVEN STRING INTO A FILE
SPECIFICATION RECORD.
.NF;.P
<SPEC:	%<EXTERNAL%RECORD(FILESPEC)%FN ^^STRTOFS\\(%<STRING(255) SPEC)
.P
<USE:	FS = ^^STRTOFS\\(SPEC)
.LM 16;.F;.S 1

.I-8
SPEC	IS A STRING CONTAINING A ^^DEC\\SYSTEM-10 STYLE FILE
SPECIFICATION, WHICH MAY INCLUDE SWITCHES WITH VALUES (SEE APPENDIX
^B FOR A LIST OF SWITCHES RECOGNISED BY THE SYSTEM)
.I-8
.LM 8;.S 1
^THE STRING 'SPEC' CONTAINS A ^^DEC\\SYSTEM-10 STYLE FILE
SPECIFICATION, WHICH IS PARSED INTO ITS CONSTITUENT ITEMS AND
WHICH ARE RETURNED IN THE FORM OF A FILE SPECIFICATION RECORD (SEE
SECTION 3) VIA %<RESULT.
.B
.UC.F.P
<ASSOCIATED <PROCEDURES: FSTOSTR, READFS, WRITE FS, DEFAULT
.LC.P
<ERROR <CONDITIONS: ^IF A SYNTAX ERROR IS FOUND IN THE STRING, THE FOLLOWING EVENT OCCURS:-
.NF.S
%<SIGNAL 10, 9, 0, "^BAD FILE SPEC:-  'FILESPEC'"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^STRTOHEX\\
.INDEX ^^STRTOHEX\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION CONVERTS AN STRING OF DIGITS INTO AN
HEXIDECIMAL INTEGER.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^STRTOHEX\\(%<STRINGNAME S)
.P
<USE:	N=^^STRTOHEX\\(S)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING CONTAINING THE NUMBER TO BE CONVERTED
.LM 8;.S 1
^THE GIVEN STRING IS READ SEQUENTIALLY AND THE FIRST SET OF HEXIDECIMAL
DIGITS FOUND ARE CONVERTED INTO A HEXIDECIMAL INTEGER WHICH IS RETURNED
VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: HEXTOSTR, READ HEX
.LC.P
<ERROR <CONDITIONS: ^SEE <READ <HEX


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^STRTOINT\\
.INDEX ^^STRTOINT\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION CONVERTS AN STRING OF DIGITS INTO AN
DECIMAL INTEGER.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^STRTOINT\\(%<STRINGNAME S)
.P
<USE:	N=^^STRTOINT\\(S)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING CONTAINING THE NUMBER TO BE CONVERTED
.LM 8;.S 1
^THE GIVEN STRING IS READ SEQUENTIALLY AND THE FIRST SET OF DIGITS FOUND
ARE CONVERTED INTO A DECIMAL INTEGER WHICH IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: INTTOSTR, READ
.LC.P
<ERROR <CONDITIONS: ^SAME AS <READ ROUTINE FOR INTEGERS.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^STRTOOCT\\
.INDEX ^^STRTOOCT\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION CONVERTS AN STRING OF OCTAL DIGITS
INTO AN OCTAL INTEGER.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^STRTOOCT\\(%<STRINGNAME S)
.P
<USE:	N=^^STRTOOCT\\(S)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING CONTAINING THE NUMBER TO BE CONVERTED
.LM 8;.S 1
^THE GIVEN STRING IS READ SEQUENTIALLY AND THE FIRST SET OF OCTAL DIGITS FOUND
ARE CONVERTED INTO A OCTAL INTEGER WHICH IS RETURNED VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: OCTTOSTR, READ OCTAL
.LC.P
<ERROR <CONDITIONS: ^SEE <READ <OCTAL


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^STRTOSIX\\
.INDEX ^^STRTOSIX\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF A ^^DEC\\SYSTEM-10
<SIXBIT WORD REPRESENTING THE CHARACTERS IN A GIVEN <IMP STRING.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^STRTOSIX\\(%<STRING(6) S)
.P
<USE:	N=^^STRTOSIX\\(S)
.LM 16;.F;.S 1

.I-8
S	IS A STRING OF UP TO SIX CHARACTERS TO BE CONVERTED TO <SIXBIT
REPRESENTATION (^THEY MUST
LIE WITHIN THE <SIXBIT CHARACTER SET)
.LM 8;.S 1
^THE GIVEN STRING IS CONVERTED INTO ITS EQUIVALENT <SIXBIT
REPRESENTATION AND RETURNED IN AN INTEGER WORD VIA %<RESULT.
^SEE ^^DEC\\SYSTEM-10 ^HARDWARE ^REFERENCE ^MANUAL FOR THE FULL <SIXBIT
CHARACTER SET.
.UC.F.P
<ASSOCIATED <PROCEDURES: SIXTOSTR
.LC.P
<ERROR <CONDITIONS: ^ALL CHARACTERS ARE ASSUMED TO LIE WITHIN THE <SIXBIT CHARACTER
SET AND UNPREDICTABLE CHARCTERS WILL BE FORMED IF THIS IS NOT THE CASE.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SUB EVENT\\
.INDEX ^^SUB EVENT\\

.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE SUB-CLASS OF
THE LAST EVENT TO HAVE BEEN TRAPPED BY AN %<ON %<EVENT BLOCK.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^SUB EVENT\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE SUB-CLASS OF THE LAST EVENT IS RETURNED VIA %<RESULT
.F.P.UC
<ASSOCIATED <PROCEDURES: EVENT, EVENT INFO
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SUB STRING\\
.INDEX ^^SUB STRING\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION EXTRACTS A SET OF CHARACTERS FORMING
A SUB-STRING FROM A STRING.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	T=^^SUB STRING\\(S,N,M)
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING FROM WHICH THE SUB-STRING IS REQUIRED
.I-8
N	IS AN INTEGER EXPRESSION GIVING THE LOWER BOUND OF THE REQUIRED SUB-STRING
.I-8
M	IS AN INTEGER EXPRESSION GIVING THE UPPER BOUND OF THE REQUIRED
SUB-STRING
.LM 8;.S 1
^A STRING OF CHARACTERS FROM POSITIONS 'N' TO 'M' INCLUSIVE OF STRING 'S'
IS RETURNED VIA %<RESULT.
^IF M=N-1 THEN A NULL STRING IS RETURNED.
.UC.F.P
<ASSOCIATED <PROCEDURES: TO STRING, LENGTH, CHARNO, MATCH
.F.LC.P
<ERROR <CONDITIONS: M _< N-1 CAUSES THE EVENT:-
.NF.S
<%SIGNAL 5, 8, 0, "^STRING PARAMETERS INSIDE OUT"
.F.S
^UNLESS 0 _< N _<= ^^LENGTH\\(S) OR 0 _<= M _<= ^^LENGTH\\(S) THEN THE
FOLLOWING EVENT IS CAUSED:-
.NF.S
<%SIGNAL 5, 7, INDEX, "^ILLEGAL STRING INDEX"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^SWITCH ARG\\
.INDEX ^^SWITCH ARG\\
.P-8
<DEFINITION: ^THIS PREDICATE SEARCHES FOR THE OCCURENCE OF A SWITCH
IN A GIVEN STRING AND RETURNS A SWITCH ARGUMENT, IF ONE IS GIVEN.
.NF;.P
<SPEC:	%<EXTERNALPREDICATE ^^SWITCH ARG\\(%<STRING(255)%<NAME S, %<STRING(15) T, %<<NAME X)
.P
<USE:	<%IF ^^SWITCH ARG\\(S,T,X) <%THEN . . .
.LM 16;.F;.S 1

.I-8
S	IS THE NAME OF A STRING TO BE SCANNED
.I-8
T	IS A STRING CONTAINING THE SWITCH NAME TO BE SCANNED FOR
.I-8
X	IS THE NAME OF AN INTEGER OR STRING INTO WHICH AN ARGUMENT IS READ
.LM 8;.S 1
^THE GIVEN STRING IS SCANNED FOR A GIVEN SWITCH NAME AND RETURNS
A VALUE %<TRUE IF ONE IS FOUND, AND %<FALSE OTHERWISE.  ^IN ADDITION,
IF A MATCH IS FOUND, ANY ARGUMENT IS READ INTO THE STRING OR INTEGER
NAME SPECIFIED. ^IT IS UP TO THE USER TO SUPPLY THE CORRECT TYPE OF
THIRD PARAMETER FOR ANY GIVEN SWITCH.
.UC.F.P
<ASSOCIATED <PROCEDURES: MATCH
.LC.P
<ERROR <CONDITIONS: ^IF THE THIRD PARAMETER SUPPLIED IS NOT EITHER AN
INTEGER OR STRING, THE FOLLOWING EVENT IS CAUSED:-
.NF.S
%<SIGNAL 5, 6, TYPE, "^ILLEGAL %<NAME TYPE PARAMETER"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TAB\\
.INDEX ^^TAB\\
.P-8
<DEFINITION: ^THIS INTEGER CONSTANT GIVES THE INTERNAL <ASCII CODE VALUE
FOR THE TAB CHARACTER.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	N=^^TAB\\
.F.LM 8;.S 1
^THE NUMERICAL VALUE OF THE TAB CHARACTER IS GIVEN.
.UC.F.P
<ASSOCIATED <CONSTANTS: ESC, SP, NL, FF
.LC

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TAPOP\\
.INDEX ^^TAPOP\\
.P-8
<DEFINITION: ^THIS PREDICATE PERFORMS THE ^^DEC\\SYSTEM-10 <TAPOP ^MONITOR
FUNCTION.
.NF;.P
<SPEC:	%<SYSTEMPREDICATE ^^TAPOP\\(%<INTEGER FUNCT,CHAN,NARGS, %<INTEGERARRAYNAME ARGS(0:12), %<INTEGERNAME RESULT)
.P
<USE:	<%IF ^^TAPOP\\(FUNCT,CHAN,NARGS,ARGS,RESULT) <%THEN . . .
.LM 16;.F;.S 1

.I-8
FUNCT	IS AN INTEGER EXPRESSION BEING THE <TAPOP FUNCTION CODE TO BE PERFORMED
.I-8
CHAN	IS AN INTEGER EXPRESSION BEING THE PHYSICAL
CHANNEL NUMBER ASSOCIATED WITH THE DEVICE, (OBTAINED FROM THE LEFT-HALF
OF THE <FILOPFN WORD IN THE ^STREAM ^CONTROL ^BLOCK FOR THAT STREAM)
.I-8
NARGS	IS AN INTEGER EXPRESSION GIVING THE NUMBER OF ARGUMENTS BEING
PASSED TO THE <TAPOP <UUO IN THE ARRAY 'ARGS'
.I-8
ARGS	IS THE NAME OF AN INTEGER ARRAY WHICH CONTAINS THE RELEVANT ARGUMENTS
FOR THE FUNCTION REQUIRED.
.I-8
RESULT	IS THE NAME OF AN INTEGER WHICH WILL CONTAIN ANY RESULT PASSED BACK BY
THE <TAPOP <UUO.
.I-8
.F;.LM 8;.S 1
^THE <TAPOP ^MONITOR FUNCTION IS PERFORMED ACCORDING TO
THE VALUES SUPPLIED. ^A VALUE OF %<TRUE IS RETURNED
IF THE FUNCTION IS SUCCESSFUL AND %<FALSE OTHERWISE. ^ANY RESULT IS PASSED
BACK IN THE RESULT ITEM OF THE RECORD. ^FOR THE FULL DESCRIPTION
OF THE <TAPOP <UUO SEE THE ^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL.
.UC.F.P
<ASSOCIATED <PROCEDURES: FILOP
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TIME\\
.INDEX ^^TIME\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS THE CURRENT TIME
AS AN EIGHT CHARACTER STRING.
.NF;.P
<SPEC:	%<EXTERNALSTRING(8)%FN ^^TIME\\
.P
<USE:	S=^^TIME\\
.F;.S 1
^NO PARAMETERS
.LM 8;.S 1
THE CURRENT TIME IS RETURNED AS AN EIGHT CHARACTER STRING OF THE
FORM <HH:MM:SS VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TIMETOSTR\\
.INDEX ^^TIMETOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS THE TIME GIVEN IN MILLISECONDS
(<DEC INTERNAL FORM), AS AN EIGHT CHARACTER STRING.
.NF;.P
<SPEC:	%<EXTERNALSTRING(8)%FN ^^TIMETOSTR\\(%<INTEGER TIME)
.P
<USE:	S=^^TIMETOSTR\\(TIME)
.LM 16;.F;.S 1

.I-8
TIME	IS AN INTEGER EXPRESSION BEING THE TIME IN MILLISECONDS
PAST MIDNIGHT (<DEC INTERNAL FORM)
.LM 8;.S 1
THE GIVEN TIME IS CONVERTED TO AN EIGHT CHARACTER STRING
OF THE FORM <HH:MM:SS IS RETURNED VIA %<RESULT.
.S
^NO PARAMETER CHECKING IS DONE SO THAT THE RESULT IS CALCULATED FOR ANY
NUMBER OF MILLISECONDS.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TMPCOR\\
.INDEX ^^TMPCOR\\
.P-8
<DEFINITION: ^THIS ROUTINE EXECUTES A ^^DEC\\SYSTEM-10 ^MONITOR <TMPCOR <UUO.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^TMPCOR\\(%<INTEGER TYP,IOWD,NAM)
.P
<CALL:	^^TMPCOR\\(TYP,IOWD,NAM)
.LM 16;.F;.S 1

.I-8
TYP	IS AN INTEGER EXPRESSION GIVING THE TYPE OF <TMPCOR
FUNCTION REQUIRED
.I-8
IOWD	IS AN INTEGER EXPRESSION GIVING AN <IOWD (SEE <IOWD
INTEGER FUNCTION) RELATING TO AN AREA OF STORE
.I-8
NAM	IS AN INTEGER EXPRESSION BEING A FILE NAME IN <SIXBIT
FORMAT
.LM 8;.S 1
^A <TMPCOR <UUO FUNCTION IS EXECUTED. ^FOR A LIST OF
THE TYPES OF FUNCTION AVAILABLE AND THE FORM OF THE DATA BLOCK SEE THE
^^DEC\\SYSTEM-10 <MONITOR <CALLS ^MANUAL.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X) DEFINE (INPUT/OUTPUT), FINIT, IOWD, STRTOSIX
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TODATE\\
.INDEX ^^TODATE\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE DATE IN <DEC
INTERNAL FORM GIVEN THE DAY, MONTH AND YEAR
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^TODATE\\(%<INTEGER DAY, MON, YEAR)
.P
<USE:	D=^^TODATE\\(DAY,MON,YEAR)
.LM 16;.F;.S 1

.I-8
DAY	IS AN INTEGER EXPRESSION BEING THE DAY OF THE MONTH
.I-8
MON	IS AN INTEGER EXPRESSION BEING THE MONTH OF THE YEAR
.I-8
YEAR	IS AN INTEGER EXPRESSION BEING THE YEAR, WHERE THE CENTURIES
MAY OR MAY NOT BE GIVEN
.LM 8;.S 1
THE DATE IN <DEC INTERNAL FORMAT IS COMPUTED FROM
THE INTEGER PARAMETERS AND IS RETURNED VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TO STRING\\
.INDEX ^^TO STRING\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION CREATES A ONE CHARACTER STRING
FROM A GIVEN SYMBOL.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<USE:	S=^^TO STRING\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION WHOSE LEAST SIGNIFICANT 7 BITS ARE
TO BE PLACED IN A STRING
.LM 8;.S 1
^A STRING IS CONSTRUCTED FROM THE SYMBOL GIVEN AND RETURNED
VIA %<RESULT.
.UC.F.P
<ASSOCIATED <PROCEDURES: SUB STRING, LENGTH, CHARNO
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TOTIME\\
.INDEX ^^TOTIME\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION GIVES THE VALUE OF THE TIME OF DAY
AS MILLISECONDS PAST MIDNIGHT (<DEC INTERNAL FORM), FROM THE GIVEN PARAMETERS.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^TOTIME\\(%<INTEGER HRS, MINS, SECS)
.P
<USE:	T=^^TOTIME\\(HRS,MINS,SECS)
.LM 16;.F;.S 1

.I-8
HRS	IS AN INTEGER EXPRESSION BEING THE HOUR OF THE DAY
.I-8
MINS	IS AN INTEGER EXPRESSION BEING THE MINUTE OF THE HOUR
.I-8
SECS	IS AN INTEGER EXPRESSION BEING THE SECOND OF THE MINUTE
.LM 8;.S 1
THE TIME IN <DEC INTERNAL FORM IS COMPUTED
FROM THE GIVEN PARAMETERS AND RETURNED VIA %<RESULT.
.S
^NO PARAMETER CHECKING IS DONE SO THAT THE RESULT IS CALCULATED FOR ANY
NUMBER OF HOURS, MINUTES AND SECONDS.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^TO UDT\\
.INDEX ^^TO UDT\\
.P-8
<DEFINITION: ^THIS INTEGER FUNCTION RETURNS THE DATE AND TIME
IN THE UNIVERSAL DATE-TIME FORM GIVEN THE DATE
AND TIME IN <DEC INTERNAL FORM.
.NF;.P
<SPEC:	%<EXTERNALINTEGERFN ^^TO UDT\\(%<INTEGER DATE, TIME)
.P
<USE:	UDT=^^TO UDT\\(DATE,TIME)
.LM 16;.F;.S 1

.I-8
DATE	IS AN INTEGER EXPRESSION BEING THE DATE IN <DEC INTERNAL FORM
.I-8
TIME	IS AN INTEGER EXPRESSION BEING THE TIME IN <DEC INTERNAL FORM
.LM 8;.S 1
THE DATE AND TIME IN UNIVERSAL DATE-TIME FORM IS COMPUTED
FROM THE DATE AND TIME IN <DEC INTERNAL FORM
AND RETURNED VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, UDTTOSTR,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^UDTTOSTR\\
.INDEX ^^UDTTOSTR\\
.P-8
<DEFINITION: ^THIS STRING FUNCTION RETURNS THE DATE AND
TIME GIVEN IN UNIVERSAL DATE-TIME FORM, AS AN EIGHTEEN CHARACTER STRING.
.NF;.P
<SPEC:	%<EXTERNALSTRING(18)%FN ^^UDTTOSTR\\(%<INTEGER UDT)
.P
<USE:	S=^^UDTTOSTR\\(UDT)
.LM 16;.F;.S 1

.I-8
UDT	IS AN INTEGER EXPRESSION BEING THE DATE AND TIME IN UNVERSAL DATE-TIME
FORM
.LM 8;.S 1
THE DATE-TIME PARAMETER IS TRANSLATED INTO A STRING OF THE
FORM <HH:MM:SS <DD-MON-YY AND RETURNED VIA %<RESULT.
.S
^SEE ^SECTION 2 FOR A DESCRIPTION OF THE VARIOUS DATE AND TIME FORMATS.
.UC.F.P
<ASSOCIATED <PROCEDURES: DATE, GET DATE, FROM DATE, TO DATE, DATETOSTR,
TIME, GET TIME, FROM TIME, TO TIME, TIMETOSTR,
DATETIME, GET NOW, FROM UDT, TO UDT,
DAY, DAYTOSTR,
ACCPER, STARTOFPERIOD, ENDOFPERIOD
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^USET INPUT\\
.INDEX ^^USET INPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE GIVES THE ABILITY TO READ THE NEXT BUFFER
FOR INPUT FROM A GIVEN BLOCK IN THE CURRENT INPUT FILE.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^USET INPUT\\(%<INTEGER N)
.P
<CALL:	^^USET INPUT\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION SPECIFYING THE BLOCK NUMBER
TO BE READ NEXT
.LM 8;.S 1
^THIS ROUTINE PERFORMS THE <USETI ^MONITOR CALL ON THE CURRENT
INPUT STREAM.
^THIS ^MONITOR CALL ALLOWS THE USER TO SET THE
BLOCK NUMBER OF THE NEXT BLOCK TO BE READ FROM. ^SEE THE ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL FOR FULL DETAILS OF THE FORM OF ARGUMENT AND
ITS CONDITIONS.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE INPUT, SELECT INPUT, CLOSE INPUT, RESET INPUT
.LC.P
<ERROR <CONDITIONS: ^NONE

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^USET OUTPUT\\
.INDEX ^^USET OUTPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE GIVES THE ABILITY TO WRITE THE NEXT BUFFER
FOR OUTPUT TO A GIVEN BLOCK IN THE CURRENT OUTPUT FILE.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^USET OUTPUT\\(%<INTEGER N)
.P
<CALL:	^^USET OUTPUT\\(N)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION SPECIFYING THE BLOCK NUMBER
TO BE WRITTEN NEXT
.LM 8;.S 1
^THIS ROUTINE PERFORMS THE <USETO ^MONITOR CALL ON THE CURRENT
OUTPUT STREAM.
^THIS ^MONITOR CALL ALLOWS THE USER TO SET THE
BLOCK NUMBER OF THE NEXT BLOCK TO BE WRITTEN TO. ^SEE THE ^^DEC\\SYSTEM-10
<MONITOR <CALLS ^MANUAL FOR FULL DETAILS OF THE FORM OF ARGUMENT AND
ITS CONDITIONS.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)DEFINE OUTPUT, SELECT OUTPUT, CLOSE OUTPUT,
RESET OUTPUT
.LC.P
<ERROR <CONDITIONS: ^NONE


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^WRITE\\
.INDEX ^^WRITE\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS A SIGNED DECIMAL INTEGER ON THE CURRENTLY
SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	^NOT REQUIRED
.P
<CALL:	^^WRITE\\(N,M)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION WHOSE VALUE IS TO BE PRINTED OUT
.I-8
M	IS AN INTEGER EXPRESSION SPECIFYING THE NUMBER OF PRINTING
POSITIONS THAT THE NUMBER IS TO OCCUPY
.LM 8;.S 1
^A DECIMAL INTEGER IS OUTPUT ON THE CURRENT OUTPUT STREAM
WITH 'M' PRINTING POSITIONS INCLUDING THE SIGN.
^NON-SIGNIFICANT LEADING ZEROS ARE REPLACED WITH SPACES AND A POSITIVE
SIGN IS INDICATED BY A SPACE. ^IF THE NUMBER IS HAS MORE THAN
'M' SIGNIFICANT DIGITS, THESE WILL ALL BE OUTPUT AND THE SUBSEQUENT ALLIGNMENT
OF THE OUTPUT WILL BE RIGHT SHIFTED.
.S
^IF 'M' HAS THE VALUE ZERO THEN ALL LEADING SPACES AND POSITIVE SIGN ARE SUPPRESSED.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^WRITE DA\\
.INDEX ^^WRITE DA\\
.P-8
<DEFINITION: ^THIS ROUTINE WRITES OUT THE DATA FROM A GIVEN AREA INTO
A SPECIFIED FILE, STARTING AT A SPECIFIED BLOCK.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^WRITE DA\\(%<INTEGER N, %<INTEGER<NAME BLOCK, %<<NAME BEGIN,END)
.P
<CALL:	^^WRITE DA\\(N,BLOCK,BEGIN,END)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE CHANNEL NUMBER
.I-8
BLOCK	IS THE NAME OF AN INTEGER VARIABLE WHICH ON ENTRY GIVES THE
STARTING BLOCK NUMBER AND, ON EXIT CONTAINS THE NUMBER OF THE
LAST BLOCK WRITTEN TO. ^A VALUE OF -1 CAUSES THE FILE TO BE APPENDED TO.
.I-8
BEGIN	IS THE NAME OF THE FIRST DATA ITEM OF AN AREA TO BE OUTPUT
.I-8
END	IS THE NAME OF THE LAST DATA ITEM OF AN AREA TO BE OUTPUT
.LM 8;.S 1
^THE DATA CONTAINED WITHIN THE AREA BEGIN TO END INCLUSIVELY
IS WRITTEN OUT TO THE DIRECT ACCESS FILE ON CHANNEL 'N' STARTING
AT BLOCK 'BLOCK'.
^THE DATA ITEMS MAY BE OF ANY TYPE INCLUDING RECORDS AND ARE WRITTEN
OUT STARTING AT THE BEGINNING OF THE SPECIFIED BLOCK AND ANY INCOMPLETE
BLOCKS ARE FILLED WITH WORDS CONTAINING ZERO.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X) OPEN DA, READ DA, CLOSE DA
.LC.P
<ERROR <CONDITIONS: ^THE FOLLOWING EVENTS MAY OCCUR:-
.NF.S
%<SIGNAL 20, 23, CHAN, "^READ/WRITE TO ILLEGAL <DA/SQ CHANNEL"
%<SIGNAL 20, 23, CHAN, "^READ/WRITE TO <DA/SQ CHANNEL BEFORE ^^OPEN\\ING IT"
%<SIGNAL 20, 24, CHAN, "^ACCESSING <DA CHANNEL BY <SQ ROUTINE OR VICE VERSA"
%<SIGNAL 20, 25, 0, "^STORAGE AREA FOR <DA/SQ ROUTINE INSIDE OUT"
%<SIGNAL 20, 26, BLOCK, "^ILLEGAL BLOCK NUMBER FOR <DA READ/WRITE ROUTINE"
%<SIGNAL 9, 0, CHAN, "<EOF ON <DA OR <SQ CHANNEL"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^WRITE FS\\
.INDEX ^^WRITE FS\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS OUT THE GIVEN FILE SPECIFICATION RECORD
IN THE STANDARD ^^DEC\\SYSTEM-10 FORMAT TO THE CURRENTLY SELECTED OUTPUT
STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^WRITE FS\\(%<RECORD(FILESPEC)%<NAME FS)
.P
<CALL:	^^WRITE FS\\(FS)
.LM 16;.F;.S 1

.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD TO BE OUTPUT
.LM 8;.S 1
^THE GIVEN FILE SPECIFICATION IS SENT IN THE ^^DEC\\SYSTEM-10 FILE
SPECIFICATION  FORMAT TO THE CURRENT OUTPUT STREAM.
.UC.F.P
<ASSOCIATED <PROCEDURES: READFS, FSTOSTR, STRTOFS
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^WRITE HEX\\
.INDEX ^^WRITE HEX\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS THE SPECIFIED INTEGER AS A SIGNED HEXIDECIMAL
NUMBER ON THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^WRITE HEX\\(%<INTEGER N,M)
.P
<CALL:	^^WRITE HEX\\(N,M)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE HEXIDECIMAL NUMBER TO BE PRINTED
.I-8
M	IS AN INTEGER EXPRESSION GIVING THE NUMBER OF PRINTING
POSITIONS THAT THE NUMBER IS TO OCCUPY
.LM 8;.S 1
^AN HEXIDECIMAL INTEGER IS OUTPUT ON THE CURRENT OUTPUT STREAM
WITH 'M' PRINTING POSITIONS INCLUDING THE SIGN.
^NON-SIGNIFICANT LEADING ZEROS ARE REPLACED WITH SPACES AND A POSITIVE
SIGN IS INDICATED BY A SPACE. ^IF THE NUMBER IS HAS MORE THAN
'M' SIGNIFICANT DIGITS, THESE WILL ALL BE OUTPUT AND THE SUBSEQUENT ALLIGNMENT
OF THE OUTPUT WILL BE RIGHT SHIFTED.
.S
^IF 'M' HAS THE VALUE ZERO ALL LEADING SPACES AND POSITIVE SIGN ARE SUPPRESSED.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ HEX, HEXTOSTR
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^WRITE OCTAL\\
.INDEX ^^WRITE OCTAL\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS THE SPECIFIED INTEGER AS A SIGNED OCTAL
NUMBER ON THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^WRITE OCTAL\\(%<INTEGER N,M)
.P
<CALL:	^^WRITE OCTAL\\(N,M)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE OCTAL NUMBER TO BE PRINTED
.I-8
M	IS AN INTEGER EXPRESSION GIVING THE NUMBER OF PRINTING
POSITIONS THAT THE NUMBER IS TO OCCUPY
.LM 8;.S 1
^AN OCTAL INTEGER IS OUTPUT ON THE CURRENT OUTPUT STREAM
WITH 'M' PRINTING POSITIONS INCLUDING A SIGN.
^NON-SIGNIFICANT LEADING ZEROS ARE REPLACED WITH SPACES AND A POSITIVE
SIGN IS INDICATED BY A SPACE. ^IF THE NUMBER IS HAS MORE THAN
'M' SIGNIFICANT DIGITS, THESE WILL ALL BE OUTPUT AND THE SUBSEQUENT ALLIGNMENT
OF THE OUTPUT WILL BE RIGHT SHIFTED.
.S
^IF 'M' HAS THE VALUE ZERO ALL LEADING SPACES AND POSITIVE SIGN ARE SUPPRESSED.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ OCTAL, OCTTOSTR
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^WRITE PPN\\
.INDEX ^^WRITE PPN\\
.P-8
<DEFINITION: ^THIS ROUTINE PRINTS A NUMBER AS A PROJECT-PROGRAMMER PAIR
ENCLOSED WITHIN SQUARE BRACKETS ON THE CURRENTLY SELECTED OUTPUT STREAM.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^WRITE PPN\\(%<INTEGER PPN)
.P
<CALL:	^^WRITE PPN\\(PPN)
.LM 16;.F;.S 1

.I-8
PPN	IS AN INTEGER EXPRESSION BEING A WORD CONTAINING THE OCTAL
REPRESENTATIONS OF THE PROJECT NUMBER IN OCTAL IN THE LEFT HALF AND THE
PROGRAMMER NUMBER IN OCTAL IN THE RIGHT HALF
.LM 8;.S 1
^THE INTEGER PPN IS SENT TO THE CURRENT OUTPUT STREAM IN THE FORM OF A
PROJECT-PROGRAMMER PAIR ENCLOSED IN SQUARE BRACKETS.
.UC.F.P
<ASSOCIATED <PROCEDURES: READ PPN, READ OCTAL, WRITE OCTAL
.LC.P
<ERROR <CONDITIONS: ^SEE <PRINT <SYMBOL.


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^WRITE SQ\\
.INDEX ^^WRITE SQ\\
.P-8
<DEFINITION: ^THIS ROUTINE WRITES OUT THE DATA FROM A GIVEN AREA INTO A
SPECIFIED FILE.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^WRITE SQ\\(%<INTEGER N, %<<NAME BEGIN,END)
.P
<CALL:	^^WRITE SQ\\(N,BEGIN,END)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE CHANNEL NUMBER AND LYING
IN THE RANGE 1 TO 15
.I-8
BEGIN	IS THE NAME OF THE FIRST DATA ITEM OF AN AREA TO BE OUTPUT
.I-8
END	IS THE NAME OF THE LAST DATA ITEM OF AN AREA TO BE OUTPUT
.LM 8;.S 1
^THE DATA CONTAINED WITHIN THE AREA BEGIN TO END INCLUSIVELY
IS WRITTEN OUT TO THE SEQUENTIAL FILE ON CHANNEL 'N'.
^THE DATA ITEMS MAY BE OF ANY TYPE INCLUDING RECORDS.
^THE FIRST CALL OF THIS ROUTINE AFTER A SEQUENTIAL CHANNEL HAS BEEN
OPENED DETERMINES THAT ALL SUBSEQUENT ACCESS ON THAT CHANNEL MUST BE
FOR WRITING UNLESS THE CHANNEL IS RE-OPENED.
.S 1
^DATA IS STORED ON THE EXTERNAL MEDIUM AS AN UNSTRUCTURED SEQUENCE
OF WORDS. ^IT IS THE USERS RESPONSIBILITY TO REMEMBER THE FORM OF THE
DATA STORED FOR SUBSEQUENT READING.
^THE FINAL RECORD OF A FILE MAY BE FOLLOWED BY A NUMBER OF WORDS
CONTAINING ZERO WHICH ARE USED TO FILL OUT THE LST BLOCK OF THE FILE.
.UC.F.P
<ASSOCIATED <PROCEDURES: (X)OPEN SQ, READ SQ, CLOSE SQ
.LC.P
<ERROR <CONDITIONS: ^THE FOLLOWING EVENTS MAY OCCUR:-
.NF.S
%<SIGNAL 20, 23, CHAN, "^READ/WRITE TO ILLEGAL <DA/SQ CHANNEL"
%<SIGNAL 20, 23, CHAN, "^READ/WRITE TO <DA/SQ CHANNEL BEFORE ^^OPEN\\ING IT"
%<SIGNAL 20, 24, CHAN, "^ACCESSING <DA CHANNEL BY <SQ ROUTINE OR VICE VERSA"
%<SIGNAL 20, 25, 0, "^STORAGE AREA FOR <DA/SQ ROUTINE INSIDE OUT"
%<SIGNAL 20, 26, BLOCK, "^ILLEGAL BLOCK NUMBER FOR <DA READ/WRITE ROUTINE"
%<SIGNAL 20, 27, CHAN, "^OUTPUTTING TO AN <SQ CHANNEL SET FOR INPUT"
%<SIGNAL 9, 0, CHAN, "<EOF ON <DA OR <SQ CHANNEL"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^XCOPY\\
.INDEX ^^XCOPY\\
.P-8
<DEFINITION: ^THIS ROUTINE COPIES ONE FILE INTO ANOTHER.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^XCOPY\\(%<RECORD(FILESPEC)%<NAME FS, NEW FS)
.P
<CALL:	^^XCOPY\\(FS, NEW FS)
.LM 16;.F;.S 1

.I-8
FS	IS THE NAME OF A RECORD CONTAINING THE SPECIFICATION OF THE FILE
TO BE COPIED
.I-8
NEW FS	IS THE NAME OF A RECORD CONTAINING THE FILE SPECIFICATION FOR THE COPIED FILE.
.LM 8;.S 1
THE FILE SPECIFIED IN 'FS' IS COPIED TO ANOTHER FILE WHOSE
NAME IS SPECIFIED IN 'NEW FS'.
.F.P
<ASSOCIATED <PROCEDURES: ^SEE <COPY
.LC.P
<ERROR <CONDITIONS: SEE <XOPEN <DA AND ALSO, WHEN THE <I/O CHANNEL CAPACITY IS FULL:-
.NF.S
%<SIGNAL 2, 5, 0, "^NO FREE CHANNELS FOR ^^COPY\\ING 'FILESPEC'"

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^XDEFINE INPUT\\
.INDEX ^^XDEFINE INPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE OPENS THE DEVICE OR FILE GIVEN IN THE FILE
SPECIFICATION RECORD AND ASSOCIATES IT WITH THE LOGICAL INPUT STREAM NUMBER GIVEN.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^XDEFINE INPUT\\(%<INTEGER N, %<RECORD(FILESPEC)%<NAME FS)
.P
<CALL:	^^XDEFINE INPUT\\(N,FS)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION SPECIFYING THE LOGICAL INPUT
STREAM NUMBER IN THE RANGE 1 TO 15
.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD CONTAINING THE
FILE OR DEVICE TO BE OPENED
.LM 8;.S 1
^THE DEVICE OR FILE SPECIFIED IS OPENED AND ASSOCIATED WITH
THE GIVEN LOGICAL INPUT STREAM NUMBER.
.F.P
<ASSOCIATED <PROCEDURES: ^SEE <DEFINE <INPUT
.LC.P
<ERROR <CONDITIONS: ^SEE <DEFINE <INPUT

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^XDEFINE OUTPUT\\
.INDEX ^^XDEFINE OUTPUT\\
.P-8
<DEFINITION: ^THIS ROUTINE OPENS THE DEVICE OR FILE GIVEN IN THE FILE
SPECIFICATION RECORD AND ASSOCIATES IT WITH THE LOGICAL OUTPUT STREAM NUMBER GIVEN.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^XDEFINE OUTPUT\\(%<INTEGER N, %<RECORD(FILESPEC)%<NAME FS)
.P
<CALL:	^^XDEFINE OUTPUT\\(N,FS)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION SPECIFYING THE LOGICAL OUTPUT
STREAM NUMBER IN THE RANGE 1 TO 15
.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD CONTAINING THE
FILE OR DEVICE TO BE OPENED
.LM 8;.S 1
^THE DEVICE OR FILE SPECIFIED IS OPENED AND ASSOCIATED WITH
THE GIVEN LOGICAL OUTPUT STREAM NUMBER.
.F.P
<ASSOCIATED <PROCEDURES: ^SEE <DEFINE <OUTPUT
.LC.P
<ERROR <CONDITIONS: ^SEE <DEFINE <OUTPUT.

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^XDELETE\\
.INDEX ^^XDELETE\\
.P-8
<DEFINITION: ^THIS ROUTINE DELETES THE FILE GIVEN IN THE FILE SPECIFICATION
RECORD.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^XDELETE\\(%<RECORD(FILESPEC)%<NAME FS)
.P
<CALL:	^^XDELETE\\(FS)
.LM 16;.F;.S 1

.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD INDICATING A
FILE TO BE DELETED
.LM 8;.S 1
^THE FILE SPECIFIED IN THE RECORD 'FS' IS DELETED.
.F.P
<ASSOCIATED <PROCEDURES: ^SEE <DELETE
.LC.LC.P
<ERROR <CONDITIONS: ^SEE <DELETE


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^XIS FILE\\
.INDEX ^^XIS FILE\\
.P-8
<DEFINITION: ^THIS PREDICATE TESTS TO SEE WHETHER THE SPECIFIED FILE EXISTS
OR NOT.
.NF;.P
<SPEC:	%<EXTERNALPREDICATE ^^XIS FILE\\(%<RECORD(FILESPEC)%<NAME FS)
.P
<CALL:	<%IF ^^XIS FILE\\(FS) <%THEN . . .
.LM 16;.F;.S 1

.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD CONTAINING THE NAME
OF THE FILE TO BE TESTED
.LM 8;.S 1
^THE PREDICATE HAS THE VALUE %<TRUE IF THE FILE EXISTS AND
%<FALSE IF IT DOES NOT, OR CANNOT BE ACCESSED FOR SOME REASON.
.F.P
<ASSOCIATED <PROCEDURES: ^SEE <IS <FILE
.LC.LC.P
<ERROR <CONDITIONS: ^SEE <IS <FILE
.NF.S
   (WHEN THE FULL <I/O CAPACITY IS BEING USED)
%<SIGNAL 2, 5, 0, "^ALL <I/O CHANNELS IN USE"
   OR (USUALLY WHEN A BAD DEVICE IS GIVEN)
%<SIGNAL 10, 6, 0, "^CANNOT OPEN DEVICE 'DEVICE'"


.S 4;.TEST PAGE 20;.NAP;.F;.C
^^XOPEN DA\\
.INDEX ^^XOPEN DA\\
.P-8
<DEFINITION: ^THIS ROUTINE HAS THE SAME EFFECT AS ^^OPEN DA\\ EXCEPT THAT
IT TAKES A FILE SPECIFICATION RECORD NAME AS ITS SECOND PARAMETER AND NOT
A STRING.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^XOPEN DA\\(%<INTEGER N, %<RECORD(FILESPEC)%<NAME FS)
.P
<CALL:	^^XOPEN DA\\(N,FS)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE LOGICAL CHANNEL NUMBER TO BE
ASSOCIATED WITH THE SPECIFIED FILE. ^IT MUST LIE IN THE RANGE 1 TO 15.
.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD CONTAINING THE NAME
OF THE FILE TO BE OPENED
.LM 8;.S 1
^THE SPECIFIED FILE IS OPENED FOR BOTH READING OR WRITING AND
IS ASSOCIATED WITH THE GIVEN LOGICAL CHANNEL NUMBER.
.F.P
<ASSOCIATED <PROCEDURES: ^SEE <OPEN <DA
.LC.P
<ERROR <CONDITIONS: ^SEE ^^OPEN DA\\

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^XOPEN SQ\\
.INDEX ^^XOPEN SQ\\
.P-8
<DEFINITION: ^THIS ROUTINE HAS THE SAME EFFECT AS ^^OPEN SQ\\ EXCEPT THAT
IT TAKES A FILE SPECIFICATION RECORD NAME AS ITS SECOND PARAMETER AND NOT
A STRING.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^XOPEN SQ\\(%<INTEGER N, %<RECORD(FILESPEC)%<NAME FS)
.P
<CALL:	^^XOPEN SQ\\(N,FS)
.LM 16;.F;.S 1

.I-8
N	IS AN INTEGER EXPRESSION BEING THE LOGICAL CHANNEL NUMBER TO BE
ASSOCIATED WITH THE SPECIFIED FILE. ^IT MUST LIE IN THE RANGE 1 TO 15.
.I-8
FS	IS THE NAME OF A FILE SPECIFICATION RECORD CONTAINING THE NAME OF
THE FILE TO BE OPENED
.LM 8;.S 1
^THE SPECIFIED FILE IS OPENED FOR EITHER READING OR WRITING AND
IS ASSOCIATED WITH THE GIVEN LOGICAL CHANNEL NUMBER.
^BUT NOTE THAT BOTH OPTIONS OF READING AND WRITING MAY NOT BE EXERCISED
AND THAT THE FIRST CALL OF EITHER <READ <SQ OR <WRITE <SQ
DETERMINES THE SUBSEQUENT TYPE OF ACCESS.
.F.P
<ASSOCIATED <PROCEDURES: ^SEE <OPEN <SQ
.LC.P
<ERROR <CONDITIONS: ^SEE ^^OPEN SQ\\

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^XRENAME\\
.INDEX ^^XRENAME\\
.P-8
<DEFINITION: ^THIS ROUTINE ALLOWS A SPECIFIED DISK FILE TO BE RENAMED.
.NF;.P
<SPEC:	%<EXTERNALROUTINE ^^XRENAME\\(%<RECORD(FILESPEC)%<NAME FS1,FS2)
.P
<CALL:	^^XRENAME\\(FS1,FS2)
.LM 16;.F;.S 1

.I-8
FS1	IS THE NAME OF A FILE SPECIFICATION RECORD CONTAINING THE NAME OF
THE FILE TO BE RENAMED
.I-8
FS2	IS THE NAME OF A FILE SPECIFICATION RECORD CONTAINING THE NAME
WHICH THE FILE IS TO BE GIVEN
.LM 8;.S 1
^A SPECIFIED FILE IS GIVEN A NEW NAME.
.F.P
<ASSOCIATED <PROCEDURES: ^SEE <RENAME
.LC.P
<ERROR <CONDITIONS: ^SEE <RENAME

.S 4;.TEST PAGE 20;.NAP;.F;.C
^^ZERO\\
.INDEX ^^ZERO\\
.P-8
<DEFINITION: ^THIS ROUTINE SETS A BLOCK OF STORE TO ZERO.
.NF;.P
<SPEC:	%<SYSTEMROUTINE ^^ZERO\\(%<<NAME FROM, TO)
.P
<CALL:	^^ZERO\\(FROM,TO)
.LM 16;.F;.S 1

.I-8
FROM	IS THE NAME OF A VARIABLE FROM WHICH TO START ZEROING STORE
.I-8
TO	IS THE NAME OF A VARIABLE WHICH WILL BE THE LAST ITEM TO BE ZEROED.
.LM 8;.S 1
THE BLOCK OF STORE BETWEEN AND INCLUDING THE TWO PARAMETERS GIVEN IS SET TO ZERO.
^IF THE VARIABLE GIVEN IS A RECORD, STRING OR ARRAY, THE
WHOLE RECORD, STRING OR ARRAY WILL BE ZEROED.
.UC.F.P
<ASSOCIATED <PROCEDURES: BLT
.F.LC.P
<ERROR <CONDITIONS: ^THE USER SHOULD BE SURE THAT THEY UNDERSTAND HOW
VARIABLES ARE STORED, WHEN DOING COMPLEX ZEROING OPERATIONS, AS
INCAUTIOUS USE OF THIS ROUTINE, MAY ZERO AREAS OF STORE AND
VARIABLES WHICH MAY CAUSE ERRORS OF MANY TYPES.

.LM 0.PAGE;.NAP;.NF
2. ^^DATE-TIME FORMATS\\
.lm 4
.s2
.F
2.1 ^INTERNAL <DEC FORMAT.
.AP.P 0
 ^THE DATE IS REPRESENTED AS A FIFTEEN BIT INTEGER, WHICH IS CALCULATED
BY INCREMENTING IT BY 1 EACH DAY, 31 EACH MONTH (REGARDLESS OF THE ACTUAL
NUMBER OF DAYS IN THE MONTH), AND BY 12*31 EACH YEAR (REGARDLESS OF THE
NUMBER OF DAYS IN THE YEAR).
THE DATE IN THIS FORM IS EASILY TRANSFORMED INTO THE DAY, MONTH AND YEAR.
.NAP.NF.S
         DATE = DAY + (MONTH*31 + (YEAR*12))
.AP.F
 ^THE TIME IS REPRESENTED AS THE NUMBER OF MILLISECONDS PAST MIDNIGHT.
.NAP.NF.S
2.2 ^UNIVERSAL DATE-TIME FORMAT.
.AP.F.S
 ^THIS COMPRISES A SINGLE 36-BIT WORD WHOSE LEFT HALF IS THE NUMBER OF DAYS
SINCE ^WEDNESDAY ^NOVEMBER 18TH. 1858 (DAY 1) AND WHOSE RIGHT HALF
IS IN FRACTIONS OF A DAY, WITH A RESOLUTION OF ABOUT ONE-THIRD OF A
SECOND. ^FROM IT THE DAY OF THE WEEK AND THE NUMBER OF DAYS BETWEEN
TWO DATES IS EASILY CALCULATED.
.NAP.NF.S
2.3 ^ACCOUNTING PERIODS.
.AP.S.F
 ^THIS IS A SYSTEM OF REPRESENTATION BASED ON FOUR WEEK PERIODS. ^THE ACCOUNTING PERIOD IS
REPRESENTED AS A FOUR DIGIT NUMBER, WHERE THE FIRST PAIR OF DIGITS ARE THE
LAST TWO DIGITS OF THE YEAR, AND THE SECOND PAIR OF DIGITS IS THE MONTH
IN THE YEAR FROM 00 TO 13 WHERE THE WEEKS ARE COUNTED FROM ^MONDAY
TO ^SUNDAY INCLUSIVE.  ^E.G. 7802 IS THE SECOND PERIOD IN 1978.
.PAGE.NAP.NF
.i-4
3. ^^DEFINITION OF THE FILE SPECIFICATION RECORD\\
.s2;.nf
.NAP
.FLAG CAP
^THE FILE RECORD IS DEFINED AS FOLLOWS:
.lm0
.S
<%RECORDFORMAT <FILESPEC( %^C
   <%STRING(6) <DEV,      - ^DEVICE NAME
   <%STRING(6) <FILE,     - ^FILE NAME
   <%STRING(3) <EXT,      - ^FILE EXTENSION
   <%INTEGER <PPN,        - ^PROJECT-PROGRAMMER PAIR
   <%STRING(6)%ARRAY <SFDS(1:MAX <SFDS),
                        - ^LIST OF SUB-FILE DIRECTORIES
   <%INTEGER <PROT,       - 3 OCTAL DIGIT PROTECTION CODE
   <%STRING(20) <SWITCHES)- ^STRING OF SWITCHES
.S 1
^SWITCHES RECOGNISED BY THE <DEC-10 SYSTEM LIBRARY ARE:-
.F
.LM19.TS 19.S.I-15
   </ALLOCATE: N	^ALLOCATE 'N' CONTIGUOUS BLOCKS WHEN CREATING A FILE
.I-15
   </BLOCKSIZE:#N	^SET BLOCKSIZE FOR A DEVICE
.I-15
   </BUFFNUM: #N	^USE 'N' BUFFERS IN THE BUFFER RING
.I-15
   </BYTE: ####N	^SET THE BYTE SIZE FOR READING/WRITING
.I-15
   </DENSITY: #N	^SET DENSITY FOR MAGNETIC TAPE
( 200, 556, 800 OR 1600 BPI )
.I-15
   </ESTIMATE: N	^SET ASIDE 'N' BLOCKS WHEN CREATING A FILE
.I-15
   </EXTEND: ##N	^USE AN EXTENDED ^LOOKUP/^ENTER BLOCK
WHERE 'N' IS OMMITTED 35 OCTAL IS ASSUMED
.I-15
   </FUNCTION: N	^THE APPROPRIATE <FILOP FUNCTION IS USED
.I-15
   </MODE: ####N	^SET THE MODE TO BE THIS (THE STATUS WORD)
.I-15
   </PARITY: ##N	^SET PARITY FOR MAGNETIC TAPES: 0 = EVEN, 1 = ODD
.I-15
   </VERSION: #N	^VERSION NUMBER INTERPRETED IN <DEC <.JBVER FORMAT
(SEE ^^DEC\\SYSTEM 10 ^MONITOR ^CALLS ^MANUAL)
.LM 0.F
^SWITCHES CAN BE ABREVIATED TO THE SHORTEST UNIQUE STRING.
^NUMBERS CAN BE SPECIFIED AS OCTAL IF PRECEDED BY A HASH SIGN.
.NF.S
E.G.    </BL:_#203   - SET THE BLOCKSIZE TO OCTAL 203

.FLAGS CAP.PAGE
.LC.NAP.NOFILL;.TS 13,33
4. ^^SYSTEM LIBRARY PROCEDURES SUMMARY\\
.s2
^^NAME	CLASS TYPE	PARAMETERS\\
.S
<ACCPER	EXT %INTEGERFN	%INTEGER UDT
<ADDR	    %INTEGERFN	%NAME X
<ASCTOSTR	EXT %STRING(255)%FN	%NAME ADR
<BINTOSTR	EXT %STRING(36)%FN	%INTEGER NUM
<BLT	SYS %ROUTINE	%NAME FROM,TO %INTEGER LEN
<BYTEINTEGER	    %BYTEINTEGERMAP	%INTEGER ADR
<CALL(0-9)	EXT %ROUTINE	%NAME RTN, ...
<CALLI1	EXT %ROUTINE	%INTEGER N %INTEGERNAME AC
<CALLI2	EXT %PREDICATE	%INTEGER N %INTEGERNAME AC
<CALLI3	EXT %PREDICATE	%INTEGER N %INTEGERNAME AC
<CHARNO	    %BYTEINTEGERFN	%STRINGNAME S %INTEGER N
<CHECKPOINT	EXT %ROUTINE
<CLOSE	SYS %ROUTINE	%INTEGER CHAN
<CLOSE <DA	EXT %ROUTINE	%INTEGER CHAN
<CLOSE <INPUT	    %ROUTINE
<CLOSE <OUTPUT	    %ROUTINE
<CLOSE <SQ	EXT %ROUTINE	%INTEGER CHAN
<COPY	EXT %ROUTINE	%STRING(255) ORIG,NEW
<CPUTIME	EXT %INTEGERFN
<CUSP <FILES	EXT %ROUTINE	%RECORD(FILESPEC)%NAME R,S,
	    	T,U %INTEGER CHAN,
	    	%INTEGERNAME FOUND
<DATE	EXT %STRING(9)%FN
<DATETIME	EXT %STRING(18)%FN
<DATETOSTR	EXT %STRING(9)%FN	%INTEGER DATE
<DAY	EXT %STRING(9)%FN
<DAYTOSTR	EXT %STRING(9)%FN	%INTEGER UDT
<DDT	SYS %ROUTINE	%NAME X
<DECODE	EXT %ROUTINE	%INTEGER INST,ADR
<DEFAULT	EXT %ROUTINE	%RECORD(FILESPEC)%NAME F,F1
<DEFINE <INPUT	    %ROUTINE	%INTEGER N %STRING(255) S
^^DEFINE OUTPUT\\    %ROUTINE	%INTEGER N %STRING(255) S
<DELETE	EXT %ROUTINE	%STRING(255) SPEC
<ECHO	EXT %ROUTINE
<ENDOFPERIOD	EXT %INTEGERFN	%INTEGER PERIOD
<ESC	    %CONSTINTEGER
<EVENT	    %INTERGERFN
<EVENT <INFO	    %INTEGERFN
<FF	    %CONSTINTEGER
<FILOP	SYS %PREDICATE	%RECORD(SCB)%NAME R,
	    	%INTEGERNAME ERR
<FINIT	SYS %ROUTINE
<FLOAT	    %REALFN	%INTEGER N
<FRAC <PT	    %LONGREALFN	%LONGREAL A
<FREEVEC	SYS %ROUTINE	%INTEGER ADR,LEN
<FROMDATE	EXT %ROUTINE	%INTEGER DATE,
	    	%INTEGERNAME D,M,Y
<FROMTIME	EXT %ROUTINE	%INTEGER TIME,
	    	%INTEGERNAME H,M,S
<FROMUDT	EXT %ROUTINE	%INTEGER UDT,
	    	%INTEGERNAME DATE,TIME
<FSTOSTR	EXT %STRING(255)%FN	%RECORD(FILESPEC)%NAME FS
<GET <CHANNEL	SYS %INTEGERFN
<GETDATE	EXT %INTEGERFN
<GETNOW	EXT %INTEGERFN
<GETPAGES	SYS %ROUTINE	%INTEGER FIRST,LAST
<GETSEG	EXT %ROUTINE	%STRING(6) DEV,FILE,
	    	%STRING(3) EXT %INTEGER PPN
<GETSTS	SYS %INTEGERFN	%INTEGER CHAN
<GETTAB	SYS %PREDICATE	%INTEGER TABLE,INDEX,
	    	%INTEGERNAME RESULT
<GETTIME	EXT %INTEGERFN
<GETVEC	SYS %INTEGERFN	%INTEGER SIZE
<HEXTOSTR	EXT %STRING(9)%FN	%INTEGER N
<ICALL(0-9)	EXT %INTEGERFN	%NAME FN, ...
<IMOD	    %INTEGERFN	%INTEGER N
<INDEV	EXT %INTEGERFN
<INITFOR	SYS %ROUTINE
<INITHEAP	SYS %ROUTINE
<INITIO	SYS %ROUTINE
<INITSTACK	SYS %ROUTINE
<INPUT	SYS %ROUTINE
^^INPUT PENDING\\    %PREDICATE
<INSTATUS	EXT %INTEGERFN
<INSTREAM	    %INTEGERFN
<INT	    %INTEGERFN	%LONGREAL A
<INTEGER	    %INTEGERMAP	%INTEGER ADR
<INT <PT	    %INTEGERFN	%LONGREAL A
<INTTOSTR	EXT %STRING(12)%FN	%INTEGER N
<IOUUO	SYS %PREDICATE	%INTEGER FN,CHAN,
	    	%NAME ADR
<IOWD	SYS %INTEGERFN	%INTEGER LEN,
	    	%INTEGERNAME ADR
<ISFILE	EXT %PREDICATE	%STRING(255) SPEC
<JOBFILE	EXT %STRING(6)%FN	%STRING(3) S
<JOBNUM	EXT %INTEGERFN
<JSYS(0-4)	EXT %ROUTINE	%INTEGER N %INTEGERNAME ...
<LENGTH	    %BYTEINTEGERFN	%STRINGNAME S
<MATCH	EXT %INTEGERFN	%STRINGNAME SRC,
	    	%STRING(255) TARGET
<MOD	    %LONGREALFN	%LONGREAL A
<NEWLINE	    %ROUTINE
<NEWLINES	    %ROUTINE	%INTEGER N
<NEWPAGE	    %ROUTINE
<NEXT <ITEM	    %STRING(1)%FN
<NEXT <SYMBOL	    %INTEGERFN
<NL	    %INTEGERFN
<NOECHO	EXT %ROUTINE
<OCTTOSTR	EXT %STRING(12)%FN	%INTEGER N
<OPEN <DA	EXT %ROUTINE	%INTEGER CHAN,
	    	%STRING(255) SPEC
<OPEN <SQ	EXT %ROUTINE	%INTEGER CHAN,
	    	%STRING(255) SPEC
<OUTDEV	EXT %INTEGERFN
<OUTPUT	SYS %ROUTINE
<OUTSTATUS	EXT %INTEGERFN
<OUTSTREAM	    %INTEGERFN
<PI	    %CONSTLONGREAL
<PPN	EXT %INTEGERFN
<PRINT	    %ROUTINE	%LONGREAL A %INTEGER N,M
<PRINT <FL	    %ROUTINE	%LONGREAL A %INTEGER N
<PRINT <STRING	    %ROUTINE	%STRING(255) S
<PRINT <SYMBOL	    %ROUTINE	%INTEGER N
<PROMPT	EXT %ROUTINE	%STRING(255) S
<RAD50	EXT %INTEGERFN	%STRING(6) S
<RCALL(0-9)	EXT %REALFN	%NAME FN, ...
<READ	    %ROUTINE	%NAME A
<READ <DA	EXT %ROUTINE	%INTEGER CHAN,
	    	%INTEGERNAME BLOCK,
	    	%NAME START,END
<READ <FS	EXT %ROUTINE	%RECORD(FILESPEC)%NAME FS
<READ <HEX	EXT %ROUTINE	%INTEGERNAME N
<READ <ITEM	    %ROUTINE	%STRINGNAME S
<READ <OCTAL	EXT %ROUTINE	%INTEGERNAME N
<READ <PPN	EXT %ROUTINE	%INTEGERNAME PPN
<READ <SQ	EXT %ROUTINE	%INTEGER CHAN,
	    	%NAME START,END
<READ <STRING	    %ROUTINE	%STRINGNAME S
<READ <SYMBOL	    %ROUTINE	%NAME N
<READ <TEXT	    %ROUTINE	%STRINGNAME S,
	    	%INTEGER DELIM
<REAL	    %REALMAP	%INTEGER ADR
<RECORD	    %RECORDMAP	%INTEGER ADR
<RELEASE	SYS %ROUTINE	%INTEGER CHAN
<REM	    %INTEGERFN	%INTEGER N,M
<RENAME	EXT %ROUTINE	%STRING(255) ORIG,NEW
<REPORT	EXT %ROUTINE	%STRING(255) S
<RESET <INPUT	EXT %ROUTINE
<RESET <OUTPUT	EXT %ROUTINE
<RESTORE	EXT %ROUTINE
<RUN	EXT %ROUTINE	%STRING(6) DEV,FILE,
	    	%STRING(3) EXT,
	    	%INTEGER PPN,OFFSET
<SAVE <ACS	EXT %ROUTINE
<SDEF <INPUT	EXT %ROUTINE	%INTEGER N %STRINGNAME S
<SDEF <OUTPUT	EXT %ROUTINE	%INTEGER N %STRINGNAME S
<SELECT <INPUT	    %ROUTINE	%INTEGER N
<SELECT <OUTPUT    %ROUTINE	%INTEGER N
<SET <STREAMS	EXT %ROUTINE
<SETSTS	SYS %ROUTINE	%INTEGER CHAN,BITS
<SHIFTC	EXT %INTEGERFN	%INTEGER NUM,TIMES
<SHORTINTEGER	    %SHORTINTEGERMAP	%INTEGER ADR
<SKIP <SYMBOL	    %ROUTINE
<SLEEP	EXT %ROUTINE	%INTEGER N
<SP	    %CONSTINTEGER
<SPACE	    %ROUTINE
<SPACES	    %ROUTINE	%INTEGER N
^^STARTOFPERIOD\\EXT %INTEGERFN	%INTEGER PERIOD
<STRING	    %STRINGMAP	%INTEGER ADR
<STRTOASC	EXT %ROUTINE	%STRINGNAME S,
	    	%NAME ADR
<STRTOFS	EXT %RECORD(FILESPEC)%FN	%STRING(255) SPEC
<STRTOHEX	EXT %INTEGERFN	%STRINGNAME S
<STRTOINT	EXT %INTEGERFN	%STRINGNAME S
<STRTOOCT	EXT %INTEGERFN	%STRINGNAME S
<STRTOSIX	EXT %INTEGERFN	%STRING(6) S
<SUBEVENT	    %INTEGERFN
<SUB <STRING	    %STRING(255)%FN	%STRINGNAME S %INTEGER N,M
<SWITCH <ARG	EXT %PREDICATE	%STRING(255)%NAME S,
	    	%STRING(11) TARGET,
	    	%NAME ARG
<TAB	    %CONSTINTEGER
<TAPOP	SYS %PREDICATE	%INTEGER FUNCT,CHAN,NARGS,
	    	%INTEGERARRAYNAME ARGS,
	    	%INTEGERNAME RESULT
<TIME	EXT %STRING(8)%FN
<TIMETOSTR	EXT %STRING(8)%FN	%INTEGER TIME
<TMPCOR	SYS %ROUTINE	%INTEGER N,IOWD,FILE
<TODATE	EXT %INTEGERFN	%INTEGER D,M,Y
<TOSTRING	    %STRING(1)%FN	%INTEGER N
<TOTIME	EXT %INTEGERFN	%INTEGER H,M,S
<TOUDT	EXT %INTEGERFN	%INTEGER DATE,TIME
<UDTTOSTR	EXT %STRING(18)%FN	%INTEGER UDT
<USET <INPUT	EXT %ROUTINE	%INTEGER BLOCK
<USET <OUTPUT	EXT %ROUTINE	%INTEGER BLOCK
<WRITE	    %ROUTINE	%INTEGER N,M
<WRITE <DA	EXT %ROUTINE	%INTEGER CHAN,
	    	%INTEGERNAME BLOCK,
	    	%NAME START,END
<WRITE <FS	EXT %ROUTINE	%RECORD(FILESPEC)%NAME FS
<WRITE <HEX	EXT %ROUTINE	%INTEGER N,M
<WRITE <OCTAL	EXT %ROUTINE	%INTEGER N,M
<WRITE <PPN	EXT %ROUTINE	%INTEGER PPN
<WRITE <SQ	EXT %ROUTINE	%INTEGER CHAN,
	    	%NAME START,END
<XCOPY	EXT %ROUTINE	%RECORD(FILESPEC)%NAME F,F1
^^XDEFINE INPUT\\    %ROUTINE	    %INTEGER N,
		%RECORD(FILESPEC)%NAME FS
^^XDEFINE OUTPUT\\   %ROUTINE	    %INTEGER N,
		%RECORD(FILESPEC)%NAME FS
<XDELETE	EXT %ROUTINE	%RECORD(FILESPEC)%NAME FS
<XISFILE	EXT %PREDICATE	%RECORD(FILESPEC)%NAME FS
<XOPEN <DA	EXT %ROUTINE	%INTEGER CHAN,
	    	%RECORD(FILESPEC)%NAME FS
<XOPEN <SQ	EXT %ROUTINE	%INTEGER CHAN,
	    	RECORD(FILESPEC)%NAME FS
<XRENAME	EXT %ROUTINE	%RECORD(FILESPEC)%NAME F,F1
<ZERO	SYS %ROUTINE	%NAME FROM,TO

.page
.c;^INDEX OF ^LIBRARY ^PROCEDURES
.DO INDEX
