IDENT RECOVER,FWA,RECOVER
ABS
SST
ENTRY RECOVER
ENTRY RFL=
ENTRY SSJ=
ENTRY VAL=
SYSCOM B1
TITLE RECOVER - RECOVER DETACHED JOB.
*COMMENT RECOVER - RECOVER DETACHED JOB.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
***** RECOVER - RECOVER DETACHED JOB.
*
* R. M. DESSEL 81/10/16.
SPACE 4,10
*** *RECOVER* PERMITS THE RECOVERY OF A DETACHED JOB AT
* LOGIN TIME OR ANY TIME DURING A TERMINAL SESSION.
* *RECOVER* COMMUNICATES WITH A *TXOT* USER TO
* DETERMINE WHICH JOB, IF ANY, SHOULD BE RECOVERED.
* IT WILL ACCEPT PARAMETERS FROM THE COMMAND,
* INPUT FROM THE FILE *INPUT*, AND SEND OUTPUT TO THE
* USER VIA FILE *OUTPUT*.
SPACE 4,10
*** COMMAND FORMAT.
*
* RECOVER(JSN,T)
*
* RECOVER(JSN=JSN,OP=T)
*
* *RECOVER* COMMAND PARAMETERS ARE DEFINED AS THE FOLLOWING.
*
* JSN JOB SEQUENCE NUMBER OF THE *TXOT* JOB THE USER
* WISHES TO RECOVER.
*
* T FLAG TO TELL *RECOVER* TO CONDUCT TERMINAL I/O
* ONLY IF THE USER HAS RECOVERABLE JOB(S) IN THE
* SYSTEM. THIS WILL NORMALLY BE USED BY THE SYSTEM
* AT LOGIN TIME.
SPACE 4,10
*** DAYFILE MESSAGES.
*
* * USER ACCESS NOT VALID.*
* CALLING JOB IS NOT AN INTERACTIVE JOB.
*
* * ARGUMENT ERROR.*
* ARGUMENT ERROR WAS DETECTED ON COMMAND.
*
* * OP OPTION NOT VALID.*
* THE *OP* OPTION SPECIFIED ON THE COMMAND
* IS NOT A LEGAL OPTION.
*
* * NO JSN-S RECOVERED.*
* *RECOVER* RECEIVED AN EOR, EOF OR EOI STATUS WHILE
* ATTEMPTING TO READ THE INPUT DIRECTIVES FILE, AND
* HAS TERMINATED.
*
* * INCORRECT REPLY LIMIT REACHED.*
* THE NUMBER OF CONSECUTIVE INCORRECT REPLIES THE
* USER ENTERED EXCEEDED THE LIMIT. BE SURE ANY
* INPUT DIRECTIVES FILE IS IN 64 CHARACTER SET.
SPACE 4,10
*** OUTPUT MESSAGES.
*
* *NO RECOVERABLE JOBS.*
* THERE ARE NO JOB CANDIDATES FOR RECOVERY.
* MESSAGE WILL NOT APPEAR AT LOGIN TIME IF
* USER HAS NOT INTERACTED WITH *RECOVER*.
*
* * ENTER *GO* TO CONTINUE CURRENT JOB,
* *RELIST* TO LIST RECOVERABLE JOBS,
* OR DESIRED JSN:*
* *RECOVER* PROMPTS THE USER WHENEVER INPUT IS
* REQUIRED.
*
* *JSNX NOT FOUND.*
* USER ENTERED A JSN, BUT IS IS NOT RECOVERABLE.
*
* *JSNX NOT RECOVERABLE - SECURITY CONFLICT.*
* THE SPECIFIED JOB HAD A HIGHER UPPER ACCESS LEVEL
* LIMIT THAN THE CURRENT JOB, AND THUS COULD NOT BE
* RECOVERED BY THE CURRENT JOB.
*
* *INCORRECT ENTRY.*
* USER ENTERED SOMETHING OTHER THAN A VALID RESPONSE.
*
* *MAXIMUM FL ENCOUNTERED - JOB LIST INCOMPLETE.*
* NUMBER OF JOBS RETURNED BY *QAC* EXCEEDED THE
* LARGEST POSSIBLE JSN BUFFER.
SPACE 4,10
*** TERMINAL INTERRUPT PROCESSING (*REPRIEVE* PROCESSING).
*
* IF THE DIRECTIVE INPUT FILE, *INPUT*, IS ASSIGNED
* TO A TIME-SHARING TERMINAL, *REPRIEVE* PROCESSING
* IS ENABLED. IN ALL OTHER CASES, TERMINAL INTERRUPTS
* WILL INTERRUPT OR TERMINATE *RECOVER*.
SPACE 4,10
* COMMON DECKS.
*CALL COMCMAC
*CALL COMCCMD
*CALL COMSEJT
*CALL COMSQAC
*CALL COMSSSJ
*CALL COMSTCM
TITLE DEFINITIONS.
* ASSEMBLY CONSTANTS.
IBFL EQU 101B INPUT BUFFER LENGTH
MARG EQU 2 MAXIMUM NUMBER OF ARGUMENTS
MAXI EQU 10 MAXIMUM CONSECUTIVE INCORRECT REPLYS
MEMI EQU 1000B MEMORY INCREMENT
OBFL EQU 301B OUTPUT BUFFER LENGTH
QRBL EQU 4 *QAC* REPLY BLOCK LENGTH
JSNBL EQU QRBL*100B LENGTH OF *QAC* REPLY BLOCK BUFFER
WBFL EQU 16 WORKING BUFFER LENGTH
WRDL EQU 5 WORDS PER LINE IN RECOVERABLE JSN LIST
SPACE 4,10
* FETS.
ORG 110B
FWA BSS 0 SET ORIGIN ADDRESS
INPUT FILEC INBUF,IBFL,(FET=6) INPUT FET
OUTPUT FILEC OUTBUF,OBFL OUTPUT FET
QRPB SPACE 4,10
** *QAC* PARAMETER BLOCK.
QRPB VFD 50/0,9/PKFC,1/0 REQUEST PREFIX PORTION
VFD 36/0,6/11,18/JSNB
VFD 42/0,18/JSNB
VFD 42/0,18/JSNB
VFD 42/0,18/JSNB+JSNBL
BQSP VFD 60/0 SELECTION CRITERIA PORTION
VFD 60/0
VFD 36/0,12/RJSF,12/0 ROLLOUT SELECTION FLAG
VFD 12/2B,48/0
VFD 60/0
VFD 60/0
VFD 60/0
BQPP VFD 12/0,12/7777B,36/0 PEEK FUNCTION PORTION
VFD 60/0
VFD 24/0,12/ALPB,12/ESPB,12/UJPB+JSPB
VFD 60/0
RPB SPACE 4,10
** *REPRIEVE* PARAMETER BLOCK.
RPB BSS 0
VFD 36/0,12/RPBL,12/0
VFD 30/0,30/PTI
BSSZ 7
RPBA BSSZ 16 EXCHANGE PACKAGE
RPBL EQU *-RPB
SPACE 4,10
* SPECIAL ENTRY POINTS.
SSJ= EQU SSJP SPECIAL SYSTEM JOB
VAL= BSS 0 VALIDATION ENTRY POINT
SPACE 4,10
* WORKING STORAGE.
ASFG CON 0 *ASCII* CHARACTER SET FLAG
IFLG CON 0 INTERACTIVE FLAG
INFG CON 0 TERMINAL INTERRUPT FLAG
INRC CON 0 INCORRECT REPLY COUNTER
JSNX CON 0 JSN ENTERED ON COMMAND
JUAL CON 0 JOB UPPER ACCESS LEVEL LIMIT
LFLG CON 0 LOGIN FLAG
LFTB VFD 42/0LOUTPUT,18/OUTPUT TERMINAL FILES
LRSF CON 0 LIST RESPONSE FLAG
MAXC CON 0 MAXIMUM AMOUNT OF CM AVAILABLE
MEMC CON 0 CURRENT AMOUNT OF CM AVAILABLE
QJSN CON 0 NUMBER OF JOBS RETURNED BY *QAC*
RJSN CON 0 NUMBER OF RECOVERABLE JSN-S
STATM VFD 30/-1,30/0 STATUS OF MEMORY WORD
TIFG CON 0 *TT* FILE TYPE FLAG - INPUT
TOFG CON 0 *TT* FILE TYPE FLAG - OUTPUT
TTST CON 0 *TSTATUS* PARAMETER BLOCK
CON 0
UIFG CON 1 USER INTERACTION FLAG
UPRF CON 0 USER PROMPT FLAG
SPACE 4,10
* DAYFILE AND INTERACTION MESSAGES AND POSSIBLE REPLYS.
MSGA DATA C*NO RECOVERABLE JOBS.*
MSGB DATA 6LRELIST
MSGC DATA 1LR
MSGD DATA 2LR
MSGE DATA C* NO JSN-S RECOVERED.*
MSGF DATA 2LGO
MSGG DATA 1LG
MSGG2 DATA 2LG
MSGG3 DATA 3LGO.
MSGG4 DATA 4LG0.
MSGH DATA C*INCORRECT ENTRY.*
MSGI DATA C* NOT FOUND.*
MSGJ DATA C* INCORRECT REPLY LIMIT REACHED.*
MSGK DATA C*MAXIMUM FL ENCOUNTERED - JOB LIST INCOMPLETE.*
MSGL DATA C* NOT RECOVERABLE - SECURITY CONFLICT.*
TITLE MAIN ROUTINE.
* MAIN ROUTINE.
RECOVER BSS 0 ENTRY
RJ PRS PRESET
REC1 RJ GLJ GET LIST OF JSN-S
RJ DRJ DETERMINE RECOVERABLE JOBS
SA1 RJSN NUMBER OF RECOVERABLE JOBS
ZR X1,REC3 IF NO JOBS TO RECOVER
SX1 X1-1
ZR X1,REC2 IF NUMBER OF RECOVERABLE JOBS = ONE
RJ SRJ SORT LIST OF RECOVERABLE JOBS
REPRIEVE RPB,SET,200B SET *REPRIEVE* PROCESSING
REC2 RJ QUU QUERY USER
ZR X2,REC3 IF USER ENTERED *END*
BX6 X6-X6 FLAG USER INTERACTION
SA6 UIFG
NG X2,REC1 IF INCORRECT ENTRY OR USER ENTERED *LIS*
RJ SVJ SEARCH FOR VALID JSN
ZR X2,REC1 IF JSN NOT FOUND
LX1 24
SYSTEM TLX,R,X1,11B*100B RECOVER JOB
EQ REC4 TERMINATE
REC3 WRITER OUTPUT FLUSH BUFFER
MESSAGE =0,1,R CLEAR COMMAND FROM *MS1W*
SA1 ASFG CHARACTER SET FLAG
ZR X1,REC4 IF PREVIOUS CHARACTER SET = 64
CSET ASCII RESET PREVIOUS CHARACTER SET
REC4 ENDRUN
TITLE SUBROUTINES.
** ABT - ABORT ON ERROR.
*
* ENTRY (X3) = ADDRESS OF DAYFILE MESSAGE.
*
* USES X - 1.
* A - 1.
*
* MACROS ABORT, CSET, MESSAGE, PROMPT.
ABT MESSAGE X3 ISSUE DAYFILE MESSAGE
SA1 IFLG INTERACTIVE FLAG
ZR X1,ABT1 IF CALLING JOB NOT INTERACTIVE
SA1 ASFG *ASCII* CHARACTER SET FLAG
ZR X1,ABT1 IF CHARACTER SET *NORMAL*
CSET ASCII SET *ASCII* 128 CHARACTER SET MODE
ABT1 ABORT
DRJ SPACE 4,15
** DRJ - DETERMINE RECOVERABLE JOBS.
*
* *DRJ* SEARCHES THE BUFFER *JSNB* TO ENSURE THE JOBS
* RETURNED BY *QAC* ARE RECOVERABLE.
*
* ENTRY (QJSN) = NUMBER OF JOBS RETURNED BY *QAC*
*
* EXIT (RJSN) = NUMBER OF RECOVERABLE JOBS.
*
* USES X - 0, 1, 2, 3, 6.
* A - 1, 6.
* B - 2, 3, 4, 5, 6.
*
* MACROS MOVE, WRITEC.
DRJ3 SX6 B5+ STORE NUMBER OF RECOVERABLE JOBS
SA6 RJSN
NZ X6,DRJX IF RECOVERABLE JOBS
SA1 UIFG CHECK USER INTERACTION FLAG
ZR X1,DRJ4 IF USER HAS INTERACTED
SA1 LFLG CHECK *OP=T* OPTION FLAG
NZ X1,DRJX IF MESSAGE TO BE SUPPRESSED
DRJ4 WRITEC OUTPUT,MSGA *NO RECOVERABLE JOBS.*
DRJ SUBR ENTRY/EXIT
BX6 X6-X6 CLEAR NUMBER OF RECOVERABLE JOBS
SA6 RJSN
SA1 QJSN SET NUMBER OF JOBS TO CHECK
SB6 X1+
SB5 B0+ INITIALIZE NUMBER OF RECOVERABLE JOBS
SB2 JSNB SET *QAC* POSITION POINTER
SB3 JSNB SET RECOVERABLE JSN POSITION POINTER
SB4 QRBL NUMBER OF WORDS TO TRANSFER
DRJ1 ZR B6,DRJ3 IF NO MORE JOBS TO CHECK
SB6 B6-1 NUMBER OF JOBS REMAINING TO CHECK
SA1 B2+2 STATUS ADDRESS IN BUFFER
MX0 12
BX1 X0*X1 GET STATUS
LX1 12
MX0 4
LX0 11
BX1 X0*X1
LX1 -7 CONNECTION STATUS
SX2 X1-DTCS
NZ X2,DRJ2 IF NOT DETACHED
SX1 B4 NUMBER OF WORDS TO TRANSFER
SX2 B2 SOURCE ADDRESS
SX3 B3+ DESTINATION ADDRESS
MOVE X1,X2,X3 MOVE JSN WORD BLOCK
SB3 B3+QRBL INCREMENT RECOVERABLE JSN POINTER
SB5 B5+1 INCREMENT RECOVERABLE JSN-S
DRJ2 SB2 B2+QRBL INCREMENT *QAC* POSITION POINTER
EQ DRJ1 CHECK NEXT WORD BLOCK
DTT SPACE 4,15
** DTT - DETERMINE TIME UNTIL TIMEOUT.
*
* ENTRY (*PRJD*) = SCHEDULING FIELD ADDRESS IN *JSNB* BUFFER.
*
* EXIT (X6) = MINUTES REMAINING UNTIL TIMEOUT.
*
* USES X - 0, 1, 2, 4, 6.
* A - 1, 4.
*
* CALLS CDD.
*
* MACROS RTIME.
DTT SUBR ENTRY/EXIT
RTIME DTTA GET REAL TIME
SA1 PRJD GET SCHEDULING FIELD
SA1 X1
AX1 12
MX0 -24
BX1 -X0*X1
SA4 DTTA GET SECONDS
MX0 24
BX4 X0*X4
LX4 24
IX1 X1-X4 SECONDS REMAINING UNTIL TIMEOUT
SX1 X1+30
SX2 60
IX1 X1/X2 CONVERT SECONDS TO MINUTES
RJ CDD CONVERT TO DECIMAL DISPLAY CODE
* FORMAT MINUTES REMAINING UNTIL TIMEOUT.
LX6 30
MX0 30
BX6 X0*X6
SA1 DTTB APPEND *MIN.*
BX6 X6+X1
EQ DTTX RETURN
DTTA DATA 0 REAL TIME
DTTB DATA 5R MIN.
GLJ SPACE 4,15
** GLJ - GET LIST OF JSN-S.
*
* *GLJ* ISSUES A *QAC* PEEK REQUEST TO RETURN RECOVERABLE JOBS
* FROM THE EXECUTING JOB TABLE TO BUFFER *JSNB*.
*
* EXIT (QJSN) = NUMBER OF JSN-S RETURNED BY *QAC*.
*
* USES X - 0, 1, 2, 6.
* A - 1, 2, 6.
*
* CALLS IBS.
*
* MACROS SYSTEM, WRITEC.
GLJ2 SA6 QJSN NO RECOVERABLE JOBS FOUND
GLJ SUBR ENTRY/EXIT
GLJ1 SYSTEM QAC,R,QRPB ISSUE PEEK REQUEST
* RESET *QAC* REQUEST BUFFER.
SA1 QRPB CLEAR COMPLETE BIT
MX0 -1
BX6 X0*X1
SA6 A1
AX1 10 CHECK ERROR FIELD
SX6 X1-ER07
ZR X6,GLJ2 IF NO RECOVERABLE JOBS FOUND
SA2 QRPB+B1 RESET BUFFER POINTER
SX6 X2
SA6 A2+B1 SET IN = FIRST
SA6 A6+B1 SET OUT = FIRST
MX0 -12
SA1 BQPP DETERMINE NUMBER OF JSN-S RETURNED
LX1 24
BX6 -X0*X1
SA6 QJSN
LX1 36 RESET NUMBER OF JSN-S TO RETURN
LX0 36
BX1 X0*X1
SA2 GLJA
BX6 X1+X2
SA6 A1
* DETERMINE IF *QAC* SCAN COMPLETE.
SA1 QRPB+4
MX0 36
BX2 X0*X1
ZR X2,GLJX IF SCAN COMPLETE
RJ IBS INCREASE BUFFER SIZE
ZR X1,GLJ1 IF REQUEST COMPLETE
WRITEC OUTPUT,MSGK *MAX FL ENCOUNTERED - JOB LIST INCOMPLETE.*
EQ GLJX RETURN
GLJA VFD 12/0,12/7777B,36/0
IBS SPACE 4,15
** IBS - INCREASE BUFFER SIZE.
*
* ENTRY (MEMC) = CURRENT MEMORY.
* (MAXC) = MAXIMUM MEMORY AVAILABLE.
*
* EXIT (MEMC) = CURRENT MEMORY.
* (X1) = 0, MEMORY REQUEST COMPLETE.
* 1, NOT ENOUGH FL AVAILABLE.
*
* USES X - 0, 1, 2, 3, 6.
* A - 1, 2, 3, 6.
*
* MACROS MEMORY.
IBS1 SX1 1 SET ERROR RETURN
IBS SUBR ENTRY/EXIT
SA1 MEMC GET CURRENT MEMORY
SX3 MEMI
IX2 X1+X3
SA3 MAXC
IX6 X3-X2
NG X6,IBS1 IF REQUEST WOULD EXCEED VALIDATION LIMITS
BX6 X2
SA6 A1 UPDATE *MEMC*
LX6 30
SA6 STATM
MEMORY CM,STATM,R,,NA REQUEST ADDITIONAL MEMORY
SA1 STATM
SA2 MEMC
AX1 30
BX2 X1-X2
NZ X2,IBS1 IF REQUEST NOT HONORED
SA1 QRPB+4 UPDATE LWA+1 OF *JSNB*
SX6 X1+MEMI
MX0 -18
BX6 -X0*X6
SA6 QRPB+4
BX1 X1-X1 CLEAR ERROR RETURN
EQ IBSX RETURN
PRJ SPACE 4,15
** PRJ - PRINT LIST OF RECOVERABLE JSN-S.
*
* *PRJ* PRINTS THE LIST OF RECOVERABLE JSN-S, UJN-S,
* AND STATUSES LOCATED IN BUFFER *JSNB*. MINUTES
* REMAINING UNTIL TIMEOUT ARE ALSO PRINTED FOR SUSPENDED
* JOBS.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 2.
*
* CALLS DTT, SFN.
*
* MACROS WRITEC.
PRJ SUBR ENTRY/EXIT
BX6 X6-X6 CLEAR TERMINAL INTERRUPT FLAG
SA6 INFG
WRITEW OUTPUT,PRJA,PRJAL WRITE TABLE HEADER
SA1 RJSN SAVE NUMBER OF RECOVERED JSN-S
BX6 X1
SA6 PRJE
SA2 LIST PRINT TABLE ADDRESS
SB2 WRDL-2
SA2 A2+B2 LAST WORD ADDRESS IN PRINT TABLE
BX6 X6-X6
SA6 A2 ZERO LAST WORD IN PRINT TABLE
SA6 A2+B1 SET END OF LINE CHARACTER
* DETERMINE AND STORE JSN.
SA1 JSNB RECOVERABLE JSN TABLE ADDRESS
PRJ1 SA2 LIST PRINT BUFFER ADDRESS
MX0 24 GET JSN
BX1 X0*X1
RJ SFN SPACE-FILL JSN
LX6 -18
SA6 A2 STORE JSN IN PRINT BUFFER
* DETERMINE AND STORE UJN.
SA1 A1+B1 GET UJN
MX0 42
BX1 X0*X1
RJ SFN SPACE FILL UJN
SA2 A2+B1 STORE UJN IN PRINT BUFFER
SA6 A2
* DETERMINE AND STORE JOB STATUS.
SA1 A1+B1 GET STATUS FIELD
MX0 5
LX0 -6
BX1 X0*X1
LX1 -49
SA2 A2+B1
SA3 X1+PRJB LOCATION OF MESSAGE
BX6 X3
SA6 A2
* DETERMINE IF JOB SUSPENDED AND OBTAIN MINUTES UNTIL TIMEOUT.
SA2 A2+B1
SX6 A2
SA6 PRJC SAVE PRINT BUFFER ADDRESS
SX6 A1+
SA6 PRJD SAVE RECOVERABLE JSN BUFFER ADDRESS
SX1 X1-SUJS
NZ X1,PRJ2 IF NOT SUSPENDED
RJ DTT DETERMINE TIME UNTIL TIMEOUT
SA1 PRJC STORE TIME IN PRINT BUFFER
SA6 X1
SA3 INFG
NZ X3,PRJX IF INTERRUPT OCCURRED
* PRINT LIST OF RECOVERABLE JSN-S.
PRJ2 WRITEC OUTPUT,LIST LIST OF RECOVERABLE JOBS
SA2 PRJC
SA2 X2+ RESTORE PRINT BUFFER ADDRESS
SA1 PRJD
SA1 X1+1 ADVANCE TO NEXT JSN IN BUFFER
SA4 PRJE DECREMENT NUMBER OF JSN-S TO PRINT
SX6 X4-1
SA6 PRJE
NZ X6,PRJ3 IF MORE TO PRINT
WRITEC OUTPUT,PRJA BLANK LINE
EQ PRJX RETURN
PRJ3 BX6 X6-X6
SA6 A2+ ZERO MINUTES FIELD
SA1 A1+B1 INCREMENT JSN BUFFER ADDRESS
EQ PRJ1 RETURN
* RECOVERABLE JSN PRINT BUFFER.
PRJA DATA C* *
DATA C* RECOVERABLE JOB(S)*
DATA C* *
DATA C* JSN UJN STATUS TIMEOUT*
DATA C* *
PRJAL EQU *-PRJA
PRJB BSS 0 STATUSES FOR RECOVERY
DATA 10HINITIAL
DATA 10HEXECUTING
DATA 10HSCH ROLLED
DATA 10HSCP ROLLIN
DATA 10HSCP ROLLED
DATA 10HT/E ROLLED
DATA 10HI/O ROLLED
DATA 10HIDLE
DATA 10HSUSPENDED
DATA 10HPCP ROLLED
ERRNZ *-PRJB-1-RCJS TABLE LENGTH ERROR
PRJC DATA 0 PRINT BUFFER POSITION POINTER
PRJD DATA 0 RECOVERABLE JSN BUFFER POSITION POINTER
PRJE DATA 0 NUMBER OF JSN-S REMAINING TO PRINT
SPACE 4,10
* THE FOLLOWING TESTS ENSURE PROPER INTERFACE BETWEEN
* THE RECOVERABLE JOB STATUSES PRINTED BY *RECOVER* AND
* THE SYMBOLS DEFINED IN *COMSEJT*. IF AN ERROR OCCURRS,
* THE PROPER STATUS SHOULD BE CHANGED IN THE TABLE OF
* JOB STATUSES.
ERRNZ PRJS-0 PRE-INITIAL JOB STEP
ERRNZ EXJS-1 EXECUTING
ERRNZ ROJS-2 SCHEDULER ROLLOUT
ERRNZ SIJS-3 SCP ROLLIN
ERRNZ SOJS-4 SCP ROLLOUT
ERRNZ TOJS-5 TIMED/EVENT ROLLOUT
ERRNZ IOJS-6 INTERACTIVE ROLLOUT
ERRNZ DOJS-7 DISABLED ROLLOUT
ERRNZ SUJS-10B SUSPENDED ROLLOUT
ERRNZ PCJS-11B PSEUDO-ROLLOUT
PTI SPACE 4,15
** PTI - PROCESS TERMINAL INTERRUPT.
*
* *PTI* PROCESSES TERMINAL INTERRUPTS. IF A USER
* BREAK 1 OR USER BREAK 2 IS DETECTED WHILE THE LIST
* OF RECOVERABLE JOBS IS BEING PRINTED, THE LIST WILL
* BE TERMINATED.
*
* USES X - 0, 1, 2, 6, 7.
* A - 1, 6, 7.
*
* MACROS REPRIEVE.
PTI BSS 0 ENTRY
BX6 X6-X6
SA6 RPB+5 CLEAR PENDING SYSTEM REQUEST
SA6 RPB+6 RESET TERMINAL INTERRUPT
SA1 RPBA RESET *P* ADDRESS
MX0 18
LX0 -6
BX2 -X0*X1
SX1 QUU3
LX1 36
BX6 X1+X2
SA6 RPBA SET *RESUME* ADDRESS
SA1 INPUT SET COMPLETE BIT IN INPUT FET
SX2 B1
BX7 X1+X2
SA7 A1+
SA1 OUTPUT SET COMPLETE BIT IN OUTPUT FET
BX7 X1+X2
SA7 A1
SA1 INPUT+1
SX6 X1
SA6 A1+B1 SET IN = FIRST
SA6 A6+1 SET OUT = FIRST
SA1 TOFG
ZR X1,PTI1 IF FILE NOT ASSIGNED TO TERMINAL
SA1 OUTPUT+1
SX6 X1+
SA6 A1+B1 SET IN = FIRST
SA6 A6+B1 SET OUT = FIRST
PTI1 SX6 1
SA6 INFG SET TERMINAL INTERRUPT FLAG
SA6 UPRF SET USER PROMPT FLAG
REPRIEVE RPB,RESUME,200B RESUME PRIOR EXECUTION
QUU SPACE 4,15
** QUU - QUERY USER.
*
* EXIT (X2) = 1 IF USER ENTERED A VALID JSN.
* (X2) = 0 IF USER ENTERED *END*.
* (X2) = .LT. 0 IF USER ENTERED AN INCORRECT ENTRY OR
* *RELIST*.
* (X1) = USER RESPONSE, LEFT JUSTIFIED, ZERO FILLED.
*
* USES X - 0, 1, 2, 3, 4, 6.
* A - 1, 2, 3, 6.
*
* CALLS ABT, PRJ.
*
* MACROS READC, RECALL, WRITEC, WRITER.
QUU SUBR ENTRY/EXIT
BX6 X6-X6 CLEAR USER PROMPT FLAG
SA6 UPRF
SA1 LRSF
PL X1,QUU1 IF PREVIOUS RESPONSE NOT *RELIST*
BX6 X6-X6 CLEAR FLAG
SA6 A1
EQ QUU2 PRINT RECOVERABLE JOBS
QUU1 SA1 UIFG GET USER INTERACTION FLAG
ZR X1,QUU3 IF INTERACTION HAS BEEN DONE
SA1 JSNX
NZ X1,QUU8 IF JSN ENTERED ON COMMAND
QUU2 RJ PRJ PRINT LIST OF JSN-S
QUU3 WRITEW OUTPUT,QUUA,QUUAL PRINT MENU AND QUERY USER
SA1 TIFG
ZR X1,QUU4 IF FILE NOT ASSIGNED TO TERMINAL
READ INPUT,R
QUU4 READC INPUT,WBUF,WBFL
NZ X1,QUU10 IF EOR, EOF OR EOI
* DETERMINE IF REPLY = *RELIST*.
SA2 MSGB
SA1 WBUF
BX2 X2-X1
ZR X2,QUU5 IF RESPONSE = *RELIST*
SA2 MSGC
BX2 X2-X1
ZR X2,QUU5 IF RESPONSE = *RELIST*
SA2 MSGD
BX2 X2-X1
NZ X2,QUU7 IF .NE. *RELIST*
QUU5 BX6 X6-X6 CLEAR INCORRECT REPLY COUNTER
SA6 INRC
SA1 UPRF
NZ X1,QUU6 IF NOT FIRST TIME THROUGH LOOP
SX6 B1+ SET LOOP FLAG
SA6 UPRF
EQ QUU2 PRINT LIST OF JOBS
QUU6 SX2 -B1 SET LIST EXIT FLAG
BX6 X2 SET LIST RESPONSE FLAG
SA6 LRSF
EQ QUUX RETURN
* DETERMINE IF REPLY = *GO*.
QUU7 SA2 MSGF
SA1 WBUF
BX2 X2-X1
ZR X2,QUUX IF REPLY = *GO*
SA2 MSGG
BX2 X2-X1
ZR X2,QUUX IF REPLY = *GO*
SA2 MSGG2
BX2 X2-X1
ZR X2,QUUX IF REPLY = *GO*
SA2 MSGG3
BX2 X2-X1
ZR X2,QUUX IF REPLY = *GO*
SA2 MSGG4
BX2 X2-X1
ZR X2,QUUX IF REPLY = *GO*
* VALIDATE JSN.
QUU8 MX0 6
LX0 -24 GET FIFTH CHARACTER IN REPLY
BX2 X0*X1
NZ X2,QUU12 IF REPLY .GE. 5 CHARACTERS
LX0 6
BX2 X0*X1
NZ X2,QUU9 IF REPLY = 4 CHARACTERS
LX0 6
BX2 X0*X1
ZR X2,QUU12 IF REPLY .LE. 2 CHARACTERS
SX2 1R_ SPACE-FILL FOURTH CHARACTER
LX2 36 POSITION BLANK
BX1 X1+X2
QUU9 BX6 X6-X6 CLEAR INCORRECT REPLY COUNTER
SA6 INRC
SX2 B1+ FLAG VALID REPLY
EQ QUUX RETURN
* CLEAR TERMINATION STATUS IN FET IF FILE ASSIGNED
* TO A TERMINAL.
QUU10 SA3 TIFG GET TERMINAL FLAG
NZ X3,QUU11 IF FILE ASSIGNED TO TERMINAL
WRITER OUTPUT FLUSH BUFFER
SX3 MSGE * NO JSN-S RECOVERED.*
EQ ABT ABORT
QUU11 RECALL INPUT
SA1 INPUT INPUT FET
MX0 16
LX0 -42
BX6 -X0*X1 CLEAR TERMINATION STATUS
SA6 A1
EQ QUU5 ASSUME *RELIST*
QUU12 WRITEC OUTPUT,MSGH *INCORRECT ENTRY.*
SA1 INRC GET INCORRECT REPLY COUNTER
SX4 X1-MAXI COMPARE VALUES
SX3 MSGJ * INCORRECT REPLY LIMIT REACHED.*
ZR X4,ABT IF MAXIMUM EXCEEDED
SX6 X1+B1 INCREMENT INCORRECT REPLY COUNTER
SA6 INRC
SX2 -B1 FLAG INCORRECT ENTRY
EQ QUUX RETURN
* USER PROMPT PRINT BUFFER.
QUUA DATA C*ENTER GO TO CONTINUE CURRENT JOB,*
DATA C* RELIST TO LIST RECOVERABLE JOBS,*
DATA C* OR DESIRED JSN: "ES"*
QUUAL EQU *-QUUA
SRJ SPACE 4,10
** SRJ - SORT LIST OF RECOVERABLE JOBS.
*
* *SRJ* SORTS THE LIST OF RECOVERABLE JOBS INTO
* BUFFER *JSNB*.
*
* USES X - 0, 1, 2, 3, 5.
* A - 1, 3, 5.
* B - 2, 3, 4, 5, 6.
*
* MACROS MOVE.
SRJ SUBR ENTRY/EXIT
SA5 RJSN NUMBER OF JOBS RECOVERABLE
SX5 X5-1
SX0 QRBL
IX5 X0*X5
MX0 24
SB3 JSNB+X5 LAST JSN ADDRESS
SB4 B1+
SRJ1 ZR B4,SRJX IF SORT COMPLETE
SB4 B0+ SORT FLAG
SB2 JSNB
SB5 B2-QRBL
SRJ2 SB5 B5+QRBL
LE B3,B5,SRJ1 IF END OF BUFFER
SA1 B5 JSN ENTRY ADDRESS
SA3 A1+QRBL NEXT JSN ADDRESS
BX1 X0*X1 EXTRACT JSN
LX1 24 CLEAR SIGN BIT
BX3 X0*X3 EXTRACT JSN
LX3 24 CLEAR SIGN BIT
IX1 X3-X1
PL X1,SRJ2 IF SWITCH UNNECESSARY
SB4 B1
* SAVE ADDRESS LOCATIONS.
SB2 A1 FIRST JSN ADDRESS
SB4 A3+ SECOND JSN ADDRESS
SB6 JSNT TEMPORARY ADDRESS FOR SWITCH
* INTERCHANGE WORD BLOCKS.
SX1 QRBL MOVE FIRST JSN BLOCK TO TEMPORARY
SX2 B2
SX3 B6
MOVE X1,X2,X3
SX1 QRBL MOVE SECOND JSN BLOCK TO PREVIOUS BLOCK
SX2 B4
SX3 B2
MOVE X1,X2,X3
SX1 QRBL MOVE TEMPORARY BLOCK TO NEXT BLOCK
SX2 B6
SX3 B4
MOVE X1,X2,X3
EQ SRJ2 CONTINUE SORT
SVJ SPACE 4,10
** SVJ - SEARCH FOR JSN USER ENTERED.
*
* ENTRY (X1) = JSN LEFT-JUSTIFIED, ZERO-FILLED.
*
* EXIT (X2) = 0 IF JSN NOT FOUND OR JOB CANNOT BE RECOVERED.
*
* USES X - 0, 1, 2, 3, 4, 5, 6.
* A - 2, 3, 6.
*
* MACROS WRITEC.
SVJ4 SX5 MSGI *JSNX NOT FOUND.*
SVJ5 SA2 X5 SET JSN IN MESSAGE
MX0 -36
BX2 -X0*X2
BX6 X1+X2
SA6 A2
WRITEC OUTPUT,X5 ISSUE MESSAGE
BX6 X6-X6 CLEAR *INCORRECT REPLY* COUNTER
SA6 INRC
BX2 X2-X2 FLAG JSN NOT FOUND
SVJ SUBR ENTRY/EXIT
SA2 RJSN NUMBER OF RECOVERABLE JSN-S
SA3 JSNB TABLE ADDRESS OF RECOVERABLE JSN-S
MX0 24
BX4 X1
LX4 24
SVJ1 BX3 X0*X3 EXTRACT JSN FROM BUFFER
LX3 24
IX3 X4-X3
ZR X3,SVJ2 IF JSN FOUND
NG X3,SVJ4 IF JSN NOT IN LIST
SX2 X2-1
ZR X2,SVJ4 IF END OF TABLE
SA3 A3+QRBL
EQ SVJ1 COMPARE NEXT JSN
SVJ2 SA2 A3+3 CHECK JOB ACCESS LEVEL LIMITS
MX6 -3
LX2 -15
BX6 -X6*X2 UPPER ACCESS LEVEL LIMIT FOR SPECIFIED JOB
SA2 JUAL
IX6 X2-X6
PL X6,SVJ3 IF .LE. LIMIT FOR CURRENT JOB
SX5 MSGL *JSNX NOT RECOVERABLE-SECURITY CONFLICT.*
EQ SVJ5 ISSUE ERROR MESSAGE
SVJ3 SX2 B1 FLAG JSN FOUND AND JOB RECOVERABLE
EQ SVJX RETURN
SPACE 4,10
* COMMON DECKS.
*CALL COMCCDD
*CALL COMCCIO
*CALL COMCCPM
*CALL COMCMVE
*CALL COMCRDC
*CALL COMCRDW
*CALL COMCSFN
*CALL COMCSYS
*CALL COMCWTC
*CALL COMCWTW
SPACE 4,10
* BUFFERS.
USE LITERALS
INBUF EQU * INPUT BUFFER
JSNT EQU INBUF+IBFL TEMPORARY FOR SORT SWITCH
LIST EQU JSNT+QRBL LIST OF RECOVERABLE JSN-S
OUTBUF EQU LIST+WRDL OUTPUT BUFFER
WBUF EQU OUTBUF+OBFL WORKING BUFFER
JSNB EQU WBUF+WBFL TABLE OF JSN-S, UJN-S, AND STATUSES
RFL= EQU JSNB+JSNBL+200B SET *RECOVER* FL
ERRNG AFFL*100B-RFL= FL EXCEEDS MAXIMUM LOGIN FL
TITLE PRESET.
** PRS - PRESET.
PRS SUBR ENTRY/EXIT
SB1 1
* DETERMINE JOB ORIGIN.
SX3 PRSA * USER ACCESS NOT VALID.*
SA1 JOPR GET JOB ORIGIN TYPE
LX1 -24
MX0 -12
BX1 -X0*X1
SX1 X1-TXOT
NZ X1,ABT IF NOT *TXOT*
SX6 B1+ SET INTERACTIVE FLAG
SA6 IFLG
* GET UPPER ACCESS LEVEL LIMIT FOR CURRENT JOB.
GETJAL JUAL GET JOB ACCESS LEVEL LIMITS
SA1 JUAL ISOLATE UPPER ACESS LEVEL LIMIT
MX6 -3
LX1 -6
BX6 -X6*X1
SA6 A1
* PROCESS ARGUMENT LIST.
SA1 ACTR
MX0 -18
BX1 -X0*X1 ARGUMENT COUNT
ZR X1,PRS5 IF NO ARGUMENTS
SB4 X1 SET NUMBER OF ARGUMENTS
SA1 ARGR DETERMINE COMMAND FORMAT
MX0 -6
BX1 -X0*X1
SX2 X1-1R=
ZR X2,PRS1 IF ORDER INDEPENDENT
NZ X1,PRS2 IF ARGUMENT ERROR
SX1 1 SET ERROR FLAG
SB4 B4-MARG-1
PL B4,PRS2 IF ARGUMENT ERROR
SA1 ARGR STORE JSN
BX6 X1
SA6 JSNX
SA1 ARGR+1
EQ PRS3 CHECK FOR VALID OPTIONS
PRS1 R= A4,ARGR
SB5 TARG ADDRESS OF ARGUMENT TABLE
RJ ARG PROCESS ARGUMENTS
PRS2 SX3 PRSB * ARGUMENT ERROR.*
NZ X1,ABT IF ARGUMENT ERROR
* CHECK IF *OP* OPTION VALID.
SA1 T GET *OP* OPTIONS
PRS3 MX0 -6
PRS4 LX1 6
BX2 -X0*X1 GET NEXT OPTION
ZR X2,PRS5 IF NO MORE OPTIONS
* SEARCH FOR *OP* OPTION SPECIFIED IN TABLE OF LEGAL OPTIONS.
SX4 TOPOL NUMBER OF VALID OPTIONS
RJ SVO SEARCH FOR MATCH
SX3 PRSC * OP OPTION NOT VALID.*
ZR X4,ABT IF NO MATCH
* DETERMINE IF *T* WAS THE OPTION SPECIFIED.
SX4 1RT
BX4 X4-X2
NZ X4,PRS4 IF NOT *OP=T*
SX6 1 SET LOGIN FLAG
SA6 LFLG
EQ PRS4 PROCESS NEXT OPTION
* DETERMINE CM AVAILABLE.
PRS5 MEMORY CM,STATM,R DETERMINE MAXIMUM CM AVAILABLE
SA2 STATM
BX6 X2
AX6 30
SA6 MAXC
SX7 B0+ DETERMINE CURRENT CM AVAILABLE
SA7 STATM
MEMORY CM,A7,R
SA1 STATM
AX1 30
BX6 X1
SA6 MEMC
* DETERMINE AND SET TERMINAL CHARACTERISTICS.
TSTATUS TTST GET TERMINAL STATUS
SA1 B1+TTST GET CURRENT CHARACTER SET
MX0 1
LX0 3
BX1 X0*X1
ZR X1,PRS6 IF NOT 64 CHARACTER SET
BX6 X1 SET ASCII FLAG
SA6 ASFG
CSET NORMAL SET TERMINAL CHARACTER MODE
PRS6 PROMPT OFF SUPPRESS *IAF* PROMPTS
SA1 LFTB SET LIST OF FILES
BX6 X1
BX7 X7-X7
SA6 B1+B1 STORE TERMINAL FILES
SA7 A6+B1
SX2 INPUT
RJ STF DETERMINE IF FILE TYPE *TT*
NZ X6,PRS7 IF FILE TYPE NOT *TT*
SX6 B1+ STORE TERMINAL FLAG
SA6 TIFG
PRS7 SX2 OUTPUT
RJ STF DETERMINE IF FILE TYPE *TT*
NZ X6,PRSX IF FILE TYPE NOT *TT*
SX6 B1+ STORE TERMINAL FLAG
SA6 TOFG
EQ PRSX RETURN
PRSA DATA C* USER ACCESS NOT VALID.*
PRSB DATA C* ARGUMENT ERROR.*
PRSC DATA C* OP OPTION NOT VALID.*
TARG SPACE 4,10
* TARG - ARGUMENT TABLE.
TARG BSS 0
JSN ARG JSNX,JSNX JOB SEQUENCE NUMBER
OP ARG T,T LOGIN
ARG
T DATA 0 *OP* OPTION
* TOPO -TABLE OF VALID *OP* OPTIONS.
TOPO BSS 0
DATA 1RT LOGIN
TOPOL EQU *-TOPO
SVO SPACE 4,10
** SVO - SEARCH FOR VALID *OP* OPTIONS.
*
* ENTRY (X4) = NUMBER OF OPTIONS IN TABLE.
* (X2) = VALUE SEARCHING FOR IN TABLE.
*
* EXIT (X4) = 0 IF *OP* NOT VALID.
* (X2) = VALUE SEARCHED FOR IN TABLE.
*
* USES X - 2, 3, 4, 6.
* A - 3, 6.
SVO2 BX6 X6-X6 CLEAR AS VALID ENTRY
SA6 A3
SVO SUBR ENTRY/EXIT
SA3 TOPO TABLE OF LEGAL OPTIONS
SVO1 BX3 X3-X2
ZR X3,SVO2 IF MATCH FOUND
SX4 X4-1
ZR X4,SVOX IF OPTION NOT RECOGNIZED
SA3 A3+1
EQ SVO1 COMPARE WITH NEXT VALUE
SPACE 4,10
* COMMON DECKS.
*CALL COMCARG
*CALL COMCSTF
SPACE 4,10
END