cdc:nos2.source:opl871:recover
Table of Contents
RECOVER
Table Of Contents
- [00009] RECOVER - RECOVER DETACHED JOB.
- [00106] DEFINITIONS.
- [00201] MAIN ROUTINE.
- [00231] SUBROUTINES.
- [00232] ABT - ABORT ON ERROR.
- [00250] DRJ - DETERMINE RECOVERABLE JOBS.
- [00305] DTT - DETERMINE TIME UNTIL TIMEOUT.
- [00348] GLJ - GET LIST OF JSN-S.
- [00407] IBS - INCREASE BUFFER SIZE.
- [00449] PRJ - PRINT LIST OF RECOVERABLE JSN-S.
- [00586] PTI - PROCESS TERMINAL INTERRUPT.
- [00633] QUU - QUERY USER.
- [00770] SRJ - SORT LIST OF RECOVERABLE JOBS.
- [00828] SVJ - SEARCH FOR JSN USER ENTERED.
- [00904] PRESET.
- [00905] PRS - PRESET.
- [01049] SVO - SEARCH FOR VALID *OP* OPTIONS.
Source Code
- RECOVER.txt
- 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
cdc/nos2.source/opl871/recover.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator