IDENT ENQUIRE,STR,ENQUIRE
ABS
SST
SYSCOM B1
ENTRY ENQUIRE
ENTRY LENGTH
ENTRY STATUS
ENTRY RFL=
ENTRY SSJ=
ENTRY SSM=
TITLE ENQUIRE - ENQUIRE PROCESSOR.
SPACE 4,10
*COMMENT ENQUIRE - ENQUIRE ABOUT JOB STATUS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
**** ENQUIRE - PROVIDE JOB STATUS.
* L. CLINTON 74/01/23.
* D. D. SADLER 75/02/18.
SPACE 4,10
*** COMMAND FORMATS.
*
* ENQUIRE(O=LFN1,FN=LFN2,OP=X)
* ENQUIRE(JSN=AAAA,O=LFN1)
* ENQUIRE(JSN,O=LFN1)
* ENQUIRE(UJN=BBBBBBB,O=LFN1)
* ENQUIRE(UJN,O=LFN1)
* ENQUIRE. - SAME AS ENQUIRE(OP=A).
*
* LENGTH(LFN2) - SAME AS ENQUIRE(FN=LFN2).
*
* STATUS(...) - SAME AS ENQUIRE(...).
* STATUS. - SAME AS ENQUIRE.
*
* PARAMETERS ARE ORDER-INDEPENDENT, AND ABSENCE OF
* A KEYWORD IMPLIES *OP*.
*
* LFN1 = OUTPUT FILE NAME. DEFAULT IS *OUTPUT*.
*
* LFN2 = USER-S FILE NAME TO SEARCH FOR.
*
* AAAA = JOB SEQUENCE NUMBER (JSN) TO SEARCH FOR.
*
* BBBBBBB = USER JOB NAME (UJN) TO SEARCH FOR.
*
* FOR THE *FN*, *JSN*, AND *UJN* PARAMETERS, WHEN THE
* SPECIFIED FILE OR JOB IS NOT FOUND, AN INFORMATIVE
* MESSAGE IS WRITTEN TO THE OUTPUT FILE IF IT IS
* ASSIGNED TO A TERMINAL. OTHERWISE THE MESSAGE IS
* WRITTEN TO THE USER-S DAYFILE.
*
* X = STRING OF CONCATENATED OPTION LETTERS SPECIFYING OPTIONS
* TO BE EXECUTED. THE MAXIMUM NUMBER OF LETTERS IN THE
* STRING IS 7. ENQUIRY INFORMATION IS RETURNED TO THE
* OUTPUT FILE.
*
* THE POSSIBLE OPTION LETTERS ARE-
* A = SELECTION OF ALL OPTIONS.
* B = ENQUIRY INFORMATION GIVES USER IDENTIFICATION
* AND HIS PRIORITIES.
* D = ENQUIRY INFORMATION GIVES RESOURCE DEMAND AND
* ASSIGNED COUNTS.
* F = ENQUIRY INFORMATION IS IN SAME FORMAT AS THAT GIVEN
* BY *FN* PARAMETER, BUT FOR ALL USER-S WORKING FILES.
* NOTE - LENGTH VALUE DISPLAYED FOR EACH FILE
* IS RELEVANT ONLY FOR MASS STORAGE FILES.
* J = ENQUIRY INFORMATION GIVES CONTENTS OF USER-S
* CONTROL REGISTERS AND ERROR FLAG REGISTER.
* L = ENQUIRY INFORMATION GIVES LOADER INFORMATION,
* AND CONSISTS OF USER-S MAP OPTIONS AND GLOBAL
* LIBRARY SET.
* R = ENQUIRY INFORMATION GIVES AMOUNT OF RESOURCES
* USER HAS USED.
* S = ENQUIRY INFORMATION GIVES USER-S CURRENT SRU VALUE.
* T = ENQUIRY INFORMATION GIVES USER-S CURRENT CP TIME VALUE.
* U = ENQUIRY INFORMATION GIVES RESOURCE USAGE ALLOWED
* USER, AND CONSISTS OF NUMBER OF DAYFILE MESSAGES,
* JOB STEP TIME AND SRU LIMITS, ACCOUNT BLOCK SRU LIMIT,
* COMMANDS, DISPOSED FILES, AND MASS STORAGE
* SPACE ALLOWED.
SPACE 4,10
*** DAYFILE MESSAGES.
*
* * ARGUMENT ERRORS.* = *ENQUIRE* CALL WAS NOT VALID.
*
* * ENQUIRE ABORTED.* = *ENQUIRE* HAS BEEN ABORTED AS A RESULT
* OF A SYSTEM ERROR.
*
* * ENQUIRY COMPLETE.* = INFORMATIVE MESSAGE INDICATING THAT
* THE ENQUIRY HAS COMPLETED.
*
* * FILE NOT FOUND.* = REQUESTED FILE COULD NOT BE FOUND.
*
* * INCORRECT OPTION X.* = OPTION *X* IS NOT DEFINED IN
* *ENQUIRE*.
*
* * INCORRECT QUEUE TYPE.* = *ENQUIRE* WAS ABORTED DUE TO AN
* INCORRECT QUEUE TYPE ERROR CODE RETURNED BY *QAC* ON A
* PEEK REQUEST.
*
* * NO JOBS FOUND.* = NO JOBS WERE FOUND FOR THE USER.
*
* * NNNNNNN NOT FOUND.* = THE SPECIFIED JSN (JSN=NNNN)
* OR UJN (UJN=NNNNNNN) WAS NOT FOUND.
*
* * QAC ERROR ENCOUNTERED.* = *ENQUIRE* WAS ABORTED DUE TO AN
* UNEXPECTED ERROR CODE RETURNED BY *QAC*.
SPACE 4,10
** COMMON DECKS.
*CALL COMCCMD
*CALL COMCMAC
*CALL COMSEJT
*CALL COMSJIO
*CALL COMSLFD
*CALL COMSMLS
*CALL COMSPFM
*CALL COMSQAC
*CALL COMSREM
*CALL COMSRSX
*CALL COMSSCD
*CALL COMSSFM
*CALL COMSSSJ
TITLE MACRO DEFINITION.
SPACE 4,15
** INDEX - INDEX TABLE ENTRY GENERATION.
*
* INDEX GENERATES TABLES WHICH ARE TO BE INDEXED BY VALUES
* WHICH MAY CHANGE DUE TO ASSEMBLY MODES OR OPTIONS.
*
* INDEX NAME,IND,ADD
*
* ENTRY *NAME* = NAME OF TABLE ENTRY.
* *IND* = INDEX AT WHICH ENTRY IS TO BE PLACED.
* *ADD* = ADDRESS FIELD OF ENTRY GENERATION INSTRUCTION.
PURGMAC INDEX
MACRO INDEX,NAME,IND,ADD
IFC NE,*NAME**
NAME CON 0
.1 SET NAME
BSSZ IND-1
ELSE
ORG .1+IND
IFC NE,*ADD**,2
LOC IND
CON ADD
BSS 0
ENDIF
INDEX ENDM
SPACE 4,10
** LDEF - LINE DEFINITION ENTRY GENERATION.
*
* LDEF WO,CL
*
* ENTRY WO = WORD OFFSET INTO STRING BUFFER.
* CL = NUMBER OF CHARACTERS TO ENTER INTO STRING BUFFER.
*
*T 24/0, 18/WO, 18/CL
PURGMAC LDEF
LDEF MACRO WO,CL
VFD 24/0,18/WO,18/CL
LDEF ENDM
SPACE 4,10
** TABLE - GENERATE TABLE ENTRY.
*
* TABLE A,B
*
* ENTRY A = NUMERIC VALUE.
* B = NUMERIC VALUE.
*
*T 18/A, 24/0, 18/B
PURGMAC TABLE
TABLE MACRO A,B
VFD 18/A,24/0,18/B
TABLE ENDM
TITLE PROGRAM CONSTANTS.
SPACE 4,10
** PROGRAM CONSTANTS.
ORG 110B
STR BSS 0
* SSJ CONTROL.
SSJ= EQU SSJD SSJ= PRIVILEGES ONLY AND DROP FILES
* BUFFER PARAMETERS.
FBUFL EQU 1+2*MXLF+1 *GETFNT*/COMMAND BUFFER LENGTH
OBUFL EQU 201B OUTPUT BUFFER LENGTH
LBUFL EQU 25 LIBRARY BUFFER LENGTH
RBUFL EQU 300B REPLY BUFFER LENGTH
USBBL EQU 92 UNPACK STRING BUFFER LENGTH
USBL$ EQU 1 VARIABLE LENGTH OPTION FOR UNPACK BUFFER
WBUFL EQU 10B WORKING BUFFER LENGTH
NCST EQU 10B COMMAND COUNT
NUMQ EQU 6 NUMBER OF QUEUE TYPES
TBUFL MAX LBUFL,RBUFL,WBUFL SCRATCH BUFFER LENGTH
* PRINTER CONTROL CHARACTERS.
PAGE DATA 1L1 PAGE EJECT
TRPL DATA 1L- TRIPLE SPACE
SPACE 4,10
* STATUS MESSAGES.
INQM DATA L*INPUT QUEUE *
PRQM DATA L*PRINT QUEUE *
PHQM DATA L*PUNCH QUEUE *
PLQM DATA L*PLOT QUEUE *
WTQM DATA L*WAIT QUEUE *
PRSM DATA L*ROLLED *
EXSM DATA L*EXECUTING *
ROSM DATA L*ROLLED *
SISM DATA L*SCP ROLLIN *
SOSM DATA L*SCP ROLLOUT *
TOSM DATA L*T/E ROLLOUT *
IOSM DATA L*ROLLED *
DOSM DATA L*IDLE *
SUSM DATA L*SUSP XXX MIN*
PCSM DATA L*PCP ROLLOUT *
ERSM DATA L*ROLLOUT ERROR*
SWSM DATA L*SERVICE WAIT *
SPACE 4,10
* ERROR MESSAGES.
EMSA DATA L* ENQUIRE ABORTED.*
EMSB DATA L* INCORRECT QUEUE TYPE. *
EMSC DATA L* NO JOBS FOUND.*
EMSD DATA L* NOT FOUND. *
EMSE DATA L* QAC ERROR ENCOUNTERED.*
EMSF DATA L* ENQUIRY COMPLETE.*
FETS SPACE 4,10
* FETS.
O BSS 0
OUTPUT FILEB OBUF,OBUFL,FET=9 OUTPUT
F BSS 0
FILEFET RFILEB FBUF,FBUFL,FET=9 *GETFNT*/COMMAND FILE
SPACE 4,10
** *QAC* PARAMETER BLOCK.
BQAC VFD 50/0,9/PKFC,1/0 REQUEST PREFIX PORTION
VFD 36/0,6/11,18/RBUF
VFD 42/0,18/RBUF
VFD 42/0,18/RBUF
VFD 42/0,18/RBUF+RBUFL
BQSC VFD 60/0 SELECTION CRITERIA PORTION
VFD 60/0
VFD 24/0,24/DLSF,12/ZPSF
VFD 12/77B,48/0
VFD 18/0,18/3R***,24/0
VFD 60/0
VFD 60/0
BQPF VFD 60/-0 PEEK FUNCTION PORTION
VFD 12/-0,48/0
VFD 60/0
VFD 60/0
* PEEK INFORMATION BITS.
PIUJ BSS 0 UJN PARAMETERS
VFD 36/0
VFD 12/LDPB+M2PB+M1PB+ESPB
VFD 12/UJPB+FUPB+OTPB+JSPB
PIJS BSS 0 JSN PARAMETERS
VFD 36/0
VFD 12/LDPB+ESPB
VFD 12/FUPB+OTPB+JSPB
PIEJ BSS 0 EQUIVALENCED JSN PARAMETERS
VFD 24/0
VFD 12/ALPB
VFD 12/LDPB+CSPB+DYPB+ASPB+SLPB+M2PB+M1PB+ESPB+FLPB
VFD 12/UJPB+FUPB+UNPB+PRPB+OTPB+JSPB
SPACE 4,10
** RSB CONTROL WORDS.
* CALL BLOCK TO READ CONTROL POINT AREA.
STAT1 VFD 12/0,12/100B,18/0,18/BUFF
VFD 24/0,18/1,18/0
STAT2 VFD 12/0,12/100B,18/0,18/BUFF+100B
VFD 24/0,18/1,18/100B
SPACE 4,10
** MISCELLANEOUS CONTROL WORDS.
* GETFNT CONTROL WORD.
GFNT VFD 12/MXLF,6/0,18/0,2/0,1/1,1/1,1/1,1/0,18/FBUF
* GETGLS CONTROL WORD.
GGLS VFD 6/0,18/LBUF+3,36/0
* GET PRIMARY FILE CONTROL.
PRIM DECMIC PTFT
GPRM VFD 12/1,24/1S"PRIM",2/0,1/1,3/5,18/FBUF
SPACE 4,10
** CONSTANTS.
ACAT CON 0 ACCESS CATEGORIES
ALVL CON 0 ACCESS LEVEL
FT CON 1 FILE TYPE (PRESET AS NON-TERMINAL TYPE)
FCT CON 0 FILE COUNT
JSNM CON 0 JOB SEQUENCE NUMBER
LCT CON 0 LINE COUNT
LLM CON 0 LINE LIMIT
JPPW BSS 2 JOB PAGE PARAMETER WORD
MXLC EQU 10 MAXIMUM LINE COUNT
MXLL EQU 92 MAXIMUM LINE LENGTH (CHARACTERS)
OPAL CON 0 EXECUTION FLAG WORD
MLPY CON 0.0001P48+1 SRU CONSTANT (=.0001)
NASV VFD 6/77B,54/0 NEGATIVE (INCORRECT) ASSUMED VALUE
SSFL CON 0 SECURE SYSTEM FLAG
CSFP BSSZ 1 COMMAND FILE POSITION
UESC VFD 1/1,59/0 USER EM SHIFT COUNT
* MULTIPLIER TO CONVERT QUARTER-NANOSECONDS TO MILLISECONDS.
OPA DATA 0.25E-6
* PARAMETER ENTRY TABLE.
TAGS CON 0 OPTION
CON 0 OUTPUT FILE NAME
CON 0 FILE NAME TO SEARCH FOR
CON 0 JSN PARAMETER VALUE
CON 0 UJN PARAMETER VALUE
* OPTION TABLE.
OPNS VFD 6/0LA,36/0,18/0
VFD 6/0LB,36/0,18/OPB
VFD 6/0LD,36/0,18/OPD
VFD 6/0LR,36/0,18/OPR
VFD 6/0LU,36/0,18/OPU
VFD 6/0LJ,36/0,18/OPJ
VFD 6/0LL,36/0,18/OPL
VFD 6/0LF,36/0,18/OPF
VFD 6/0LT,36/0,18/OPT
VFD 6/0LS,36/0,18/OPS
VFD 60/0
* EXECUTION BIT MASK FOR OPTION TABLE.
EBIT DATA 00000000000077000000B
SPACE 4,10
** SUB-SYSTEM TABLE.
SSTB INDEX MSYS
INDEX NULS,(0L"NULS".)
INDEX BASS,(0L"BASS".)
INDEX FORS,(0L"FORS".)
INDEX FTNS,(0L"FTNS".)
INDEX EXES,(0L"EXES".)
INDEX BATS,(0L"BATS".)
INDEX ACCS,(0L"ACCS".)
INDEX MSYS
SPACE 4,10
** EXTERNAL CHARACTERISTICS TABLES.
* EXTERNAL CHARACTERISTICS QUEUE TYPE TABLE.
QTEC BSS 0
TABLE PRQQ,PREC
TABLE PHQQ,PHEC
TABLE PLQQ,PLEC
CON 0
* PRINT QUEUE EXTERNAL CHARACTERISTICS EQUIVALENCES TABLE.
PREC INDEX 7
INDEX DFEX,(5L )
INDEX A4EX,(5LA4 )
INDEX B4EX,(5LB4 )
INDEX B6EX,(5LB6 )
INDEX A6EX,(5LA6 )
INDEX A9EX,(5LA9 )
INDEX 7
* PUNCH QUEUE EXTERNAL CHARACTERISTICS EQUIVALENCES TABLE.
PHEC INDEX 7
INDEX DFFR,(5L )
INDEX PBFR,(5LSB )
INDEX P8FR,(5L80COL)
INDEX PHFR,(5LO26 )
INDEX P9FR,(5LO29 )
INDEX ASFR,(5LASCII)
INDEX 7
* PLOT QUEUE EXTERNAL CHARACTERISTICS EQUIVALENCES TABLE.
PLEC INDEX 3
INDEX T6EX,(5LT6 )
INDEX T8EX,(5LT8 )
INDEX 3
FLST SPACE 4,10
** STATUS TABLE (LAST OPERATION IS PRESET AS *READ*).
FLST BSS 0
DATA H* I/C *
DATA H* EOR *
DATA H* EOF *
DATA H* EOI *
DATA H* BOI *
FLTY SPACE 4,10
** FILE TYPE TABLE.
*
*T,FLTY VFD 12/DCFT,42/ADDR
* DCFT = DISPLAY CODED FILE TYPE.
* ADDR = MESSAGE ADDRESS.
FLTY INDEX MXFT
INDEX INFT,(3LIN.) INPUT
INDEX ROFT,(3LRO.) ROLLOUT
INDEX QFFT,(3LQF.) QUEUED
INDEX SYFT,(3LSY.) SYSTEM
INDEX LOFT,(3LLO.) LOCAL
INDEX LIFT,(3LLI.) LIBRARY
INDEX PTFT,(3LPT.) PRIMARY TERMINAL
INDEX PMFT,(3LPM.) DIRECT ACCES PERMANENT
INDEX FAFT,(3LFA.) FAST ATTACH
INDEX MXFT
FSTT SPACE 4,10
** FILE STATUS TABLE.
*
*T,FSTT 24/DCFS,36/0
* DCFS = DISPLAY CODED FILE STATUS.
FSTT INDEX MXST
INDEX 0,(4L )
INDEX UPST,(4L UP )
INDEX SSST,(4L SS )
INDEX CBST,(4L CB )
INDEX CKST,(4L CK )
INDEX SOST,(4L SO )
INDEX AAST,(4L AA )
INDEX NDST,(4L NAD)
INDEX MXST
QTST SPACE 4,10
** QUEUE TYPE STATUS TABLE.
QTST BSS 0
TABLE INQQ,INQM
TABLE EXQQ,0
TABLE PRQQ,PRQM
TABLE PHQQ,PHQM
TABLE PLQQ,PLQM
TABLE WTQQ,WTQM
CON 0
CNST SPACE 4,10
** EXECUTING JOB CONNECTION STATUS.
CNST INDEX MXCS
INDEX NICS,(2LNI) NOT INTERACTIVE
INDEX DTCS,(2LDT) DETACHED
INDEX OLCS,(2LON) ON-LINE
INDEX MXCS
EJST SPACE 4,10
** EJT STATUS TABLE.
EJST INDEX MXJS
INDEX PRJS,PRSM
INDEX EXJS,EXSM
INDEX ROJS,ROSM
INDEX SIJS,SISM
INDEX SOJS,SOSM
INDEX TOJS,TOSM
INDEX IOJS,IOSM
INDEX DOJS,DOSM
INDEX SUJS,SUSM
INDEX PCJS,PCSM
INDEX ERJS,ERSM
INDEX SWJS,SWSM
INDEX MXJS
SPACE 4,10
** LINE DEFINITION TABLES.
*
* THE LINE DEFINITION TABLES DEFINE THE WORD OFFSET INTO
* A STRING BUFFER AND THE NUMBER OF CHARACTERS TO ENTER
* INTO THE BUFFER FOR DATA TO BE WRITTEN TO THE OUTPUT
* FILE. THIS DEFINES THE FORMAT OF THE OUTPUT LINES.
* UJN OUTPUT LINE.
L1UL LDEF 00,70 LINE 1 SKELETON
JSUL LDEF 01,04 JSN
SCUL LDEF 06,01 SERVICE CLASS
CNUL LDEF 08,02 CONNECTION STATUS
DSUL LDEF 11,02 DESTINATION ROUTING
LIUL LDEF 14,03 LID
UJUL LDEF 18,07 UJN
STUL LDEF 27,13 STATUS
EMUL LDEF 42,30 EXECUTING MESSAGE
* JSN OUTPUT LINES.
*
* *JSJL*, *SCJL* AND *STJL* ARE USED TO DEFINE THE FORMAT
* OF OUTPUT LINES WHEN INFORMATION ABOUT A SPECIFIC JOB
* IS REQUESTED (JSN PARAMETER EQUIVALENCED), AND ALSO WHEN
* INFORMATION ABOUT ALL JOBS OWNED BY A USER IS REQUESTED
* (JSN PARAMETER UNEQUIVALENCED).
L1JL LDEF 00,69 LINE 1 SKELETON
JSJL LDEF 01,04 JSN, COLUMN 1
LDEF 40,04 JSN, COLUMN 2
SCJL LDEF 06,01 SERVICE CLASS, COLUMN 1
LDEF 45,01 SERVICE CLASS, COLUMN 2
CNJL LDEF 08,02 CONNECTION STATUS, COLUMN 1
LDEF 47,02 CONNECTION STATUS, COLUMN 2
DSJL LDEF 11,02 DESTINATION ROUTING, COLUMN 1
LDEF 50,02 DESTINATION ROUTING, COLUMN 2
LIJL LDEF 14,03 LID, COLUMN 1
LDEF 53,03 LID, COLUMN 2
STJL LDEF 18,13 STATUS, COLUMN 1
LDEF 57,13 STATUS, COLUMN 2
UJJL LDEF 46,07 UJN
ALJL LDEF 62,07 ACCESS LEVEL
L2JL LDEF 00,70 LINE 2 SKELETON
SUJL LDEF 06,10 SRU ACCUMULATOR
SLJL LDEF 29,08 SRU LIMIT
CFJL LDEF 46,06 CM FL
EFJL LDEF 62,07 EXTENDED MEMORY FL
L3JL LDEF 00,56 LINE 3 SKELETON
PLJL LDEF 12,08 PRU LENGTH
DCJL LDEF 26,02 DISPOSITION CODE
FCJL LDEF 34,02 FORMS CODE
IDJL LDEF 42,02 DESTINATION BATCH DEVICE ID
ECJL LDEF 50,05 EXTERNAL CHARACTERISTICS
TITLE MAIN LOOP.
** MAIN PROGRAM.
MAIN BSS 0
SYSTEM RSB,R,STAT1 READ FIRST 100B WORDS OF CPA
SYSTEM RSB,R,STAT2 READ SECOND 100B WORDS OF CPA
MAIN1 SA5 OPNS+1 OPTION TABLE
SA4 EBIT EXECUTION BIT MASK
MAIN2 ZR X5,MAIN5 IF END OF OPTION TABLE
BX6 X4*X5 CHECK FOR EXECUTION BIT
NZ X6,MAIN3 IF OPTION TO BE EXECUTED
SA5 A5+1 CHECK NEXT OPTION
EQ MAIN2
MAIN3 SA2 FT FILE TYPE
ZR X2,MAIN4 IF TERMINAL FILE
SB3 X5
SA1 OPF
SB2 A1
SB3 B3-B2
ZR B3,MAIN4 IF OP=F OPTION TO BE EXECUTED
WRITEW OUTPUT,PAGE,B1 PAGE EJECT
SA2 TRPL TRIPLE SPACE
BX6 X2
SA6 PAGE SET TRIPLE SPACE
SA4 EBIT RESET MASK FOR NEXT OPTION
MAIN4 SB2 X5 PICK UP PROCESSOR ADDRESS
BX6 -X4*X5 CLEAR EXECUTION BIT
SA6 A5
JP B2
* PROCESS JSN.
MAIN5 SA5 TAGS+3
ZR X5,MAIN5.2 IF JSN NOT SPECIFIED
MX0 24
BX5 X0*X5
ZR X5,MAIN5.1 IF UNEQUIVALENCED JSN PARAMETER SPECIFIED
MX0 -42
BX1 -X0*X5
NZ X1,MAIN5.0 IF FOUR-CHARACTER JSN
SX0 1R APPEND SPACE
LX0 36-0
BX5 X5+X0
MAIN5.0 RJ PEJ LIST STATUS OF SPECIFIED JSN
EQ MAIN7 COMPLETE ENQUIRY
MAIN5.1 RJ PJS LIST STATUS OF ALL JSN-S
EQ MAIN7 COMPLETE ENQUIRY
* PROCESS UJN.
MAIN5.2 SA5 TAGS+4
ZR X5,MAIN6 IF UJN NOT SPECIFIED
RJ PUJ LIST STATUS OF JOBS BY UJN
EQ MAIN7 COMPLETE ENQUIRY
* PROCESS FILENAME.
MAIN6 SA1 TAGS+2 CHECK FILENAME
ZR X1,MAIN7 IF NO FILENAME
JP FNA
MAIN7 SA1 O+2 CHECK FOR NO OUTPUT
SA2 A1+B1
BX6 X1-X2
ZR X6,MAIN8 IF NO OUTPUT
WRITER OUTPUT
MAIN8 SA1 FT
ZR X1,MAIN9 IF TERMINAL FILE
MESSAGE EMSF,3 * ENQUIRY COMPLETE.*
MAIN9 ENDRUN
FNA TITLE FN OPTION.
** THE *FN=FILENAME* FUNCTION RETURNS THE STATUS OF THE
* FILE SPECIFIED BY THE USER. THE *FN=FILENAME* FUNCTION IS
* EXECUTED ONLY IF THE *OP=F* OPTION IS NOT SPECIFIED.
* THE FOLLOWING INFORMATION IS GIVEN FOR THE SPECIFIED FILE
* *FILENAME* *LENGTH/PRUS* *TYPE* *STATUS* *FS* *LEVEL*.
FNA MX0 42
MX7 0 CLEAR FIRST WORD OF BUFFER
SA7 FBUF
FNA0 SA2 GFNT STATUS WORD TO RETURN FILES
BX6 X2
SA6 FILEFET+8
GETFNT FILEFET
SA5 FBUF-1 INITIALIZE FILE NAME SEARCH
SA1 TAGS+2 FILE NAME
FNA1 SA5 A5+2
ZR X5,FNA3 IF END OF FNTS
BX3 X0*X5
BX3 X3-X1
NZ X3,FNA1 IF NO MATCH
SA1 FT TERMINAL FILE CONSTANT
ZR X1,FNA2 IF TERMINAL FILE
WRITEW OUTPUT,PAGE,B1 CARRIAGE CONTROL
FNA2 WRITEW OUTPUT,FOP,FOPA
RJ LST LIST FILE
EQ MAIN7 RETURN
FNA3 SA4 FBUF BUFFER CONTROL WORD
NZ X4,FNA0 IF MORE FILES TO GET
SA2 =L* FILE NOT FOUND.*
SX1 B0+
RJ ISM ISSUE MESSAGE
EQ MAIN7 RETURN
OPB TITLE B OPTION.
** THE *OP=B* OPTION RETURNS TO THE USER INFORMATION THAT IS
* READ FROM HIS CONTROL POINT AREA. INFORMATION SUCH AS
* USER NAME, USER INDEX, USER PRIORITIES IS RETURNED TO
* THE CALLER. THE USER PRIMARY FILENAME IS RETURNED IF
* HE HAS ONE AND THE SUBSYSTEM HE IS USING.INFORMATION
* ABOUT THE USER FIELD LENGTH, FAMILY AND PACK NAME IS
* GIVEN. IF SECURE SYSTEM, INFORMATION ABOUT SECURITY
* ACCESS LEVELS AND ACCESS CATEGORIES IS ALSO GIVEN.
* PROCESS PRIORITIES.
OPB BSS 0 ENTRY
SA5 BUFF+CWQW GET CPU PRIORITY
AX5 51
MX3 -7
BX1 -X3*X5 CPU PRIORITY
RJ COD CONVERT TO OCTAL DISPLAY CODE
MX0 12
BX6 X0*X4
SA6 BOCP+2
* PROCESS FAMILY NAME AND PACK NAME, IF ANY.
GETPFP WBUF GET PERMANENT FILE INFORMATION
SA1 WBUF
MX0 42
BX6 X0*X1
ZR X6,OPB1 IF NO FAMILY NAME
SA6 BOFM+2
OPB1 SA1 A1+B1
BX6 X0*X1
ZR X6,OPB1.1 IF NO PACK NAME IN CPA
SA6 BOPN+2 SET PACK NAME
BX6 -X0*X1
LX6 42
SA6 BOPN+5 SET PACK TYPE
NZ X6,OPB2 IF PACK TYPE SPECIFIED IN CPA
OPB1.1 SYSTEM RSB,R,OPBC READ PFNL WORD
SA1 OPBD GET SYSTEM DEFAULT PACK TYPE
MX6 18
BX6 X6*X1
SA6 BOPN+5 SET PACK TYPE
* PROCESS USER NAME AND USER INDEX.
OPB2 SA5 BUFF+UIDW USER NAME
MX4 -18
BX6 X4*X5
SA6 BOUN+2
* PROCESS HASH CODE AND JOB SEQUENCE NAME.
MX4 -17
BX7 -X4*X5
RJ CIH COMPUTE USER INDEX HASH
SA7 BOUH+2
GETJN BOJS+2 GET JSN
* PROCESS CHARGE AND PROJECT NUMBER.
GETCN WBUF GET CHARGE NUMBER INFORMATION
SA1 WBUF SET CHARGE NUMBER
ZR X1,OPB2.1 IF NO CHARGE NUMBER
RJ SFN SPACE FILL NAME
SA6 BOCN+2
SA1 WBUF+1 SET PROJECT NUMBER
ZR X1,OPB2.1 IF NO PROJECT NUMBER
RJ SFN SPACE FILL NAME
SA6 BOPJ+2
SA1 WBUF+2
RJ SFN SPACE FILL NAME
SA6 BOPJ+3
* PROCESS PRIMARY FILE.
OPB2.1 SA1 GPRM SET OPTIONS FOR GETFNT
BX6 X1
MX7 0 CLEAR BUFFER CONTROL WORD
SA7 FBUF
SA6 FILEFET+8 GETFNT STATUS WORD
GETFNT FILEFET GET PRIMARY FILE NAME
MX6 0 CLEAR STATUS WORD
SA6 FILEFET+8
SA2 FBUF+1
MX0 42
BX1 X0*X2
ZR X1,OPB3 IF NO PRIMARY FILE
RJ SFN SPACE FILL NAME
SA6 BOPF+2
SA2 A2+1
LX2 59-8
PL X2,OPB3 IF FILE ACCESSIBLE
SA2 OPBB
BX6 X2
SA6 BOPF+3
* PROCESS SUBSYSTEM.
OPB3 SA2 BUFF+TXSW TELEX SUBSYSTEM WORD
MX0 -6
LX2 6
BX1 -X0*X2 SUB-SYSTEM TABLE INDEX
SB3 X1-MSYS
PL B3,OPB4 IF INCORRECT SUB-SYSTEM
SA1 SSTB+X1 SUB-SYSTEM TABLE
BX6 X1
SA6 BOSU+2
* PROCESS FIELD LENGTH.
OPB4 SA3 UESC GET USER EM SHIFT COUNT
SA5 BUFF+ELCW EXTENDED MEMORY STATUS WORD
MX0 -12
SB5 X3+9
LX5 12 CONVERT EXTENDED MEMORY MFL
BX1 -X0*X5
LX1 B5
RJ COD CONVERT TO OCTAL DISPLAY CODE
BX6 X0*X4
SA6 BOME+2
LX5 12 CONVERT LAST EXTENDED MEMORY FIELD LENGTH
BX1 -X0*X5
LX1 B5
RJ COD
BX6 X0*X4
SA6 BOLE+2
SA5 BUFF+FLCW CM MEMORY CONTROL WORD
LX5 12 CONVERT CM MFL
BX1 -X0*X5
LX1 6 BLOCKS * 100
RJ COD
BX6 X0*X4
SA6 BOMF+2
LX5 12 CONVERT CM LAST FIELD LENGTH
BX1 -X0*X5
LX1 6 BLOCKS * 100
RJ COD
BX6 X0*X4
SA6 BOLF+2
* PROCESS JOB ACCESS LEVELS IF SECURE SYSTEM.
SA1 SSFL
ZR X1,OPB8 IF NON-SECURE SYSTEM
GETJAL ALVL GET JOB ACCESS LEVELS
SA1 ALVL GET CURRENT JOB ACCESS LEVEL
MX0 -3
BX2 -X0*X1
SA2 TALV+X2
MX3 42
BX6 X2*X3
SA6 BOAL+2
AX1 6 GET JOB ACCESS LEVEL UPPER LIMIT
BX2 -X0*X1
SA2 TALV+X2
BX6 X2*X3
SA6 BOUL+2
AX1 6 GET JOB ACCESS LEVEL LOWER LIMIT
BX2 -X0*X1
SA2 TALV+X2
BX6 X2*X3
SA6 BOLL+2
* PROCESS JOB ACCESS CATEGORIES IF SECURE SYSTEM.
GETUSV ACAT GET JOB ACCESS CATEGORIES
SA4 ACAT
SB3 32 NUMBER OF CATEGORIES TO CHECK
SB4 B0 INDEX INTO TABLE OF CATEGORY NAMES
SB5 B1 POINTER FOR STORING CATEGORY NAME
SB6 6 COUNT OF WORDS TO BE SPACE FILLED
OPB5 LX4 -1
PL X4,OPB7 IF CATEGORY NOT SET
SA2 TACT+B4 GET CATEGORY NAME
MX0 42
BX1 X0*X2
RJ SFN SPACE FILL NAME
LX6 -18
SA6 BOAC+B5 SAVE CATEGORY NAME
SB6 B6-B1
SA1 OPBA INCREMENT PRINTED LINE COUNT
SX6 X1+B1
SA6 A1
PL B6,OPB6 IF COUNT NOT TO BE RESET
SB6 6
SB5 B5+B1 WRITE END-OF-LINE
BX6 X6-X6
SA6 BOAC+B5
SA1 OPBA INCREMENT PRINTED LINE COUNT
SX6 X1+B1
SA6 A1
OPB6 SB5 B5+B1
OPB7 SB4 B4+B1
SB3 B3-B1
NZ B3,OPB5 IF MORE CATEGORIES TO CHECK
SA1 OPBA GET LINE COUNT
WRITEW OUTPUT,BOP,X1
EQ MAIN1 RETURN
OPB8 WRITEW OUTPUT,BOP,BOPL
EQ MAIN1 RETURN
OPBA CON BLLL PRINTED LINE COUNT
OPBB DATA 10L*INACCESS* FILE NOT ACCESSIBLE STATUS
OPBC VFD 12/0,12/1,18/PFNL,18/OPBD PFNL READ CONTROL
OPBD VFD 1/1,59/0 PFNL CODE
* *OUTPUT FORMAT FOR B-OPTION*
BOP DATA 0
DATA L* SYSTEM ACTIVITY.*
DATA 0
BOUN DATA 20H USER NAME
DATA 0
BOUH DATA 20H USER INDEX HASH
DATA 0
BOJS DATA 20H JOB SEQ. NAME
DATA 0
BOFM DATA 20H FAMILY
DATA 8L*NONE*.
BOCN DATA 20H CHARGE NUMBER
DATA 10H*NONE*.
DATA 0
BOPJ DATA 20H PROJECT NUMBER
DATA 20H*NONE*.
DATA 0
BOPN DATA 20H PACK NAME
DATA 8L*NONE*.
DATA 20H PACK TYPE
VFD 18/DFPT,42/0
BOPF DATA 20H PRIMARY FILE
DATA 10L*NONE*.
DATA 10L
DATA 0
BOSU DATA 20H SUBSYSTEM
DATA 0
BOCP DATA 20H CPU PRIORITY
DATA 0
BOMF DATA 20H MAX FL (CM)
DATA 0
BOME DATA 20H MAX FL (EM)
DATA 0
BOLF DATA 20H LAST FL (CM)
DATA 0
BOLE DATA 20H LAST FL (EM)
DATA 0
BOPL EQU *-BOP
DATA 0
DATA C* JOB SECURITY ACCESS LEVELS*
DATA 0
BOAL DATA 20H CURRENT
DATA 0
BOLL DATA 20H LOWER LIMIT
DATA 0
BOUL DATA 20H UPPER LIMIT
DATA 0
DATA 0
DATA C* JOB SECURITY ACCESS CATEGORIES*
BOAC DATA 0
DATA 10H *NONE*.
DATA 0
BLLL EQU *-BOP INITIAL OUTPUT LENGTH
DUP 39,1
DATA 0
OPD TITLE D OPTION.
** THE OP = D OPTION RETURNS TO THE USER THE RESOURCE
* DEMAND AND ASSIGNED COUNTS FROM THE USER DEMAND FILE
* ENTRY.
OPD WRITEW OUTPUT,FOD,FODA HEADER
* SET CORRECT DEMAND FILE NAME.
SA1 BUFF+RFCW
MX0 -18
BX6 -X0*X1
ZR X6,OPD7 IF NO DEMAND FILE ENTRY
SYSTEM RSB,R,OPDA READ MMFL WORD
SA1 OPDC SET CORRECT DEMAND FILE NAME
MX0 12
BX3 X0*X1
SA2 OPDB
LX0 -24
BX2 -X0*X2
LX3 -24
BX6 X3+X2
SA6 A2+
ATTACH FILEFET,OPDB,,,RM,,,DF,FA
SA1 BUFF+RFCW CHECK DEMAND FILE INDEX
MX0 -18
BX6 -X0*X1
SA6 FILEFET+6
READ X2,R READ DEMAND FILE ENTRY
SA5 FBUF+RVAL CHECK FOR TOTAL DEMAND = TOTAL ASSIGN = 0
MX2 -24
BX2 -X2*X5
ZR X2,OPD7 IF NO ASSIGNS/DEMANDS
SA5 FBUF+RMTP GET FIRST MAGNETIC TAPE ENTRY WORD
* FORMAT LINE.
OPD1 MX2 12 GET RESOURCE IDENTIFIER
BX1 X2*X5
SX3 A5-FBUF-RRPP
NG X3,OPD2 IF MAGNETIC TAPE ENTRY
SX2 1R1 ENTER REMOVABLE PACK UNIT COUNT
LX2 -18
BX1 X1+X2
OPD2 RJ SFN BLANK FILL RESOURCE IDENTIFIER
LX6 -24
SA6 FODB
LX5 12
SX3 A5-FBUF-RRPP
PL X3,OPD3 IF REMOVABLE PACK ENTRY
* ADD THE ASSIGNED AND DEMAND COUNTS FOR ALL ACCESS LEVELS
* OF MAGNETIC TAPE RESOURCE ENTRY. PRINT NON-ZERO COUNTS.
BX1 X1-X1 INITIALIZE TOTAL ASSIGNED COUNT
BX3 X3-X3 INITIALIZE TOTAL DEMAND COUNT
SB2 B1+ INITIALIZE ENTRY WORD COUNT
OPD2.1 SB3 3 INITIALIZE BYTE COUNT
OPD2.2 MX2 -6 GET ASSIGNED COUNT
LX5 6
BX0 -X2*X5
IX1 X0+X1 ADD COUNT TO TOTAL COUNT
LX5 6 GET DEMAND COUNT
BX2 -X2*X5
IX3 X2+X3 ADD COUNT TO TOTAL COUNT
SB3 B3-B1
PL B3,OPD2.2 IF NOT END OF ENTRY WORD
SB2 B2-B1
NG B2,OPD2.3 IF END OF SECOND ENTRY WORD
SA5 A5+B1 READ SECOND ENTRY WORD
LX5 12
EQ OPD2.1 RESET BYTE COUNT
OPD2.3 BX0 X1+X3
BX5 X3
ZR X0,OPD6 IF NO ASSIGNED/DEMAND COUNTS
EQ OPD3.1 CONVERT ASSIGNED COUNT
* GET ASSIGNED/DEMAND COUNTS FOR REMOVABLE PACK ENTRIES.
OPD3 MX2 -6 GET ASSIGNED COUNT
LX5 6
BX1 -X2*X5
MX3 -12 CHECK FOR ZERO ASSIGNED AND DEMAND COUNTS
LX5 6
BX3 -X3*X5
ZR X3,OPD4 IF NO ASSIGNED/DEMAND COUNTS
OPD3.1 RJ CDD CONVERT ASSIGNED COUNT
LX6 18
MX2 -6
SA6 FODB+2
BX1 -X2*X5 GET DEMAND COUNT
RJ CDD CONVERT DEMAND COUNT
LX6 18
SA6 A6-B1
WRITEW OUTPUT,FODB,FODL
OPD4 SX3 A5-FBUF-RRPP
NG X3,OPD6 IF MAGNETIC TAPE ENTRY
SX2 B1 INCREMENT REMOVABLE PACK UNIT COUNT
SA1 FODB
LX2 18
SB2 X0+B1
IX6 X1+X2
SB3 X0-RPEW
SB2 A0-B2
SA6 A1
NZ B3,OPD5 IF NOT END OF FIRST ENTRY WORD
SA5 A5+B1
LX5 12
OPD5 SX0 X0+1
PL B2,OPD3 IF MORE COUNTS TO PROCESS IN ENTRY
PL B3,OPD6 IF SECOND ENTRY WORD PROCESSED
SA5 A5+1
OPD6 SA5 A5+1
SX2 A5-FBUF-RREQ
SX3 A5-FBUF-RRPP
ZR X2,OPD8 IF END OF RESOURCE ENTRIES
NG X3,OPD1 IF MAGNETIC TAPE ENTRY
ZR X5,OPD8 IF END OF RESOURCE ENTRIES
SA1 A5+B1 GET MAXIMUM UNIT COUNT
UX1 X1,B2
SA0 B2
SX0 B1 RESET UNIT COUNT
EQ OPD1 CONTINUE PROCESSING ENTRIES
OPD7 WRITEW OUTPUT,FODC,FODD
OPD8 RETURN FILEFET,R
EQ MAIN1 RETURN
OPDA VFD 12/0,12/1,18/MMFL,18/OPDC MMFL READ CONTROL
OPDB VFD 60/0LRSXD DEMAND FILE NAME
OPDC VFD 1/1,59/0 MMFL CODE
* OUTPUT FORMAT FOR OP = D.
FOD DATA 0
DATA L* RESOURCE DEMAND INFORMATION. *
DATA 0
DATA L* RESOURCE DEMAND ASSIGNED *
DATA 0
FODA EQU *-FOD
FODB DATA C* *
FODL EQU *-FODB
FODC DATA C* NONE.*
FODD EQU *-FODC
OPF TITLE F OPTION.
** THE *OP=F* OPTION RETURNS TO THE USER THE FOLLOWING
* INFORMATION ABOUT EACH OF HIS FILES- *FILENAME*
* *LENGTH/PRUS* *TYPE* *STATUS* *FS* *LEVEL*.
OPF BSS 0 ENTRY
BX6 X6-X6 PRECLUDE FN PARAMETER PROCESSING
SA6 TAGS+2
MX7 0 CLEAR BUFFER CONTROL WORD
SA7 FBUF
SA1 GFNT SET GETFNT CONTROL WORD IN FET+8
BX6 X1
SA6 FILEFET+8
GETFNT FILEFET GET FILES
BX6 X6-X6 CLEAR STATUS WORD
SA6 FILEFET+8
* SORT FNT ENTRIES INTO ASCENDING ORDER.
SX7 B0 COUNT NUMBER OF ENTRIES TO SORT
SA1 FBUF+1
OPF1 SX7 X7+B1
SA1 A1+2
NZ X1,OPF1 IF MORE ENTRIES TO COUNT
SA7 FCT SAVE FILE COUNT
SB2 B0 SORT FNT ENTRIES
SB3 B0
SB4 B1
SB5 B1+B1
SB6 X7
SB7 FBUF+1
MX0 42
RJ GMS
SA5 FBUF+1 SET ADDRESS OF FIRST ENTRY TO LIST
* OUTPUT PAGE EJECT AND/OR PAGE HEADER.
OPF2 SA1 FT
ZR X1,OPF3 IF OUTPUT ASSIGNED TO TERMINAL
WRITEW OUTPUT,PAGE,B1 PAGE EJECT
OPF3 WRITEW OUTPUT,FOP,FOPA PAGE HEADER
* LIST FNT ENTRY.
OPF4 ZR X5,OPF5 IF END OF BUFFER
RJ LST LIST FILE
* CHECK FOR FULL PAGE.
SA5 A5+1 NEXT FILE IN BUFFER
SA1 LCT LINE COUNT
SX6 X1+B1
SA6 A1
SA2 LLM GET LINE LIMIT
IX1 X1-X2
SX7 X1+6
NZ X7,OPF4 IF NOT END OF PAGE
SA7 A1 CLEAR LINE COUNT
EQ OPF2 OUTPUT PAGE EJECT AND/OR PAGE HEADER
* WRITE FILE COUNT MESSAGE AND EXIT.
OPF5 SA1 FCT FILE COUNT
RJ CDD CONVERT TO DISPLAY
MX0 24
BX6 X0*X4
SA6 FOPD+1 TOTAL FILE COUNT
WRITEW OUTPUT,FOPC,FOLL
EQ MAIN1 RETURN
* OUTPUT FORMAT FOR OP = F.
FOP DATA 0
DATA L* LOCAL FILE INFORMATION.*
DATA 0
DATA L* FILENAME LENGTH/PRUS TYPE STATUS FS LEVEL*
DATA 0
FOPA EQU *-FOP
FOPB DATA L* *
FOPL EQU *-FOPB
FOPC DATA 0
FOPD DATA 10H TOTAL =
DATA 0
FOLL EQU *-FOPC
OPJ TITLE J OPTION.
** OP=*J* RETURNS TO THE USER THE CONTENTS OF HIS CONTROL
* REGISTERS AND THE CONTENTS OF ERROR FLAG FIELD.
* THE NEXT COMMAND FROM THE BUFFER IS GIVEN ALSO.
* PROCESS PSEUDO REGISTERS.
OPJ SA5 BUFF+JCRW JOB CONTROL WORD
LX5 6
MX0 -6 ERROR FLAG
BX1 -X0*X5
RJ COD CONVERT TO DISPLAY CODE
MX0 42
BX6 X0*X4
SA6 JOPE+1
LX5 18 R3
BX1 -X0*X5
RJ CSD CONVERT TO SIGNED DISPLAY CODE
SA6 JOPD+1
LX5 18 R2
BX1 -X0*X5
RJ CSD CONVERT TO SIGNED DISPLAY CODE
SA6 JOPC+1
LX5 18 R1
BX1 -X0*X5
RJ CSD CONVERT TO SIGNED DISPLAY CODE
SA6 JOPB+1
SA5 BUFF+JCDW *CCL* JOB CONTROL WORD
LX5 6 GLOBAL ERROR FLAG
MX0 -6
BX1 -X0*X5
RJ COD CONVERT TO DISPLAY CODE
MX0 42
BX6 X0*X4
SA6 JOPF+1
LX5 18 R1G
BX1 -X0*X5
RJ CSD CONVERT TO SIGNED DISPLAY CODE
SA6 JOPG+1
SA5 JPPW GET JOB PAGE PARAMETERS
MX0 -8
AX5 12 POSITION FOR *PW*
BX1 -X0*X5
RJ CSD CONVERT TO DISPLAY
SA6 JOPH+1 PAGE WIDTH
AX5 8 POSITION FOR *PS*
BX1 -X0*X5
RJ CSD CONVERT TO DISPLAY
SA6 JOPI+1 PAGE SIZE
MX0 -4
AX5 8 POSITION FOR *PD*
BX1 -X0*X5
RJ CSD CONVERT TO DISPLAY CODE
SA6 JOPJ+1 PAGE DENSITY
WRITEW O,JOP,JOPL
* PROCESSING NEXT COMMAND.
SA3 F+1 SET FET EMPTY
MX0 -30
SX6 X3
SA6 A3+B1
SX5 NCST NUMBER OF COMMANDS
SA6 A6+B1
ACCSF F,CSFP,L ATTACH COMMAND FILE
SA4 CSFP
BX7 -X0*X4
AX7 6
SA7 F+6 RANDOM ADDRESS
READ F,R
MX0 -6
BX6 -X0*X4
SA3 F+3 UPDATE *OUT* POINTER
IX6 X3+X6
SA6 A3
OPJ1 READC F,WBUF,WBUFL
NZ X1,OPJ2 IF *EOR*
SB2 WBUF
SB6 USBBL
RJ USB UNSTRING COMMAND
SB7 B7-WBUF2+1
WRITES O,WBUF2,B7
SX5 X5-1 DECREMENT COUNTER
NZ X5,OPJ1 IF NOT END OF COMMANDS
EQ OPJ3 RETURN FILE AND EXIT
OPJ2 WRITEC O,OPJB WRITE *EOR* LINE
OPJ3 RETURN F
EQ MAIN1 RETURN
OPJA CON 0 COMMAND COUNT
OPJB DATA C/ *EOR*/
* OUTPUT FORMAT FOR OP = J.
JOP DATA 0
JOPA DATA L* JOB CONTROL REGISTERS.*
DATA 0
JOPB DATA C* R1 = *
JOPC DATA C* R2 = *
JOPD DATA C* R3 = *
JOPE DATA C* EF = *
JOPF DATA C* EFG = *
JOPG DATA C* R1G = *
DATA 0
DATA C* JOB PAGE PARAMETERS.*
DATA 0
JOPH DATA C* PW = *
JOPI DATA C* PS = *
JOPJ DATA C* PD = *
DATA 0
JOPK DATA L* PENDING COMMANDS.*
DATA 0
JOPL EQU *-JOP
OPL TITLE L OPTION.
** *OP=L* GIVES THE USER LOADER INFORMATION THAT CONSISTS OF
* MAP OPTIONS, DEBUG MODE AND GLOBAL LIBRARY SET
* CURRENTLY IN EFFECT.
OPL SA1 BUFF+LB1W MAP OPTIONS IN EFFECT
PL X1,OPL2.1 IF SYSTEM DEFAULT
LX1 59-57 POSITION MAP OPTION FIELD TO LEFT
MX0 4 MAP OPTION FIELD WIDTH
BX1 X0*X1
ZR X1,OPL8 IF MAP *OFF*
BX2 -X0+X1
ZR X2,OPL3 IF *FULL* MAP
SA2 OPLA
BX2 X1-X2
ZR X2,OPL4 IF MAP *ON*
SA2 OPLB
BX2 X1-X2
ZR X2,OPL5 IF *PARTIAL* MAP
SA2 =L*XEBS* FETCH POSSIBLE MAP OPTIONS
SB2 4 INITIALIZE MAP OPTIONS COUNTER
BX6 X6-X6 PRESET RESULT REGISTER
MX0 6
OPL1 PL X1,OPL2 IF OPTION NOT SET
BX3 X0*X2 ADD CHARACTER TO RESULT REGISTER
LX6 -6
BX6 X3+X6
OPL2 SB2 B2-B1 DECREMENT MAP OPTIONS COUNTER
ZR B2,OPL7 IF NO MORE MAP OPTIONS TO CONSIDER
LX1 1
LX2 6
EQ OPL1 LOOP
OPL2.1 SA1 =L*DEFAULT*
EQ OPL6 SET DEFAULT MAP OPTION
OPL3 SA1 =L*FULL*
EQ OPL6
OPL4 SA1 =L*ON*
EQ OPL6
OPL5 SA1 =L*PARTIAL*
OPL6 BX6 X1
OPL7 SA6 OPLD UPDATE MAP OPTIONS ASSEMBLY AREA
OPL8 WRITEW OUTPUT,OPLC,OPLE
* PROCESS INTERACTIVE DEBUG.
SA1 BUFF+LB1W CHECK DEBUG STATUS
SB6 OPLH *DEBUG = OFF*
LX1 59-35
PL X1,OPL8.1 IF DEBUG = OFF
SB6 OPLI *DEBUG = ON*
OPL8.1 WRITEC O,B6 WRITE DEBUG STATUS
* PROCESS GLOBAL LIBRARY SET.
MOVE 4,OPLG,LBUF HEADER (PRESET EMPTY)
GETGLS GGLS GET GLOBAL LIBRARY SET
SB3 4 PRESET NUMBER OF WORDS TO WRITE
SA1 GGLS LWA OF LIST + 1
AX1 36
SB2 X1-LBUF-3
ZR B2,OPL11 IF EMPTY LIST
SB3 B3-B1
SB4 X1
SB5 B3 INITIALIZE NAMES PER LINE COUNTER
MX0 48
MX5 42
SA1 LBUF+3
OPL9 BX1 X1*X5
RJ SFN SPACE FILL NAME
LX6 -6
SB5 B5-B1 DECREMENT NAMES PER LINE COUNTER
NZ B5,OPL10 IF NOT THIRD NAME ON LINE
SB5 3 RE-INITIALIZE NAMES PER LINE COUNTER
BX6 X0*X6 SET END-OF-LINE
OPL10 SA6 A1
SA1 A1+B1
SB3 B3+B1 INCREMENT NUMBER OF WORD TO WRITE
SB2 A1-B4
NZ B2,OPL9 IF NOT END OF LIST
BX6 X0*X6 SET END-OF-LINE
SA6 A6
OPL11 WRITEW OUTPUT,LBUF,B3
JP MAIN1 RETURN
OPLA VFD 4/7,56/0 MAP *ON* MASK
OPLB VFD 4/3,56/0 *PARTIAL* MAP MASK
* MAP OPTIONS ASSEMBLY AREA.
OPLC DATA 0 BLANK LINE
DATA L* LOADER INFORMATION. *
DATA H* MAP OPTIONS = *
OPLD DATA L*OFF* PRESET AS *OFF*
OPLE EQU *-OPLC LENGTH OF MAP OPTIONS ASSEMBLY AREA
OPLG DATA L* GLOBAL LIBRARY SET IS - *
DATA L* EMPTY.*
OPLH DATA L* DEBUG = OFF*
OPLI DATA L* DEBUG = ON*
OPR TITLE R OPTION.
** THE *OP=R* OPTION RETURNS TO THE USER HIS ACCUMULATED
* RESOURCES. THESE INCLUDE SRU UNITS, CP, IO AND
* ADDER ACCUMULATORS.
OPR SA1 BUFF+CPTW CPU TIME
PX1 X1 CONVERT TO MILLISECONDS
SA2 OPA
NX1 X1
RX2 X2*X1
UX1,B4 X2
LX1 B4
RJ CFD CONVERT TO F10.3 FORMAT
SA6 ROPB+2
SA5 BUFF+IOAW IO ACCUMULATORS
MX0 -20
LX5 20 MS ACCUMULATOR
BX1 -X0*X5
RJ CFD
SA6 ROPC+2
LX5 20 MT ACCUMULATOR
BX1 -X0*X5
RJ CFD
SA6 ROPD+2
LX5 20 PF ACCUMULATOR
BX1 -X0*X5
RJ CFD
SA6 ROPE+2
SA2 BUFF+ADAW ADDER ACCUMULATOR
BX1 -X0*X2 ADDER ACCUMULATOR
RJ CFD
SA6 ROPF+2
SA2 BUFF+AUCW AUC ACCUMULATOR
MX0 -29
BX1 -X0*X2
RJ CFD
SA6 ROPG+2
SA2 BUFF+SRUW SRU ACCUMULATOR
RJ CSR CONVERT SRU ACCUMULATOR
SA6 ROPH+2
WRITEW OUTPUT,ROP,ROPL
EQ MAIN1 RETURN
* OUTPUT FORMAT FOR OP = R.
ROP DATA 0
ROPA DATA L* RESOURCES USED.*
DATA 0
ROPB DATA 30H CPU TIME
DATA 6L SECS.
ROPC DATA 30H MS ACTIVITY
DATA 6L KUNS.
ROPD DATA 30H MT ACTIVITY
DATA 6L KUNS.
ROPE DATA 30H PF ACTIVITY
DATA 6L KUNS.
ROPF DATA 30H ADDER
DATA 6L KUNS.
ROPG DATA 30H AUC ACTIVITY
DATA 6L UNTS.
ROPH DATA 30H SRU
DATA 6L UNTS.
ROPL EQU *-ROP
OPS TITLE S OPTION.
** THE *OP=S* OPTION RETURNS TO THE USER HIS SRU UNIT.
* THIS UNIT REPRESENTS THE TOTAL USAGE OF THE SYSTEM
* BY THE USER.
OPS BSS 0 ENTRY
SA2 BUFF+SRUW SRU ACCUMULATOR
RJ CSR CONVERT SRU ACCUMULATOR
SA6 SOPB+1
WRITEW OUTPUT,SOP,SOPL
EQ MAIN1 RETURN
* OUTPUT FORMAT FOR OP = S.
SOP DATA 0
SOPA DATA L* SRU ACCUMULATOR.*
DATA 0
SOPB DATA 20H SRU
DATA 6L UNTS.
SOPL EQU *-SOP
OPT TITLE T OPTION.
** OP=*T* RETURNS TO THE USER HIS CP TIME.
*
OPT SA1 BUFF+CPTW CP TIME
PX1 X1 CONVERT TO MILLISECONDS
SA2 OPA
NX1 X1
RX2 X2*X1
UX1,B4 X2
LX1 B4
RJ CFD CONVERT TO F10.3 FORMAT
SA6 TOPA+1 STORE CP TIME
WRITEW OUTPUT,TOP,TOPL
EQ MAIN1 RETURN
* OUTPUT FORMAT FOR OP = T.
TOP DATA 0
DATA L* CPU ACCUMULATOR.*
DATA 0
TOPA DATA 20H CPU TIME
DATA 6L SECS.
TOPL EQU *-TOP
OPU TITLE U OPTION.
** OP = *U* GIVES THE USER THE AMOUNT OF RESOURCE USAGE
* ALLOWED TO HIS JOB. THESE RESOURCES INCLUDE SYSTEM
* RESOURCE UNITS ALLOWED FOR EACH JOB STEP AND ACCOUNT
* BLOCK, JOB STEP TIME LIMIT, AND MAXIMUM NUMBER OF DISPOSE
* FILES, MASS STORAGE PRUS, DAYFILE MESSAGES AND CONTROL
* COMMANDS.
OPU SA5 BUFF+CPJW JOB STEP TIME LIMIT
MX0 -15
LX0 17-14
LX5 30
RJ CLM CONVERT
SA7 UOPF+2
SA5 BUFF+SRJW JOB STEP SRU LIMIT
LX5 30
RJ CLM CONVERT
SA7 UOPG+2
SA5 BUFF+STLW ACCOUNT BLOCK SRU LIMIT
LX5 18
RJ CLM CONVERT
SA7 UOPH+2
SA5 BUFF+ACLW PICK UP ACCOUNTING LIMITS WORD
MX0 -12
LX5 24 DAYFILE MESSAGES COUNT
RJ CLM CONVERT
SA7 UOPB+2
LX5 12 COMMAND COUNT
RJ CLM CONVERT
SA7 UOPC+2
MX0 -15
LX0 17-14
LX5 24 MASS STORAGE PRUS
RJ CLM
SA7 UOPE+2
WRITEW OUTPUT,UOP,UOPL
EQ MAIN1
* OUTPUT FORMAT FOR OP = U.
UOP DATA 0
UOPA DATA L* RESOURCE USAGE ALLOWED.*
DATA 0
UOPF DATA 20H SECONDS
DATA 0
UOPG DATA 20H JOB STEP SRU
DATA 0
UOPH DATA 20H ACCOUNT BLK SRU
DATA 0
UOPB DATA 20H DAYFILE MESSAGES
DATA 0
UOPC DATA 20H COMMANDS
DATA 0
UOPE DATA 20H MASS STORAGE
DATA 0
UOPL EQU *-UOP
TITLE JSN= OPTION.
PEJ SPACE 4,10
** PEJ - PROCESS EQUIVALENCED JSN PARAMETER.
*
* ENTRY (X5) = JSN PARAMETER VALUE.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 3, 5, 6, 7.
* B - 2, 4, 6, 7.
*
* CALLS CDD, COD, CSR, ESB, GCS, GDR, GJS, GSC, IPR, SFN,
* WCL, WML.
*
* MACROS WRITES, WRITEW.
*
* EXAMPLE OF EXECUTING JOB -
*
* 1 2 3 4 5 6 7
* 234567890123456789012345678901234567890123456789012345678901234567890
*
* ABFB.T.ON.BC.M90.T/E ROLLOUT UJN=MYJOBAA LEVEL=LVL0
* SRUS= 22.057. SRU LIMIT=NO LIMIT. CM FL= 47500. ECS FL= 1000.
* LABEL,TAPE,VSN=TEROLL,D=PE. (MS1W MESSAGE)
* WAITING FOR TAPE/PACK MOUNT. (MS2W MESSAGE)
*
* DAYFILE=
* (MAXIMUM OF 10 LINES OF DAYFILE)
*
* NEXT COMMANDS=
* (MAXIMUM OF 10 LINES OF COMMANDS)
*
* EXAMPLE OF JOBS IN THE INPUT, PRINT, PLOT, PUNCH
* OR WAIT QUEUE -
*
* 1 2 3 4 5 6 7
* 234567890123456789012345678901234567890123456789012345678901234567890
*
* ADAE.B. .BC.M90.PRINT QUEUE UJN=MYJOBAA LEVEL=LVL0
* PRU LENGTH= 47. DC=LT. FC= . ID=05. EC=A9 .
PEJ SUBR ENTRY/EXIT
SA3 PIEJ SET PEEK INFORMATION BITS
BX7 X3
BX6 X5 SAVE JSN
SA6 JSNM
SA7 BQPF+2
SA1 BQSC+2 SET JSN SELECTION CRITERIA
SX2 JSSF SET JSN SELECTION BIT
BX1 X1+X5 SET JSN
BX6 X1+X2
SA6 A1+
RJ IPR ISSUE *QAC* PEEK REQUEST
NZ X1,PEJX IF JOB NOT FOUND
* FORMAT LINE 1.
SA1 PEJF WRITE SKELETON LINE
SB7 L1JL
BX6 X1
RJ ESB
SA1 RBUF GET REPLY ENTRY FWA
MX0 24 SET JSN
BX1 X0*X1
RJ SFN
SB6 A1+
SB7 JSJL
RJ ESB
RJ GSC SET SERVICE CLASS
SB7 SCJL
RJ ESB
SA1 B6+7
RJ GCS GET CONNECTION STATUS
SB7 CNJL
RJ ESB
SA1 B6+4 GET DESTINATION ROUTING
RJ GDR
SB7 DSJL
RJ ESB
SA1 BQPF+1 GET LID
MX0 -12
BX1 -X0*X1
SB3 X1-2
SA1 B6+B3 SET LID
MX0 18
LX1 6
BX1 X0*X1
RJ SFN
SB7 LIJL
RJ ESB
SB4 7 SET JOB STATUS
RJ GJS
SB7 STJL
RJ ESB
SA1 B6+5 SET UJN
MX0 42
BX1 X0*X1
RJ SFN
SB7 UJJL
RJ ESB
SA1 SSFL
NZ X1,PEJ0.1 IF SECURE SYSTEM
SA1 L1JL DO NOT DISPLAY ACCESS LEVEL
SX6 X1-16
SA6 A1
EQ PEJ0.2 OUTPUT DATA
PEJ0.1 SA1 BQPF+1 GET ACCESS LEVEL
MX0 -12
BX1 -X0*X1
SB3 X1-1
SA1 B6+B3
AX1 12
MX0 -3
BX1 -X0*X1
SA1 TALV+X1 SET ACCESS LEVEL
MX0 42
BX1 X0*X1
RJ SFN SPACE FILL NAME
SB7 ALJL
RJ ESB
PEJ0.2 WRITEW OUTPUT,PAGE,B1
SA1 L1JL GET CHARACTER COUNT
SB7 X1+
WRITES OUTPUT,USBB,B7
SA1 RBUF CHECK QUEUE TYPE
MX0 -12
LX1 -12
BX6 -X0*X1
SX2 X6-EXQQ
SA6 PEJA SAVE QUEUE TYPE
NZ X2,PEJ1 IF NOT EXECUTING QUEUE
* FORMAT OUTPUT LINES FOR EXECUTING JOB.
SB6 RBUF RESET REPLY ENTRY FWA
SA1 PEJB WRITE SKELETON LINE
BX6 X1
SB7 L2JL
RJ ESB
SA2 B6+19
LX2 -18
RJ CSR CONVERT SRU ACCUMULATOR
SB7 SUJL
RJ ESB
SA2 B6+18 SET SRU LIMIT
LX2 -18
RJ CSR CONVERT SRU LIMIT
SB7 SLJL
RJ ESB
SA5 B6+2 GET CM FL/100B
LX5 0-24
MX0 -12
BX1 -X0*X5
LX1 6 MULTIPLY BY 100B
RJ COD
SB7 CFJL SET CM FL
LX6 24 USE LOWER 6 CHARACTERS
RJ ESB
LX5 0-36-0+24 GET EXTENDED MEMORY FL/1000B
MX0 -12
BX1 -X0*X5
LX1 9 MULTIPLY BY 1000B
RJ COD
LX6 18 USE LOWER 7 CHARACTERS
SB7 EFJL SET EXTENDED MEMORY FL
RJ ESB
SA1 L2JL GET CHARACTER COUNT
SB7 X1+
WRITES OUTPUT,USBB,B7
SA2 RBUF+8 WRITE *MS1W*
RJ WML
SA2 RBUF+14 WRITE *MS2W*
RJ WML
SA1 RBUF+20 WRITE DAYFILE BUFFER
MX7 -12
LX1 -12
SX0 A1+1 FWA OF DATA
BX2 -X7*X1 REPLY UNIT WORD COUNT - 1
LX1 -12
BX5 -X7*X1 DATA WORD COUNT
IX6 X0+X2 SAVE LWA+1 OF REPLY UNIT
SA6 PEJG
ZR X5,PEJ0 IF NO DATA
WRITEW OUTPUT,PEJC,PEJCL WRITE DAYFILE TITLE LINE
SB6 X0
SB7 B0 WRITE LAST 10 DAYFILE MESSAGES
RJ WCL
PEJ0 SA2 PEJG WRITE COMMAND BUFFER
SA1 X2
MX7 -12
SX0 A1+1 FWA OF DATA
LX1 -24
BX5 -X7*X1 DATA WORD COUNT
ZR X5,PEJX IF NO DATA
WRITEW OUTPUT,PEJD,PEJDL WRITE COMMAND TITLE LINE
SB6 X0
SB7 B1 WRITE FIRST 10 COMMANDS
RJ WCL
EQ PEJX RETURN
* FORMAT OUTPUT LINE FOR JOB IN THE INPUT, PRINT, PLOT,
* PUNCH OR WAIT QUEUE.
PEJ1 SA1 PEJE WRITE SKELETON LINE
SB7 L3JL
BX6 X1
RJ ESB
SB6 RBUF
SA1 B6+6 SET FILE LENGTH
MX0 -24
LX1 24
SB7 PLJL
BX1 -X0*X1
RJ CDD
LX6 12 USE LOWER 8 CHARACTERS
RJ ESB
SA5 B6+B1 SET FORMS CODE
MX0 12
LX5 59-47
BX6 X0*X5
ZR X6,PEJ2 IF FORMS CODE NOT SPECIFIED
SB7 FCJL
RJ ESB
PEJ2 LX5 59-35-59+47 SET DISPOSITION CODE
MX0 12
BX6 X0*X5
ZR X6,PEJ3 IF DISPOSITION CODE NOT SPECIFIED
SB7 DCJL
RJ ESB
PEJ3 SA1 PEJA GET QUEUE TYPE
MX0 18
SA2 QTEC SEARCH FOR MATCHING QUEUE TYPE
PEJ4 ZR X2,PEJ5 IF END OF TABLE
BX3 X0*X2
LX3 18
IX3 X1-X3
SB2 X2 ADDRESS OF EXTERNAL CHARACTERISTICS TABLE
SA2 A2+B1
NZ X3,PEJ4 IF NOT MATCH
LX5 0-21-59+35 GET EXTERNAL CHARACTERISTICS
MX0 -3
BX1 -X0*X5
SB7 ECJL SET EXTERNAL CHARACTERISTICS
SA2 X1+B2 INDEX INTO TABLE
BX6 X2
RJ ESB
PEJ5 SA1 B6+3 SET DESTINATION BATCH DEVICE ID
MX0 -6
LX1 -12
BX1 -X0*X1
RJ COD
LX6 -12 USE LOWER 2 CHARACTERS
SB7 IDJL
RJ ESB
SA1 L3JL GET CHARACTER COUNT
SB7 X1+
WRITES OUTPUT,USBB,B7
EQ PEJX RETURN
PEJA CON 0 QUEUE TYPE
PEJB DATA L* SRUS= . SRU LIMIT= . CM FL= .
, EM FL= .*
PEJC DATA 0
DATA L* DAYFILE= *
PEJCL EQU *-PEJC LENGTH OF DAYFILE HEADER LINE
PEJD DATA 0
DATA C* PENDING COMMANDS =*
PEJDL EQU *-PEJD LENGTH OF COMMAND HEADER LINE
PEJE DATA L* PRU LENGTH= . DC= . FC= . ID= . EC=
, .*
PEJF DATA L* . . . . . UJN=
, LEVEL= *
PEJG CON 0 LWA+1 OF REPLY UNIT
TITLE JSN OPTION.
PJS SPACE 4,10
** PJS - PROCESS JSN PARAMETER.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 3, 6, 7.
* B - 4, 6, 7.
*
* CALLS BFB, CFP, ESB, GCS, GDR, GJS, GSC, IPR, RRB, SFN.
*
* MACROS WRITES.
*
* DEFINE (X5) = INCOMPLETE LINE FLAG.
* .EQ. 1, PARTIAL LINE WRITTEN.
* .NE. 1, COMPLETE LINE WRITTEN.
*
* EXAMPLE -
*
* 1 2 3 4 5 6 7
* 234567890123456789012345678901234567890123456789012345678901234567890
*
* JSN SC CS DS LID STATUS JSN SC CS DS LID STATUS
*
* ABFB.D. .RB.M90.PRINT QUEUE ABAB.T.ON.BC.M90.EXECUTING
PJS SUBR ENTRY/EXIT
SA1 PIJS SET PEEK INFORMATION BITS
SX6 99999 FORCE EJECT
BX5 X5-X5 SET LINE COMPLETE
SA6 LCT
BX7 X1
SA7 BQPF+2
PJS1 RJ IPR ISSUE PEEK REQUEST
NZ X1,PJS5 IF NO JOBS FOUND
NZ X5,PJS3 IF INCOMPLETE LINE
PJS2 SB6 PJSA CHECK FOR PAGE LIMIT
RJ BFB INITIALIZE BUFFER
SB7 PJSAL
RJ CFP
PJS3 SA1 BQAC+3 GET NEXT ENTRY
SB6 X1 GET *OUT* POINTER
MX0 24
SA1 B6 GET JSN
BX1 X0*X1
RJ SFN
SB7 JSJL+X5 SET JSN IN BUFFER
RJ ESB
SX6 1R.
SA6 B7+
RJ GSC GET SERVICE CLASS
SB7 SCJL+X5 SET SERVICE CLASS IN BUFFER
RJ ESB
SX6 1R.
SA6 B7
SA1 B6+3
RJ GCS GET CONNECTION STATUS
SB7 CNJL+X5
RJ ESB
SX6 1R.
SA6 B7
SA1 B6+2
RJ GDR GET DESTINATION ROUTING
SB7 DSJL+X5
RJ ESB
SX6 1R.
SA6 B7+
SA1 B6+4 GET LID
MX0 18
LX1 6
BX1 X0*X1
RJ SFN
SB7 LIJL+X5 SET LID IN BUFFER
RJ ESB
SX6 1R.
SB4 3
SA6 B7
RJ GJS GET JOB STATUS
SB7 STJL+X5 SET JOB STATUS IN BUFFER
RJ ESB
MX0 -12
SA1 BQPF+1 ADVANCE *OUT* POINTER
BX1 -X0*X1 PEEK REPLY ENTRY LENGTH
SA2 BQAC+3
SA3 A2-B1 GET *IN* POINTER
IX6 X1+X2
IX3 X6-X3 CALCULATE *OUT* - *IN*
SX5 X5+B1
ZR X3,PJS4 IF REPLY BUFFER EMPTY
SA6 A2
SB7 X5
EQ B7,B1,PJS3 IF INCOMPLETE LINE
WRITES OUTPUT,USBB,MXLL
BX5 X5-X5
EQ PJS2 PROCESS NEXT ENTRY
PJS4 RJ RRB RESET *QAC* REQUEST BUFFER
NZ X1,PJS6 IF MORE QUEUES TO SCAN
PJS5 ZR X5,PJSX IF LINE ALREADY WRITTEN
WRITES OUTPUT,USBB,MXLL
EQ PJSX RETURN
PJS6 ZR X5,PJS1 IF LINE ALREADY WRITTEN
WRITES OUTPUT,USBB,MXLL
SX5 B0+
EQ PJS1 PROCESS NEXT BUFFER
PJSA DATA L* JSN SC CS DS LID STATUS JSN SC CS *
DATA L*DS LID STATUS*
DATA 0
PJSAL EQU *-PJSA LENGTH OF PAGE HEADER
TITLE UJN OPTION.
PUJ SPACE 4,10
** PUJ - PROCESS UJN PARAMETER.
*
* ENTRY (X5) = UJN PARAMETER WORD.
*
* USES X - 0, 1, 2, 3, 6, 7.
* A - 1, 2, 3, 6, 7.
* B - 4, 6, 7.
*
* CALLS BFB, CFP, ESB, GCS, GDR, GJS, GSC, IPR, ISM, RRB,
* SFN.
*
* MACROS WRITES.
*
* EXAMPLE -
*
* 1 2 3 4 5 6 7
* 234567890123456789012345678901234567890123456789012345678901234567890
*
* JSN SC CS DS LID UJN STATUS EXECUTING MESSAGE
*
* ABFB.D.DT.BC.M90.MYJOBAA EXECUTING ASSEMBLING LFM
PUJ SUBR ENTRY/EXIT
MX0 42 SAVE UJN
BX6 X0*X5
SA6 PUJB
SA6 PUJC
SA1 PIUJ SET PEEK INFORMATION BITS
SX6 99999 FORCE EJECT
SA6 LCT
BX7 X1
SA7 BQPF+2
PUJ1 RJ IPR ISSUE PEEK REQUEST
NZ X1,PUJX IF NO JOBS FOUND
PUJ2 SB6 PUJA CHECK FOR PAGE LIMIT
SB7 PUJAL
RJ CFP
RJ BFB BLANK FILL STRING BUFFER
SA1 BQAC+3 GET NEXT ENTRY
SB6 X1+ GET *OUT* POINTER
MX0 42 GET UJN
SA1 B6+3
BX1 X0*X1
SA2 PUJB
ZR X2,PUJ3 IF NOT SEARCHING FOR SPECIFIC UJN
BX2 X1-X2
NZ X2,PUJ7 IF NOT MATCH
BX6 X6-X6 SPECIFIC UJN FOUND
SA6 PUJC
PUJ3 RJ SFN SPACE FILL UJN
SB7 UJUL
RJ ESB
MX0 24
SA1 B6+ GET JSN
BX1 X0*X1
RJ SFN
SB7 JSUL SET JSN
RJ ESB
SX6 1R.
SA6 B7+
RJ GSC GET SERVICE CLASS
SB7 SCUL SET SERVICE CLASS
RJ ESB
SX6 1R.
SA6 B7+
SA1 B6+4
RJ GCS GET CONNECTION STATUS
SB7 CNUL SET CONNECTION STATUS
RJ ESB
SX6 1R.
SA6 B7+
SA1 B6+2
RJ GDR GET DESTINATION ROUTING
SB7 DSUL
RJ ESB
SX6 1R.
SA6 B7
SA1 B6+15 GET LID
MX0 18
LX1 6
BX1 X0*X1
RJ SFN
SB7 LIUL SET LID IN BUFFER
RJ ESB
SX6 1R.
SA6 B7
SB4 4 GET JOB STATUS
RJ GJS
SB7 STUL SET JOB STATUS
RJ ESB
SB7 EMUL
SA1 B6+12 CHECK *MS2W*
NZ X1,PUJ4 IF MESSAGE PRESENT
SA1 B6+6 USE MESSAGE IN *MS1W*
PUJ4 BX6 X1
RJ ESB
SA1 L1UL
SB7 X1+
SA2 USBB+B7 CHANGE TRAILING ZEROES TO BLANKS
SX6 1R
PUJ5 SA2 A2-B1
NZ X2,PUJ6 IF NONZERO CHARACTER
SA6 A2
EQ PUJ5 CHECK NEXT CHARACTER
PUJ6 WRITES OUTPUT,USBB,B7
PUJ7 SA2 BQPF+1 GET PEEK REPLY ENTRY LENGTH
MX0 -12
BX2 -X0*X2
SA1 BQAC+3 ADVANCE *OUT* POINTER
SA3 A1-B1
IX6 X2+X1
IX3 X6-X3 CALCULATE *OUT* - *IN*
SA6 A1
NZ X3,PUJ2 IF MORE ENTRIES IN REPLY BUFFER
RJ RRB RESET REQUEST BUFFER
NZ X1,PUJ1 IF MORE QUEUES TO SCAN
SA1 PUJC
ZR X1,PUJX IF NOT SEARCHING FOR UJN
SA1 PUJB GET UJN
RJ SFN
SB7 UJUL SET UJN
RJ ESB
SA1 PUJD
BX6 X1
SB7 STUL SET JOB STATUS
RJ ESB
SA1 L1UL
SB7 X1
WRITES OUTPUT,USBB,B7
SA1 PUJB
SA2 EMSD * UJN NOT FOUND.*
RJ ISM ISSUE ERROR MESSAGE
EQ PUJX RETURN
PUJA DATA L* JSN SC CS DS LID UJN STATUS EXECUT*
DATA L*ING MESSAGE*
DATA 0
PUJAL EQU *-PUJA LENGTH OF PAGE HEADER
PUJB CON 0 UJN TO SEARCH FOR
PUJC CON 0 SEARCHING FOR UJN FLAG
PUJD DATA L*NOT FOUND *
TITLE SUBROUTINES.
BFB SPACE 4,10
** BFB - BLANK FILL STRING BUFFER.
*
* EXIT (USBB) = STRING BUFFER BLANK FILLED.
*
* USES X - 1, 6.
* A - 1, 6.
* B - 2.
BFB SUBR ENTRY/EXIT
SA1 USBB
SB2 USBBL
SX6 1R
BFB1 SA6 A1
SB2 B2-B1
SA1 A1+1
NZ B2,BFB1 IF NOT END OF BUFFER
EQ BFBX RETURN
CFP SPACE 4,15
** CFP - CHECK FOR END OF PAGE.
*
* ENTRY (B6) = FWA OF PAGE HEADER.
* (B7) = LENGTH OF PAGE HEADER (WORDS).
* (LCT) = CURRENT LINE COUNT.
* (LLM) = CURRENT PAGE SIZE.
*
* EXIT LINE COUNT UPDATED.
* NEW PAGE HEADER WRITTEN IF END OF PAGE.
*
* USES X - 1, 2, 6, 7.
* A - 1, 2, 6, 7.
*
* MACROS WRITEW.
CFP SUBR ENTRY/EXIT
SA1 LCT INCREMENT LINE COUNT
SX6 X1+B1
SA6 A1
SA2 LLM GET LINE LIMIT
IX1 X1-X2
SX7 X1+4
NG X7,CFPX IF NOT END OF PAGE
MX7 0
SA7 A1 RESET LINE COUNT
SA1 PUJB
ZR X1,CFP1 IF NOT SEARCHING FOR SPECIFIC UJN
SA1 CFPA
NZ X1,CFPX IF FWA OF PAGE HEADER ALREADY SET
CFP1 SX6 B6 SAVE FWA OF PAGE HEADER
SA6 CFPA
SX7 B7+ SAVE LENGTH OF PAGE HEADER
SA7 CFPC
WRITEW OUTPUT,PAGE,B1 WRITE NEW PAGE HEADER
SA1 CFPA
SA2 CFPC
WRITEW OUTPUT,X1,X2
EQ CFPX RETURN
CFPA CON 0 FWA OF PAGE HEADER
CFPC CON 0 LENGTH OF PAGE HEADER
CIH SPACE 4,10
** CIH - COMPUTE USER INDEX HASH.
*
* ENTRY (X7) = 18 BIT USER INDEX (RIGHT JUSTIFIED).
*
* EXIT (X7) = 4 CHARACTER USER INDEX HASH (LEFT JUSTIFIED
* WITH ZERO FILL).
*
* USES X - 0, 1, 2, 3, 7.
* B - 2, 3.
CIH SUBR ENTRY/EXIT
SB2 59-11 INITIAL SHIFT COUNT
SB3 5
MX0 -5
LX3 B2,X7 BITS 12-16 OF USER INDEX
BX2 -X0*X3 FIRST CHARACTER OF HASH
SX2 X2+B1
LX2 6
SB2 B2+B3 SHIFT COUNT FOR SECOND CHARACTER
LX3 B2,X7 BITS 7-11 OF USER INDEX
BX1 -X0*X3 SECOND CHARACTER OF HASH
SX1 X1+B1
BX2 X2+X1
LX2 6
SB2 B2+B3 SHIFT COUNT FOR THIRD CHARACTER
LX3 B2,X7 BITS 2-6 OF USER INDEX
BX1 -X0*X3 THIRD CHARACTER OF HASH
SX1 X1+B1
BX2 X2+X1
LX2 6
MX0 -2 FOURTH CHARACTER OF HASH
BX1 -X0*X7 BITS 1-0 OF USER INDEX
LX1 3
SX1 X1+B1
BX7 X2+X1
LX7 59-23 LEFT JUSTIFY USER INDEX HASH
EQ CIHX EXIT
CLM SPACE 4,15
** CLM - CHECK AND CONVERT LIMIT.
*
* ENTRY (X5) = VALUE TO CONVERT.
* (X0) = MASK.
*
* EXIT (X6) = CONVERTED VALUE, RIGHT JUSTIFIED.
* (X7) = CONVERTED VALUE, LEFT JUSTIFIED.
*
* USES A - 2.
* X - 1, 2, 3, 6, 7.
*
* CALLS CDD.
CLM SUBR ENTRY/EXIT
SA2 =L*NO LIMIT*
BX1 -X0*X5
BX3 X0+X1
BX7 X2
LX2 -12
BX6 X2
ZR X3,CLMX IF NO LIMIT
MX3 57 COMPLETE MASK (ADD BITS 2-0)
BX3 X3*X0
BX1 -X3*X5
RJ CDD CONVERT TO DECIMAL DISPLAY
MX3 42 INSURE END OF LINE
BX7 X3*X4
EQ CLMX RETURN
CSD SPACE 4,15
** CSD - CONVERT TO SIGNED DISPLAY CODE.
*
* ENTRY (X1) = 18-BIT VALUE TO BE CONVERTED, RIGHT JUSTIFIED.
*
* EXIT (X6) = SIGNED VALUE, MAXIMUM OF 6 CHARACTERS
* PLUS SIGN CHARACTER.
*
* USES B - 5.
* X - 1, 2, 3, 4, 6.
*
* CALLS CDD.
CSD SUBR ENTRY/EXIT
SB5 B0
BX2 X1
LX2 59-17
BX3 -X2 GET COMPLEMENT
PL X2,CSD1 IF NOT NEGATIVE VALUE
AX3 59-17 FIND POSITIVE VALUE
BX1 X3
SB5 1R- SET NEGATIVE SIGN
CSD1 RJ CDD CONVERT TO DISPLAY CODE
ZR B5,CSD2 IF NOT A NEGATIVE VALUE
SX3 B5 ADD SIGN TO VALUE
AX4 6
MX2 6 CLEAR UPPER 6 BITS
BX4 -X2*X4
LX3 54
BX4 X4+X3
CSD2 MX1 48
BX6 X1*X4
EQ CSDX RETURN
CSR SPACE 4,10
** CSR - CONVERT SRU-S.
*
* ENTRY (X2) = SRU VALUE (MICRO-UNITS*10).
*
* EXIT (X6) = F10.3 FORMAT VALUE.
* = *NO LIMIT*, IF SRU VALUE .EQ. -0.
*
* USES X - 0, 1, 3, 6.
* A - 3.
*
* CALLS CFD.
CSR1 SA3 =L*NO LIMIT*
BX6 X3
CSR SUBR ENTRY/EXIT
MX0 -42
BX1 -X0*X2
BX3 X0+X1
ZR X3,CSR1 IF NO LIMIT
SA3 MLPY SRU CONSTANT (=.0001)
PX1 X1
FX1 X3*X1 SRU/10000
RJ CFD CONVERT TO F10.3 FORMAT
EQ CSRX RETURN
DTT SPACE 4,10
** DTT - DETERMINE TIME UNTIL TIMEOUT.
*
* ENTRY (X1) = SCHEDULING FIELD FROM *QAC* BLOCK,
* RIGHT-JUSTIFIED.
*
* EXIT (SUSM) = UPDATED WITH NEW TIME.
*
* USES X - 1, 2, 4, 6.
* A - 1, 6.
*
* CALLS CDD.
*
* MACROS RTIME.
DTT SUBR ENTRY/EXIT
MX2 -24
BX4 -X2*X1
RTIME DTTA
SA1 DTTA GET SECONDS
LX1 24
BX1 -X2*X1
IX4 X4-X1 SECONDS REMAINING UNTIL TIMEOUT
SX1 X4+30
SX4 60
IX1 X1/X4 CONVERT SECONDS TO MINUTES
RJ CDD CONVERT TO DECIMAL DISPLAY CODE
SA1 SUSM
MX2 -18
BX6 -X2*X6
LX2 23-17
BX1 X2*X1 REMOVE TIME
LX6 23-17
BX6 X1+X6
SA6 A1 REPLACE MINUTES REMAINING
EQ DTTX RETURN
DTTA DATA 0 REAL TIME
ESB SPACE 4,15
** ESB - ENTER DATA INTO STRING BUFFER.
*
* ENTRY (B7) = ADDRESS OF LINE DESCRIPTOR ENTRY.
* (X6) = FIRST WORD OF DATA TO TRANSFER.
* (A1) = ADDRESS OF DATA TO TRANSFER, IF MORE THAN
* ONE WORD.
*
* EXIT (B7) = CURRENT STRING BUFFER ADDRESS.
*
* USES X - 0, 1, 2, 3, 6, 7.
* A - 1, 2, 7.
* B - 2, 3, 7.
ESB SUBR ENTRY/EXIT
SA2 B7+ GET NUMBER OF CHARACTERS TO TRANSFER
SB2 X2
LX2 -18
SX3 X2 GET CHARACTER INDEX
SB7 USBB+X3 SET STARTING ADDRESS IN STRING BUFFER
MX0 -6
ESB1 SB3 10 SET CHARACTERS PER WORD
ESB2 LX6 6
SB2 B2-B1
BX7 -X0*X6
SB3 B3-B1
SA7 B7
SB7 B7+B1
ZR B2,ESBX IF ALL CHARACTERS TRANSFERRED
NZ B3,ESB2 IF NOT END OF WORD
SA1 A1+B1
BX6 X1
EQ ESB1 TRANSFER NEXT CHARACTER
GCS SPACE 4,10
** GCS - GET CONNECTION STATUS.
*
* ENTRY (B6) = PEEK REPLY ENTRY ADDRESS.
* (X1) = PEEK REPLY ENTRY WORD CONTAINING CONNECTION
* STATUS.
*
* EXIT (X6) = CONNECTION STATUS, LEFT JUSTIFIED.
*
* USES X - 0, 1, 2, 6.
* A - 1, 2.
GCS SUBR ENTRY/EXIT
SA2 B6 GET QUEUE TYPE
MX0 -12
LX2 11-23
BX2 -X0*X2
SX2 X2-EXQQ
ZR X2,GCS1 IF EXECUTING JOB
SA1 GCSA CLEAR CONNECTION STATUS
BX6 X1
EQ GCSX RETURN
GCS1 MX0 -4 GET CONNECTION STATUS FROM REPLY ENTRY
LX1 0-55
BX1 -X0*X1
SA1 CNST+X1 GET CONNECTION STATUS TO DISPLAY
BX6 X1
EQ GCSX RETURN
GCSA DATA 2C CONNECTION STATUS FOR QUEUED FILES
GDR SPACE 4,10
** GDR - GET DESTINATION ROUTING.
*
* ENTRY (X1) = PEEK REPLY ENTRY WORD CONTAINING THE
* DESTINATION *FO-UI*.
*
* EXIT (X6) = DESTINATION ROUTING, LEFT JUSTIFIED.
*
* USES X - 0, 1, 2, 6.
* A - 1.
GDR SUBR ENTRY/EXIT
MX0 6
BX2 X0*X1
NZ X2,GDR1 IF ROUTED TO REMOTE BATCH
SA1 GDRA
EQ GDR2 DISPLAY ROUTED TO LOCAL BATCH
GDR1 SA1 GDRB DISPLAY ROUTED TO REMOTE BATCH
GDR2 BX6 X1
EQ GDRX RETURN
GDRA DATA 2CBC ROUTED TO LOCAL BATCH
GDRB DATA 2CRB ROUTED TO REMOTE BATCH
GJS SPACE 4,15
** GJS - GET JOB STATUS.
*
* ENTRY (B4) = EJT STATUS WORD OFFSET.
* (B6) = PEEK REPLY ENTRY ADDRESS.
*
* EXIT (A1) = ADDRESS OF STATUS DESCRIPTOR.
* (X6) = FIRST WORD OF STATUS DESCRIPTOR.
*
* ERROR TO *PSE*, IF INCORRECT QUEUE TYPE.
*
* USES X - 0, 1, 2, 3, 4, 6.
* A - 1, 2, 3.
*
* CALLS DTT.
GJS SUBR ENTRY/EXIT
SA1 B6+ GET QUEUE TYPE
MX0 -12
LX1 -12
BX1 -X0*X1
SA2 QTST SEARCH FOR MATCHING QUEUE TYPE
MX0 18
GJS1 ZR X2,GJS3 IF END OF TABLE
BX3 X0*X2
LX3 18
IX4 X1-X3
SX3 X2 ADDRESS OF STATUS DESCRIPTOR
SA2 A2+1
NZ X4,GJS1 IF NO MATCH
NZ X3,GJS2 IF NOT EXECUTING JOB
SA1 B6+B4 GET EJT STATUS
MX0 -5
LX1 11
BX6 -X0*X1
SA3 X6+EJST
SX6 X6-SUJS
NZ X6,GJS2 IF NOT SUSPENDED JOB
LX1 -11-12
RJ DTT DETERMINE MINUTES UNTIL TIMEOUT
SA3 EJST+SUJS RESET MESSAGE
GJS2 SA1 X3
BX6 X1
EQ GJSX RETURN
GJS3 SX1 EMSB * INCORRECT QUEUE TYPE.*
EQ PSE ISSUE ERROR MESSAGE AND ABORT
GSC SPACE 4,10
** GSC - GET SERVICE CLASS.
*
* ENTRY (B6) = PEEK REPLY ENTRY ADDRESS.
*
* EXIT (X6) = SERVICE CLASS CHARACTER, LEFT JUSTIFIED.
*
* USES X - 0, 1, 2, 3, 4, 6.
* A - 1, 2.
* B - 2.
GSC SUBR ENTRY/EXIT
MX0 6 GET SERVICE CLASS
SA1 B6+B1
SX3 10 CALCULATE WORD ORDINAL
BX1 X0*X1
LX1 6
BX4 X1
SX6 X3
IX3 X1/X3
SA2 GSCA+X3
IX3 X3*X6
IX4 X4-X3
SX3 6 CALCULATE SHIFT COUNT
IX4 X3*X4
SB2 X4
LX2 X2,B2
BX6 X0*X2 SERVICE CLASS CHARACTER
EQ GSCX RETURN
GSCA DATA L+"NMDS"+ SERVICE CLASS CHARACTER STRING
IPR SPACE 4,15
** IPR - ISSUE PEEK REQUEST.
*
* ENTRY (BQAC) = *QAC* PEEK REQUEST.
*
* EXIT (X1) = 0, IF REQUEST SUCCESSFUL.
* = 1, IF NO JOBS FOUND.
*
* ERROR TO *PSE*, IF *QAC* ERROR ENCOUNTERED.
*
* USES X - 0, 1, 2, 6.
* A - 1, 2, 6.
*
* CALLS ISM.
*
* MACROS SYSTEM.
IPR SUBR ENTRY/EXIT
SYSTEM QAC,R,BQAC ISSUE PEEK REQUEST
SA1 BQAC CHECK ERROR STATUS
MX0 -8
LX1 -10
BX1 -X0*X1
ZR X1,IPR3 IF NO ERRORS
SX2 X1-ER07
ZR X2,IPR1 IF NO JOBS FOUND
SX1 EMSE * QAC ERROR ENCOUNTERED.*
EQ PSE ISSUE ERROR MESSAGE AND ABORT
* PROCESS NO JOBS FOUND.
IPR1 SA1 JSNM GET JSN
SA2 EMSD
NZ X1,IPR2 IF JSN SPECIFIED
SA1 IPRA
NZ X1,IPRX IF NOT FIRST REQUEST
SA2 EMSC
IPR2 RJ ISM
SX1 B1+ SET NO JOBS FOUND FLAG
IPR3 SX6 B1+ FIRST REQUEST ISSUED
SA6 IPRA
EQ IPRX RETURN
IPRA CON 0 FIRST REQUEST FLAG
ISM SPACE 4,20
** ISM - ISSUE MESSAGE.
*
* ENTRY (X1) = JSN OR UJN.
* = 0, IF JSN OR UJN NOT TO BE ADDED TO MESSAGE.
* (X2) = FIRST WORD OF MESSAGE.
* (A2) = BEGINNING ADDRESS OF MESSAGE.
*
* USES X - 1, 2, 3, 6.
* A - 3, 6.
*
* CALLS SFN.
*
* MACROS MESSAGE, WRITEC.
*
* NOTES *ISM* ISSUES A SPECIFIED MESSAGE TO THE
* OUTPUT FILE IF IT IS A TERMINAL FILE, OR TO
* THE USER-S DAYFILE IF IT IS NOT. IF A JSN OR
* UJN IS SPECIFIED, IT IS ADDED TO THE MESSAGE.
ISM SUBR ENTRY/EXIT
ZR X1,ISM1 IF NO JSN/UJN
RJ SFN SPACE FILL JSN/UJN
MX3 42 ADD JSN/UJN TO MESSAGE
LX3 -6 PUT JSN/UJN IN CHARACTER POSITIONS 2-8
BX2 -X3*X2
LX6 -6
BX1 X3*X6
BX6 X2+X1
SA6 A2+
ISM1 SA3 FT
ZR X3,ISM2 IF TERMINAL FILE
MESSAGE A2,3
EQ ISMX EXIT
ISM2 WRITEC O,A2
EQ ISMX EXIT
LST SPACE 4,20
** LST - PROCESS FILE LENGTH, STATUS AND TYPE.
*
* ENTRY (A5)= FNT ENTRY ADDRESS.
* (X5)= FNT ENTRY.
*
* EXIT (A5) = FST WORD ADDRESS.
* FILE LENGTH IN FOPB+1.
* FILE TYPE IN FOPB+2.
* FILE STATUS IN FOPB+3.
* FILE ACCESS LEVEL IN FOPB+4, FOPB+5.
*
* USES X - 0, 1, 2, 3, 4, 5, 6, 7.
* A - 1, 2, 5, 6, 7.
* B - 2, 5.
*
* CALLS CDD, SFN.
*
* MACROS WRITEW.
*
LST SUBR
MX0 42 PROCESS NAME
BX1 X0*X5
RJ SFN SPACE FILL NAME
LX6 42 RIGHT JUSTIFY NAME
SA6 FOPB
MX0 -6 SET FILE STATUS
BX1 -X0*X5
SA1 FSTT+X1 FILE STATUS
RJ SFN SPACE FILL NAME
SB2 15 SET FILE ACCESS LEVEL
AX3 X5,B2
MX0 -3
BX3 -X0*X3
NZ X3,LST1 IF NOT LEVEL 0
SA2 SSFL
NZ X2,LST1 IF SECURE SYSTEM
SA6 FOPB+4 STORE FILE STATUS
SX6 B0+
SA6 FOPB+5
EQ LST2 GET FILE TYPE
LST1 MX0 30
BX4 X0*X6 SAVE FILE STATUS
SA1 TALV+X3 FILE ACCESS LEVEL
RJ SFN SPACE FILL ACCESS LEVEL
LX6 -30
BX7 -X0*X6
BX7 X4+X7
SA7 FOPB+4 SET FILE STATUS AND ACCESS LEVEL
MX0 12
BX6 X0*X6 SET LAST TWO CHARACTERS OF ACCESS LEVEL
SA6 FOPB+5
LST2 MX0 -6
AX5 6 FILE TYPE
BX2 -X0*X5
SA1 FLTY+X2 FILE TYPE
MX0 18
BX1 X0*X1
RJ SFN SPACE FILL NAME
LX6 24
LX5 6+59-12 CHECK WRITE LOCKOUT BIT
PL X5,LST3 IF NOT WRITE LOCKOUT
SA1 =1R* DISPLAY * AFTER FILE TYPE
MX0 -6
BX6 X0*X6
BX6 X1+X6
LST3 LX6 6
SA6 FOPB+2
MX0 -2 GET FILE TYPE
BX5 -X0*X5
SB5 X5
SX2 X2-LOFT
NZ X2,LST3.2 IF NOT LOCAL FILE
SA2 LSTA SET *TP*
EQ B5,B1,LST3.1 IF TAPE FILE
SA2 A2+B1 SET *TT*
SB2 B5-B1
NE B2,B1,LST3.2 IF NOT TERMINAL FILE
LST3.1 MX0 48 REPLACE *LO* IN FILE TYPE FIELD
LX0 18
LX2 30
BX6 X0*X6
BX6 X2+X6 INSERT NEW FILE TYPE
SA6 A6+
* PROCESSING FST ENTRY.
LST3.2 SA5 A5+1 FST ENTRY
SA2 =10H
NE B5,B1,LST3.3 IF NOT TAPE FILE
LX5 24
LST3.3 MX0 24
BX1 X0*X5 FILE LENGTH
LX1 24
BX6 X2
ZR X1,LST4 IF ZERO LENGTH
RJ CDD CONVERT TO DECIMAL
LST4 SA6 FOPB+1
LE B5,B1,LST5 IF MS OR TAPE FILE
SA1 =10H SET BLANKS FOR STATUS
EQ LST6 STORE STATUS
LST5 MX0 -3 SET STATUS FIELD
SA5 A5 FST ENTRY
SA1 OPBB
LX5 59-8
NG X5,LST6 IF FILE ON INACCESSIBLE DEVICE
LX5 59-0-59+8
BX2 -X0*X5
SA1 FLST+X2
PL X5,LST6 IF LAST OPERATION READ
MX0 30 UPDATE LAST OPERATION WITH *WRITE*
BX1 X0*X1
SA2 =R*WRITE*
BX1 X1+X2
LST6 BX6 X1
SA6 FOPB+3
WRITEW OUTPUT,FOPB,FOPL
EQ LSTX EXIT
LSTA DATA 2LTP
DATA 2LTT
PSE SPACE 4,10
** PSE - PROCESS SYSTEM ERROR.
*
* ENTRY (X1) = FWA OF ERROR MESSAGE.
*
* EXIT JOB ABORTED.
*
* MACROS ABORT, MESSAGE.
PSE BSS 0 ENTRY
MESSAGE X1 ISSUE DESCRIPTIVE MESSAGE
MESSAGE EMSA * ENQUIRE ABORTED.*
ABORT
RRB SPACE 4,10
** RRB - RESET *QAC* REQUEST BUFFER.
*
* EXIT (X1) .EQ. 0, IF QUEUE SCAN IS COMPLETE.
* .NE. 0, IF REQUEST IS TO BE REISSUED.
*
* USES X - 0, 1, 2, 3, 6.
* A - 1, 2, 3, 6.
* B - 2, 3.
RRB SUBR ENTRY/EXIT
SA1 BQAC+4 CHECK QUEUE SELECTION BITS
MX0 -12
LX1 -24
BX1 -X0*X1
ZR X1,RRBX IF QUEUE SEARCH COMPLETE
MX0 -1 CLEAR COMPLETION BIT
SA3 BQAC
BX6 X0*X3
SA6 A3
SA2 A3+B1 RESET BUFFER POINTERS
SX6 X2
SA6 A2+1 SET *IN* = *FIRST*
SB3 NUMQ
SA2 RRBA
SA6 A6+B1 SET *OUT* = *FIRST*
SB2 5 NUMBER OF QUEUE COUNTS PER WORD
BX6 X6-X6
SA3 BQPF
RRB1 ZR B3,RRB3 IF END OF QUEUES
NZ B2,RRB2 IF NOT END OF WORD
SA6 A3
SB2 4 ADVANCE TO NEXT WORD
SA3 A3+B1
SX6 B0+
RRB2 LX1 -1
SB2 B2-B1
LX2 -12
SB3 B3-B1
PL X1,RRB1 IF QUEUE SCANNED
BX6 X2+X6
EQ RRB1 CHECK NEXT QUEUE
RRB3 SA6 A3+
EQ RRBX RETURN
RRBA CON 7777B MAXIMUM QUEUE COUNT
WCL SPACE 4,15
** WCL - WRITE DISPLAY CODED LINES.
*
* ENTRY (B6) = FWA OF DATA IN *QAC* REPLY UNIT BUFFER.
* (B7) = SEARCH FLAG.
* .EQ. 0, SEARCH FROM LWA TO FWA.
* .NE. 0, SEARCH FROM FWA TO LWA.
* (X5) = DATA WORD COUNT.
*
* USES X - 1, 5, 6, 7.
* A - 1, 6.
* B - 2, 3, 4, 5, 6, 7.
*
* CALLS USB.
*
* MACROS WRITES.
*
* NOTES *WCL* SEARCHES A *QAC* REPLY UNIT BUFFER
* CHECKING FOR THE FWA OF DATA TO WRITE.
* IF LESS THAN *MXLC* LINES ARE IN THE REPLY UNIT
* BUFFER, ALL DATA WILL BE WRITTEN. OTHERWISE
* THE FIRST ((B7) .NE. 0) OR LAST ((B7) .EQ. 0) *MXLC*
* LINES WILL BE WRITTEN. LINES ARE TRUNCATED TO *MXLL*
* CHARACTERS.
WCL SUBR ENTRY/EXIT
ZR X5,WCLX IF NO DATA
SB5 MXLC SET MAXIMUM NUMBER OF LINES TO WRITE
MX7 -12
SB2 B6+X5 (B2) = LWA+1 OF DATA
NZ B7,WCL5 IF SEARCH FROM FWA TO LWA
SB4 B0 INITIALIZE LINE COUNT
WCL1 EQ B2,B6,WCL2 IF BEGINNING OF BUFFER
SB2 B2-B1 GET PREVIOUS WORD
SA1 B2
BX1 -X7*X1
NZ X1,WCL1 IF NO ZERO BYTE TERMINATOR
SB4 B4+B1 INCREMENT LINE COUNT
LE B4,B5,WCL1 IF LINE LIMIT NOT REACHED
SB2 B2+B1 SET FWA OF PREVIOUS LINE
SB4 B4-B1
WCL2 SX6 B4+ SAVE LINE COUNT
SA6 WCLA
WCL3 SB6 USBBL
RJ USB
SB7 B7-WBUF2+1
SB6 MXLL
SX5 A1+B1 SAVE POSITION IN PACKED BUFFER
LE B7,B6,WCL4 IF LINE NOT TOO LONG
SB7 B6
WCL4 WRITES OUTPUT,WBUF2,B7
SA1 WCLA DECREMENT LINE COUNT
SX6 X1-1
SA6 A1
SB2 X5 ADDRESS OF NEXT LINE
NZ X6,WCL3 IF MAXIMUM LINES NOT WRITTEN
EQ WCLX RETURN
WCL5 SB3 B6+
SB4 1 INITIALIZE LINE COUNT
WCL6 SA1 B3
SB3 B3+1
BX1 -X7*X1
EQ B2,B3,WCL7 IF END OF BUFFER
NZ X1,WCL6 IF NO ZERO BYTE TERMINATOR
SB4 B4+1
LT B4,B5,WCL6 IF LINE LIMIT NOT REACHED
WCL7 SB2 B6 SET FWA OF FIRST LINE
EQ WCL2 WRITE LINES TO OUTPUT
WCLA CON 0 LINE COUNT
WML SPACE 4,10
** WML - WRITE MESSAGE LINE.
*
* ENTRY (A2) = FWA OF *QAC* REPLY UNIT CONTAINING MESSAGE.
* (X2) = FIRST WORD OF *QAC* REPLY UNIT.
*
* USES X - 0, 1, 2, 3.
* A - 3.
* B - 2, 6, 7.
*
* CALLS USB.
*
* MACROS WRITES.
WML SUBR ENTRY/EXIT
SA3 A2+1
ZR X3,WMLX IF NO MESSAGE PRESENT
LX2 -12 GET MESSAGE LENGTH
MX0 -12
BX2 -X0*X2
SB2 A3
SX1 10
IX2 X1*X2 MESSAGE LENGTH (CHARACTERS)
SB6 X2
RJ USB
SB7 B7-WBUF2
WRITES OUTPUT,WBUF2+1,B7
EQ WMLX RETURN
SPACE 4,10
** COMMON DECK CONTROL.
* CONTROL FOR COMCUSB.
WBUF2 DATA 1R
DATA 1R
USBB BSS USBBL STRING BUFFER
SPACE 4,10
** COMMON DECKS.
*CALL COMCCDD
*CALL COMCCFD
*CALL COMCCIO
*CALL COMCCOD
*CALL COMCCPM
GMS$ EQU 1 FORCE USE OF MASK DURING SORT
*CALL COMCGMS
*CALL COMCLFM
*CALL COMCMVE
*CALL COMCPFM
*CALL COMCRDC
*CALL COMCRDW
*CALL COMCSFN
*CALL COMCSYS
*CALL COMCUSB
*CALL COMCVLC
*CALL COMCWTC
*CALL COMCWTH
*CALL COMCWTS
*CALL COMCWTW
TITLE BUFFER.
* BUFFERS.
*
* NOTE *LBUF*, *RBUF*, AND *WBUF* ARE OVERLAPPING BUFFERS.
USE BUFFERS
FBUF BSS 0 GETFNT BUFFER
OBUF EQU FBUF+FBUFL OUTPUT BUFFER
BUFF EQU OBUF+OBUFL CONTROL POINT AREA / FNT BUFFER
LBUF EQU BUFF+200B LIBRARY LIST BUFFER
RBUF EQU LBUF REPLY BUFFER
WBUF EQU LBUF WORKING BUFFER
RFL= EQU LBUF+TBUFL+5 FIELD LENGTH REQUIRED
SSM= EQU 0 DECLARE *SSM=* ENTRY POINT
TITLE PRESET.
PRS SPACE 4,10
** ENTRY POINTS.
ENQUIRE SPACE 4,10
** ENQUIRE.
ENQUIRE BSS 0 ENTRY
EQ STATUS
LENGTH SPACE 4,10
** LENGTH.
LENGTH BSS 0 ENTRY
SA1 ACTR ARGUMENT COUNT
SX1 X1-1
NZ X1,PRS2 IF NOT 1 ARGUMENT
SA1 ARGR CONSTRUCT *FN* KEYWORD FOR ARGUMENT
SA2 DOFN
BX6 X1
SA6 A1+1
BX7 X2
SA7 A1
SB4 2 SET ARGUMENT COUNT
EQ PRS1
STATUS SPACE 4,10
** STATUS.
STATUS BSS 0 ENTRY
SA2 =0LA DEFAULT OPTION
* EQ PRS
PRS SPACE 4,25
** PRS - PRESET SUBROUTINE.
*
* EXIT (OPAL) = .LT. 0, IF ALL OPTIONS TO BE EXECUTED.
* (BUFF) = CONTROL POINT ADDRESS TO BE READ
* FOR FIRST *RSB* READ (FIRST 100B OF CPA).
* (BUFF+100B) = CONTROL POINT ADDRESS TO BE READ
* FOR SECOND *RSB* READ (SECOND 100B OF CPA).
* (FT) = FILE TYPE.
* = 0, IF TERMINAL FILE.
* (SSFL) .NE. 0, IF SECURE SYSTEM.
* =0, IF NON-SECURE SYSTEM.
* (ACAT) = JOB ACCESS CATEGORIES IF SECURE SYSTEM.
* (ALVL) = JOB ACCESS LEVELS IF SECURE SYSTEM.
* (UESC) = USER EM SHIFT COUNT FROM CMR.
*
* USES X - 0, 1, 2, 3, 4, 5, 6.
* A - 1, 2, 3, 4, 6.
* B - 1, 4, 5.
*
* CALLS ARG, SAL, STF.
*
* MACROS ABORT, MESSAGE, SYSTEM.
PRS SA1 ACTR ARGUMENT COUNT
BX6 X2
SB4 X1
SA6 DFOP
* PROCESS ARGUMENTS.
PRS1 SB1 1
ZR B4,PRS3 IF NO ARGUMENTS
SB5 ARGT PROCESS ARGUMENTS
SA4 ARGR
RJ ARG
SA2 TAGS CHECK FOR ARGUMENTS NOT EQUIVALENCED
LX2 6
SB4 X2-1R9
GT B4,PRS2 IF *OP* USED BUT NOT EQUIVALENCED
SA2 A2+B1
LX2 6
SB4 X2-1R9
GT B4,PRS2 IF *O* USED BUT NOT EQUIVALENCED
SA2 A2+B1
LX2 6
SB4 X2-1R9
GT B4,PRS2 IF *FN* USED BUT NOT EQUIVALENCED
ZR X1,PRS3 IF NO ARGUMENT ERRORS
SA1 ACTR
SB4 X1-1
NZ B4,PRS2 IF MORE THAN ONE ARGUMENT
SA4 ARGR
MX0 -6
BX6 -X0*X4
SX6 X6-1R=
ZR X6,PRS2 IF SEPARATOR IS *=*
BX6 X0*X4
SA6 TAGS
EQ PRS3 NO ARGUMENT ERRORS
PRS2 MESSAGE MSGB * ARGUMENT ERRORS.*
ABORT
PRS3 SA2 TAGS+3
ZR X2,PRS3.0 IF NO JSN
SA1 ACTR
MX0 54 ELIMINATE OPTION SELECTION CHARACTER
BX2 X0*X2
ZR X2,PRS3.1 IF JSN SPECIFIED BUT NOT EQUIVALENCED
SX1 X1-1
LX2 -18
MX0 -18
BX6 -X0*X2
NZ X6,PRS2 IF JSN .GT. 4 CHARACTERS LONG
EQ PRS3.1 CHECK ARGUMENT COUNT
PRS3.0 SA2 A2+1
ZR X2,PRS3.2 IF NO UJN
SA1 ACTR
MX0 54 ELIMINATE OPTION SELECTION CHARACTER
BX2 X0*X2
ZR X2,PRS3.1 IF UJN SPECIFIED BUT NOT EQUIVALENCED
SX1 X1-1
PRS3.1 SB4 X1-1
* CHECK FOR *O* SPECIFIED WITH UJN OR JSN. ANY OTHER PARAMETER
* IS INCORRECT.
ZR B4,PRS3.3 IF NO MORE PARAMETERS
SB4 B4-2
NZ B4,PRS2 IF TOO MANY PARAMETERS
SA1 TAGS+B1
ZR X1,PRS2 IF *O* NOT SPECIFIED
EQ PRS3.3 CLEAR DEFAULT OPTION
PRS3.2 SA1 TAGS+2
ZR X1,PRS3.4 IF FILENAME NOT SPECIFIED
PRS3.3 BX6 X6-X6 CLEAR DEFAULT OPTION
SA6 DFOP
PRS3.4 SA1 TAGS+B1 CHANGE OUTPUT FILE NAME
ZR X1,PRS3.5 IF *O* NOT SPECIFIED
SA2 OUTPUT
MX0 -18
BX6 -X0*X2
BX6 X6+X1
SA6 A2
PRS3.5 GETPP JPPW,LLM,PRSA
SX2 OUTPUT
RJ STF
SA6 FT
NZ X6,PRS3.6 IF NOT TERMINAL
SA2 =1L CLEAR PAGE EJECT
BX6 X2
SA6 PAGE
MESSAGE ZERO,1 CLEAR LINE 1 OF CPA
PRS3.6 SA1 FT
WRITEW O,PRSA,X1 CONDITIONALLY WRITE FORMAT EFFECTOR
* PRESET OPTIONS TO BE EXECUTED.
PRS4 SA1 TAGS CHECK OPTIONS
NZ X1,PRS5 IF NOT DEFAULT OPTION
SA2 DFOP
BX6 X2
SA6 A1
BX1 X2
PRS5 MX0 6
BX2 X0*X1
ZR X2,PRS10 IF THRU ALL SPECIFIED OPTIONS
LX1 6 SHIFT OPTION TO BOTTON OF WORD
BX6 X1 RESET OPTION WORD
SA6 A1+
* CHECK FOR LEGAL OPTION.
SA4 OPNS
PRS6 BX3 X0*X4 CHECK OPTION
IX3 X3-X2
ZR X3,PRS8 IF LEGAL OPTION
SA4 A4+B1
NZ X4,PRS6 IF MORE OPTIONS TO CHECK
* SEND ERROR MESSAGE AND ABORT JOB.
SA1 MSGA+1 PLACE OPTION IN MESSAGE
LX0 12
LX2 12
BX1 -X0*X1
BX6 X1+X2
SA6 A1
MESSAGE MSGA * INCORRECT OPTION X.*
ABORT
* SET EXECUTION BITS IN OPTION TABLE.
PRS8 SX6 B1
LX6 18
BX6 X6+X4
SA6 A4
LX2 6 RIGHT JUSTIFY OPTION
SX6 X2-1RA
NZ X6,PRS4 IF NOT *A* OPTION
SX6 B1+ SET EXECUTION FLAG WORD FOR ALL OPTIONS
SA6 OPAL
EQ PRS4 CHECK REMAINING OPTIONS
* SET RSB BUFFER WORDS TO READ CONTROL POINT AREA.
PRS10 SA2 STAT1+1
BX6 X2
SA6 BUFF
SA2 STAT2+1
BX6 X2
SA6 BUFF+100B
SA1 OPAL
ZR X1,PRS11 IF NOT ALL OPTIONS TO BE EXECUTED
RJ SAL ASSURE ALL OPTIONS ARE SET
* CHECK IF SECURE SYSTEM.
PRS11 GETSSL SSFL GET SYSTEM SECURITY MODE
SA1 SSFL
LX1 12
MX0 -3
BX6 -X0*X1
SA6 SSFL SET SECURE SYSTEM FLAG
* GET USER EXTENDED MEMORY SHIFT COUNT FROM CMR.
SYSTEM RSB,R,PRSB
SA1 UESC
LX1 0-33
MX0 -3
BX6 -X0*X1
SA6 A1
EQ MAIN
PRSA BSS 1 PRINT DENSITY
PRSB VFD 24/1,18/MEFL,18/UESC
SAL SPACE 4,10
** SAL - SET ALL OPTIONS.
*
* EXIT ALL OPTION BITS SET FOR EXECUTION.
*
* USES X - 3, 4, 5, 6.
* A - 4, 5, 6.
SAL SUBR ENTRY/EXIT
SA4 OPNS+1 OPTION TABLE - SKIP *A* OPTION
SA5 EBIT EXECUTION BIT MASK
SAL1 ZR X4,SAL3 IF END OF OPTION TABLE
BX3 X5*X4 CLEAR OPTION FROM OPTION TABLE
NZ X3,SAL2 IF EXECUTION BIT SET
SX6 1 SET EXECUTION BIT
LX6 18
BX6 X6+X4
SA6 A4+
SAL2 SA4 A4+1 CHECK NEXT OPTION
EQ SAL1
SAL3 BX6 X6-X6 RESET END OF OPTION TABLE - SINCE *S*
SA6 A4-2 AND *T* OPTIONS ARE REDUNDANT
EQ SALX
SPACE 4,10
** PRESET COMMON DECKS.
*CALL COMCARG
*CALL COMCSTF
SPACE 4,10
** PRESET CONSTANTS.
* ARGUMENT TABLE.
ARGT BSS 0
OP ARG NASV,TAGS+0 OPTIONS
O ARG NASV,TAGS+1 OUTPUT FILE
FN ARG NASV,TAGS+2 FILE NAME
JSN ARG =1,TAGS+3 JSN
UJN ARG =1,TAGS+4 UJN
ARG
ZERO CON 0
* MESSAGES.
MSGA DATA C* INCORRECT OPTION X.*
MSGB DATA L* ARGUMENT ERRORS.*
* DEFAULT OPTIONS.
DOFN VFD 42/0LFN,18/1R=
DFOP CON 0
SPACE 4,10
END