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
  1. IDENT RECOVER,FWA,RECOVER
  2. ABS
  3. SST
  4. ENTRY RECOVER
  5. ENTRY RFL=
  6. ENTRY SSJ=
  7. ENTRY VAL=
  8. SYSCOM B1
  9. TITLE RECOVER - RECOVER DETACHED JOB.
  10. *COMMENT RECOVER - RECOVER DETACHED JOB.
  11. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  12. SPACE 4,10
  13. ***** RECOVER - RECOVER DETACHED JOB.
  14. *
  15. * R. M. DESSEL 81/10/16.
  16. SPACE 4,10
  17. *** *RECOVER* PERMITS THE RECOVERY OF A DETACHED JOB AT
  18. * LOGIN TIME OR ANY TIME DURING A TERMINAL SESSION.
  19. * *RECOVER* COMMUNICATES WITH A *TXOT* USER TO
  20. * DETERMINE WHICH JOB, IF ANY, SHOULD BE RECOVERED.
  21. * IT WILL ACCEPT PARAMETERS FROM THE COMMAND,
  22. * INPUT FROM THE FILE *INPUT*, AND SEND OUTPUT TO THE
  23. * USER VIA FILE *OUTPUT*.
  24. SPACE 4,10
  25. *** COMMAND FORMAT.
  26. *
  27. * RECOVER(JSN,T)
  28. *
  29. * RECOVER(JSN=JSN,OP=T)
  30. *
  31. * *RECOVER* COMMAND PARAMETERS ARE DEFINED AS THE FOLLOWING.
  32. *
  33. * JSN JOB SEQUENCE NUMBER OF THE *TXOT* JOB THE USER
  34. * WISHES TO RECOVER.
  35. *
  36. * T FLAG TO TELL *RECOVER* TO CONDUCT TERMINAL I/O
  37. * ONLY IF THE USER HAS RECOVERABLE JOB(S) IN THE
  38. * SYSTEM. THIS WILL NORMALLY BE USED BY THE SYSTEM
  39. * AT LOGIN TIME.
  40. SPACE 4,10
  41. *** DAYFILE MESSAGES.
  42. *
  43. * * USER ACCESS NOT VALID.*
  44. * CALLING JOB IS NOT AN INTERACTIVE JOB.
  45. *
  46. * * ARGUMENT ERROR.*
  47. * ARGUMENT ERROR WAS DETECTED ON COMMAND.
  48. *
  49. * * OP OPTION NOT VALID.*
  50. * THE *OP* OPTION SPECIFIED ON THE COMMAND
  51. * IS NOT A LEGAL OPTION.
  52. *
  53. * * NO JSN-S RECOVERED.*
  54. * *RECOVER* RECEIVED AN EOR, EOF OR EOI STATUS WHILE
  55. * ATTEMPTING TO READ THE INPUT DIRECTIVES FILE, AND
  56. * HAS TERMINATED.
  57. *
  58. * * INCORRECT REPLY LIMIT REACHED.*
  59. * THE NUMBER OF CONSECUTIVE INCORRECT REPLIES THE
  60. * USER ENTERED EXCEEDED THE LIMIT. BE SURE ANY
  61. * INPUT DIRECTIVES FILE IS IN 64 CHARACTER SET.
  62. SPACE 4,10
  63. *** OUTPUT MESSAGES.
  64. *
  65. * *NO RECOVERABLE JOBS.*
  66. * THERE ARE NO JOB CANDIDATES FOR RECOVERY.
  67. * MESSAGE WILL NOT APPEAR AT LOGIN TIME IF
  68. * USER HAS NOT INTERACTED WITH *RECOVER*.
  69. *
  70. * * ENTER *GO* TO CONTINUE CURRENT JOB,
  71. * *RELIST* TO LIST RECOVERABLE JOBS,
  72. * OR DESIRED JSN:*
  73. * *RECOVER* PROMPTS THE USER WHENEVER INPUT IS
  74. * REQUIRED.
  75. *
  76. * *JSNX NOT FOUND.*
  77. * USER ENTERED A JSN, BUT IS IS NOT RECOVERABLE.
  78. *
  79. * *JSNX NOT RECOVERABLE - SECURITY CONFLICT.*
  80. * THE SPECIFIED JOB HAD A HIGHER UPPER ACCESS LEVEL
  81. * LIMIT THAN THE CURRENT JOB, AND THUS COULD NOT BE
  82. * RECOVERED BY THE CURRENT JOB.
  83. *
  84. * *INCORRECT ENTRY.*
  85. * USER ENTERED SOMETHING OTHER THAN A VALID RESPONSE.
  86. *
  87. * *MAXIMUM FL ENCOUNTERED - JOB LIST INCOMPLETE.*
  88. * NUMBER OF JOBS RETURNED BY *QAC* EXCEEDED THE
  89. * LARGEST POSSIBLE JSN BUFFER.
  90. SPACE 4,10
  91. *** TERMINAL INTERRUPT PROCESSING (*REPRIEVE* PROCESSING).
  92. *
  93. * IF THE DIRECTIVE INPUT FILE, *INPUT*, IS ASSIGNED
  94. * TO A TIME-SHARING TERMINAL, *REPRIEVE* PROCESSING
  95. * IS ENABLED. IN ALL OTHER CASES, TERMINAL INTERRUPTS
  96. * WILL INTERRUPT OR TERMINATE *RECOVER*.
  97. SPACE 4,10
  98. * COMMON DECKS.
  99.  
  100. *CALL COMCMAC
  101. *CALL COMCCMD
  102. *CALL COMSEJT
  103. *CALL COMSQAC
  104. *CALL COMSSSJ
  105. *CALL COMSTCM
  106. TITLE DEFINITIONS.
  107. * ASSEMBLY CONSTANTS.
  108.  
  109. IBFL EQU 101B INPUT BUFFER LENGTH
  110. MARG EQU 2 MAXIMUM NUMBER OF ARGUMENTS
  111. MAXI EQU 10 MAXIMUM CONSECUTIVE INCORRECT REPLYS
  112. MEMI EQU 1000B MEMORY INCREMENT
  113. OBFL EQU 301B OUTPUT BUFFER LENGTH
  114. QRBL EQU 4 *QAC* REPLY BLOCK LENGTH
  115. JSNBL EQU QRBL*100B LENGTH OF *QAC* REPLY BLOCK BUFFER
  116. WBFL EQU 16 WORKING BUFFER LENGTH
  117. WRDL EQU 5 WORDS PER LINE IN RECOVERABLE JSN LIST
  118. SPACE 4,10
  119. * FETS.
  120.  
  121. ORG 110B
  122. FWA BSS 0 SET ORIGIN ADDRESS
  123.  
  124. INPUT FILEC INBUF,IBFL,(FET=6) INPUT FET
  125.  
  126. OUTPUT FILEC OUTBUF,OBFL OUTPUT FET
  127. QRPB SPACE 4,10
  128. ** *QAC* PARAMETER BLOCK.
  129.  
  130. QRPB VFD 50/0,9/PKFC,1/0 REQUEST PREFIX PORTION
  131. VFD 36/0,6/11,18/JSNB
  132. VFD 42/0,18/JSNB
  133. VFD 42/0,18/JSNB
  134. VFD 42/0,18/JSNB+JSNBL
  135. BQSP VFD 60/0 SELECTION CRITERIA PORTION
  136. VFD 60/0
  137. VFD 36/0,12/RJSF,12/0 ROLLOUT SELECTION FLAG
  138. VFD 12/2B,48/0
  139. VFD 60/0
  140. VFD 60/0
  141. VFD 60/0
  142. BQPP VFD 12/0,12/7777B,36/0 PEEK FUNCTION PORTION
  143. VFD 60/0
  144. VFD 24/0,12/ALPB,12/ESPB,12/UJPB+JSPB
  145. VFD 60/0
  146. RPB SPACE 4,10
  147. ** *REPRIEVE* PARAMETER BLOCK.
  148.  
  149. RPB BSS 0
  150. VFD 36/0,12/RPBL,12/0
  151. VFD 30/0,30/PTI
  152. BSSZ 7
  153. RPBA BSSZ 16 EXCHANGE PACKAGE
  154. RPBL EQU *-RPB
  155. SPACE 4,10
  156. * SPECIAL ENTRY POINTS.
  157.  
  158. SSJ= EQU SSJP SPECIAL SYSTEM JOB
  159. VAL= BSS 0 VALIDATION ENTRY POINT
  160. SPACE 4,10
  161. * WORKING STORAGE.
  162.  
  163. ASFG CON 0 *ASCII* CHARACTER SET FLAG
  164. IFLG CON 0 INTERACTIVE FLAG
  165. INFG CON 0 TERMINAL INTERRUPT FLAG
  166. INRC CON 0 INCORRECT REPLY COUNTER
  167. JSNX CON 0 JSN ENTERED ON COMMAND
  168. JUAL CON 0 JOB UPPER ACCESS LEVEL LIMIT
  169. LFLG CON 0 LOGIN FLAG
  170. LFTB VFD 42/0LOUTPUT,18/OUTPUT TERMINAL FILES
  171. LRSF CON 0 LIST RESPONSE FLAG
  172. MAXC CON 0 MAXIMUM AMOUNT OF CM AVAILABLE
  173. MEMC CON 0 CURRENT AMOUNT OF CM AVAILABLE
  174. QJSN CON 0 NUMBER OF JOBS RETURNED BY *QAC*
  175. RJSN CON 0 NUMBER OF RECOVERABLE JSN-S
  176. STATM VFD 30/-1,30/0 STATUS OF MEMORY WORD
  177. TIFG CON 0 *TT* FILE TYPE FLAG - INPUT
  178. TOFG CON 0 *TT* FILE TYPE FLAG - OUTPUT
  179. TTST CON 0 *TSTATUS* PARAMETER BLOCK
  180. CON 0
  181. UIFG CON 1 USER INTERACTION FLAG
  182. UPRF CON 0 USER PROMPT FLAG
  183. SPACE 4,10
  184. * DAYFILE AND INTERACTION MESSAGES AND POSSIBLE REPLYS.
  185.  
  186. MSGA DATA C*NO RECOVERABLE JOBS.*
  187. MSGB DATA 6LRELIST
  188. MSGC DATA 1LR
  189. MSGD DATA 2LR
  190. MSGE DATA C* NO JSN-S RECOVERED.*
  191. MSGF DATA 2LGO
  192. MSGG DATA 1LG
  193. MSGG2 DATA 2LG
  194. MSGG3 DATA 3LGO.
  195. MSGG4 DATA 4LG0.
  196. MSGH DATA C*INCORRECT ENTRY.*
  197. MSGI DATA C* NOT FOUND.*
  198. MSGJ DATA C* INCORRECT REPLY LIMIT REACHED.*
  199. MSGK DATA C*MAXIMUM FL ENCOUNTERED - JOB LIST INCOMPLETE.*
  200. MSGL DATA C* NOT RECOVERABLE - SECURITY CONFLICT.*
  201. TITLE MAIN ROUTINE.
  202. * MAIN ROUTINE.
  203.  
  204. RECOVER BSS 0 ENTRY
  205. RJ PRS PRESET
  206. REC1 RJ GLJ GET LIST OF JSN-S
  207. RJ DRJ DETERMINE RECOVERABLE JOBS
  208. SA1 RJSN NUMBER OF RECOVERABLE JOBS
  209. ZR X1,REC3 IF NO JOBS TO RECOVER
  210. SX1 X1-1
  211. ZR X1,REC2 IF NUMBER OF RECOVERABLE JOBS = ONE
  212. RJ SRJ SORT LIST OF RECOVERABLE JOBS
  213. REPRIEVE RPB,SET,200B SET *REPRIEVE* PROCESSING
  214. REC2 RJ QUU QUERY USER
  215. ZR X2,REC3 IF USER ENTERED *END*
  216. BX6 X6-X6 FLAG USER INTERACTION
  217. SA6 UIFG
  218. NG X2,REC1 IF INCORRECT ENTRY OR USER ENTERED *LIS*
  219. RJ SVJ SEARCH FOR VALID JSN
  220. ZR X2,REC1 IF JSN NOT FOUND
  221. LX1 24
  222. SYSTEM TLX,R,X1,11B*100B RECOVER JOB
  223. EQ REC4 TERMINATE
  224.  
  225. REC3 WRITER OUTPUT FLUSH BUFFER
  226. MESSAGE =0,1,R CLEAR COMMAND FROM *MS1W*
  227. SA1 ASFG CHARACTER SET FLAG
  228. ZR X1,REC4 IF PREVIOUS CHARACTER SET = 64
  229. CSET ASCII RESET PREVIOUS CHARACTER SET
  230. REC4 ENDRUN
  231. TITLE SUBROUTINES.
  232. ** ABT - ABORT ON ERROR.
  233. *
  234. * ENTRY (X3) = ADDRESS OF DAYFILE MESSAGE.
  235. *
  236. * USES X - 1.
  237. * A - 1.
  238. *
  239. * MACROS ABORT, CSET, MESSAGE, PROMPT.
  240.  
  241.  
  242. ABT MESSAGE X3 ISSUE DAYFILE MESSAGE
  243. SA1 IFLG INTERACTIVE FLAG
  244. ZR X1,ABT1 IF CALLING JOB NOT INTERACTIVE
  245. SA1 ASFG *ASCII* CHARACTER SET FLAG
  246. ZR X1,ABT1 IF CHARACTER SET *NORMAL*
  247. CSET ASCII SET *ASCII* 128 CHARACTER SET MODE
  248. ABT1 ABORT
  249. DRJ SPACE 4,15
  250. ** DRJ - DETERMINE RECOVERABLE JOBS.
  251. *
  252. * *DRJ* SEARCHES THE BUFFER *JSNB* TO ENSURE THE JOBS
  253. * RETURNED BY *QAC* ARE RECOVERABLE.
  254. *
  255. * ENTRY (QJSN) = NUMBER OF JOBS RETURNED BY *QAC*
  256. *
  257. * EXIT (RJSN) = NUMBER OF RECOVERABLE JOBS.
  258. *
  259. * USES X - 0, 1, 2, 3, 6.
  260. * A - 1, 6.
  261. * B - 2, 3, 4, 5, 6.
  262. *
  263. * MACROS MOVE, WRITEC.
  264.  
  265.  
  266. DRJ3 SX6 B5+ STORE NUMBER OF RECOVERABLE JOBS
  267. SA6 RJSN
  268. NZ X6,DRJX IF RECOVERABLE JOBS
  269. SA1 UIFG CHECK USER INTERACTION FLAG
  270. ZR X1,DRJ4 IF USER HAS INTERACTED
  271. SA1 LFLG CHECK *OP=T* OPTION FLAG
  272. NZ X1,DRJX IF MESSAGE TO BE SUPPRESSED
  273. DRJ4 WRITEC OUTPUT,MSGA *NO RECOVERABLE JOBS.*
  274.  
  275. DRJ SUBR ENTRY/EXIT
  276. BX6 X6-X6 CLEAR NUMBER OF RECOVERABLE JOBS
  277. SA6 RJSN
  278. SA1 QJSN SET NUMBER OF JOBS TO CHECK
  279. SB6 X1+
  280. SB5 B0+ INITIALIZE NUMBER OF RECOVERABLE JOBS
  281. SB2 JSNB SET *QAC* POSITION POINTER
  282. SB3 JSNB SET RECOVERABLE JSN POSITION POINTER
  283. SB4 QRBL NUMBER OF WORDS TO TRANSFER
  284. DRJ1 ZR B6,DRJ3 IF NO MORE JOBS TO CHECK
  285. SB6 B6-1 NUMBER OF JOBS REMAINING TO CHECK
  286. SA1 B2+2 STATUS ADDRESS IN BUFFER
  287. MX0 12
  288. BX1 X0*X1 GET STATUS
  289. LX1 12
  290. MX0 4
  291. LX0 11
  292. BX1 X0*X1
  293. LX1 -7 CONNECTION STATUS
  294. SX2 X1-DTCS
  295. NZ X2,DRJ2 IF NOT DETACHED
  296. SX1 B4 NUMBER OF WORDS TO TRANSFER
  297. SX2 B2 SOURCE ADDRESS
  298. SX3 B3+ DESTINATION ADDRESS
  299. MOVE X1,X2,X3 MOVE JSN WORD BLOCK
  300. SB3 B3+QRBL INCREMENT RECOVERABLE JSN POINTER
  301. SB5 B5+1 INCREMENT RECOVERABLE JSN-S
  302. DRJ2 SB2 B2+QRBL INCREMENT *QAC* POSITION POINTER
  303. EQ DRJ1 CHECK NEXT WORD BLOCK
  304. DTT SPACE 4,15
  305. ** DTT - DETERMINE TIME UNTIL TIMEOUT.
  306. *
  307. * ENTRY (*PRJD*) = SCHEDULING FIELD ADDRESS IN *JSNB* BUFFER.
  308. *
  309. * EXIT (X6) = MINUTES REMAINING UNTIL TIMEOUT.
  310. *
  311. * USES X - 0, 1, 2, 4, 6.
  312. * A - 1, 4.
  313. *
  314. * CALLS CDD.
  315. *
  316. * MACROS RTIME.
  317.  
  318.  
  319. DTT SUBR ENTRY/EXIT
  320. RTIME DTTA GET REAL TIME
  321. SA1 PRJD GET SCHEDULING FIELD
  322. SA1 X1
  323. AX1 12
  324. MX0 -24
  325. BX1 -X0*X1
  326. SA4 DTTA GET SECONDS
  327. MX0 24
  328. BX4 X0*X4
  329. LX4 24
  330. IX1 X1-X4 SECONDS REMAINING UNTIL TIMEOUT
  331. SX1 X1+30
  332. SX2 60
  333. IX1 X1/X2 CONVERT SECONDS TO MINUTES
  334. RJ CDD CONVERT TO DECIMAL DISPLAY CODE
  335.  
  336. * FORMAT MINUTES REMAINING UNTIL TIMEOUT.
  337.  
  338. LX6 30
  339. MX0 30
  340. BX6 X0*X6
  341. SA1 DTTB APPEND *MIN.*
  342. BX6 X6+X1
  343. EQ DTTX RETURN
  344.  
  345. DTTA DATA 0 REAL TIME
  346. DTTB DATA 5R MIN.
  347. GLJ SPACE 4,15
  348. ** GLJ - GET LIST OF JSN-S.
  349. *
  350. * *GLJ* ISSUES A *QAC* PEEK REQUEST TO RETURN RECOVERABLE JOBS
  351. * FROM THE EXECUTING JOB TABLE TO BUFFER *JSNB*.
  352. *
  353. * EXIT (QJSN) = NUMBER OF JSN-S RETURNED BY *QAC*.
  354. *
  355. * USES X - 0, 1, 2, 6.
  356. * A - 1, 2, 6.
  357. *
  358. * CALLS IBS.
  359. *
  360. * MACROS SYSTEM, WRITEC.
  361.  
  362.  
  363. GLJ2 SA6 QJSN NO RECOVERABLE JOBS FOUND
  364.  
  365. GLJ SUBR ENTRY/EXIT
  366. GLJ1 SYSTEM QAC,R,QRPB ISSUE PEEK REQUEST
  367.  
  368. * RESET *QAC* REQUEST BUFFER.
  369.  
  370. SA1 QRPB CLEAR COMPLETE BIT
  371. MX0 -1
  372. BX6 X0*X1
  373. SA6 A1
  374. AX1 10 CHECK ERROR FIELD
  375. SX6 X1-ER07
  376. ZR X6,GLJ2 IF NO RECOVERABLE JOBS FOUND
  377. SA2 QRPB+B1 RESET BUFFER POINTER
  378. SX6 X2
  379. SA6 A2+B1 SET IN = FIRST
  380. SA6 A6+B1 SET OUT = FIRST
  381. MX0 -12
  382. SA1 BQPP DETERMINE NUMBER OF JSN-S RETURNED
  383. LX1 24
  384. BX6 -X0*X1
  385. SA6 QJSN
  386. LX1 36 RESET NUMBER OF JSN-S TO RETURN
  387. LX0 36
  388. BX1 X0*X1
  389. SA2 GLJA
  390. BX6 X1+X2
  391. SA6 A1
  392.  
  393. * DETERMINE IF *QAC* SCAN COMPLETE.
  394.  
  395. SA1 QRPB+4
  396. MX0 36
  397. BX2 X0*X1
  398. ZR X2,GLJX IF SCAN COMPLETE
  399. RJ IBS INCREASE BUFFER SIZE
  400. ZR X1,GLJ1 IF REQUEST COMPLETE
  401. WRITEC OUTPUT,MSGK *MAX FL ENCOUNTERED - JOB LIST INCOMPLETE.*
  402. EQ GLJX RETURN
  403.  
  404.  
  405. GLJA VFD 12/0,12/7777B,36/0
  406. IBS SPACE 4,15
  407. ** IBS - INCREASE BUFFER SIZE.
  408. *
  409. * ENTRY (MEMC) = CURRENT MEMORY.
  410. * (MAXC) = MAXIMUM MEMORY AVAILABLE.
  411. *
  412. * EXIT (MEMC) = CURRENT MEMORY.
  413. * (X1) = 0, MEMORY REQUEST COMPLETE.
  414. * 1, NOT ENOUGH FL AVAILABLE.
  415. *
  416. * USES X - 0, 1, 2, 3, 6.
  417. * A - 1, 2, 3, 6.
  418. *
  419. * MACROS MEMORY.
  420.  
  421.  
  422. IBS1 SX1 1 SET ERROR RETURN
  423.  
  424. IBS SUBR ENTRY/EXIT
  425. SA1 MEMC GET CURRENT MEMORY
  426. SX3 MEMI
  427. IX2 X1+X3
  428. SA3 MAXC
  429. IX6 X3-X2
  430. NG X6,IBS1 IF REQUEST WOULD EXCEED VALIDATION LIMITS
  431. BX6 X2
  432. SA6 A1 UPDATE *MEMC*
  433. LX6 30
  434. SA6 STATM
  435. MEMORY CM,STATM,R,,NA REQUEST ADDITIONAL MEMORY
  436. SA1 STATM
  437. SA2 MEMC
  438. AX1 30
  439. BX2 X1-X2
  440. NZ X2,IBS1 IF REQUEST NOT HONORED
  441. SA1 QRPB+4 UPDATE LWA+1 OF *JSNB*
  442. SX6 X1+MEMI
  443. MX0 -18
  444. BX6 -X0*X6
  445. SA6 QRPB+4
  446. BX1 X1-X1 CLEAR ERROR RETURN
  447. EQ IBSX RETURN
  448. PRJ SPACE 4,15
  449. ** PRJ - PRINT LIST OF RECOVERABLE JSN-S.
  450. *
  451. * *PRJ* PRINTS THE LIST OF RECOVERABLE JSN-S, UJN-S,
  452. * AND STATUSES LOCATED IN BUFFER *JSNB*. MINUTES
  453. * REMAINING UNTIL TIMEOUT ARE ALSO PRINTED FOR SUSPENDED
  454. * JOBS.
  455. *
  456. * USES X - 0, 1, 2, 3, 4, 6, 7.
  457. * A - 1, 2, 3, 4, 6, 7.
  458. * B - 2.
  459. *
  460. * CALLS DTT, SFN.
  461. *
  462. * MACROS WRITEC.
  463.  
  464. PRJ SUBR ENTRY/EXIT
  465. BX6 X6-X6 CLEAR TERMINAL INTERRUPT FLAG
  466. SA6 INFG
  467. WRITEW OUTPUT,PRJA,PRJAL WRITE TABLE HEADER
  468. SA1 RJSN SAVE NUMBER OF RECOVERED JSN-S
  469. BX6 X1
  470. SA6 PRJE
  471. SA2 LIST PRINT TABLE ADDRESS
  472. SB2 WRDL-2
  473. SA2 A2+B2 LAST WORD ADDRESS IN PRINT TABLE
  474. BX6 X6-X6
  475. SA6 A2 ZERO LAST WORD IN PRINT TABLE
  476. SA6 A2+B1 SET END OF LINE CHARACTER
  477.  
  478. * DETERMINE AND STORE JSN.
  479.  
  480. SA1 JSNB RECOVERABLE JSN TABLE ADDRESS
  481. PRJ1 SA2 LIST PRINT BUFFER ADDRESS
  482. MX0 24 GET JSN
  483. BX1 X0*X1
  484. RJ SFN SPACE-FILL JSN
  485. LX6 -18
  486. SA6 A2 STORE JSN IN PRINT BUFFER
  487.  
  488. * DETERMINE AND STORE UJN.
  489.  
  490. SA1 A1+B1 GET UJN
  491. MX0 42
  492. BX1 X0*X1
  493. RJ SFN SPACE FILL UJN
  494. SA2 A2+B1 STORE UJN IN PRINT BUFFER
  495. SA6 A2
  496.  
  497. * DETERMINE AND STORE JOB STATUS.
  498.  
  499. SA1 A1+B1 GET STATUS FIELD
  500. MX0 5
  501. LX0 -6
  502. BX1 X0*X1
  503. LX1 -49
  504. SA2 A2+B1
  505. SA3 X1+PRJB LOCATION OF MESSAGE
  506. BX6 X3
  507. SA6 A2
  508.  
  509. * DETERMINE IF JOB SUSPENDED AND OBTAIN MINUTES UNTIL TIMEOUT.
  510.  
  511. SA2 A2+B1
  512. SX6 A2
  513. SA6 PRJC SAVE PRINT BUFFER ADDRESS
  514. SX6 A1+
  515. SA6 PRJD SAVE RECOVERABLE JSN BUFFER ADDRESS
  516. SX1 X1-SUJS
  517. NZ X1,PRJ2 IF NOT SUSPENDED
  518. RJ DTT DETERMINE TIME UNTIL TIMEOUT
  519. SA1 PRJC STORE TIME IN PRINT BUFFER
  520. SA6 X1
  521. SA3 INFG
  522. NZ X3,PRJX IF INTERRUPT OCCURRED
  523.  
  524. * PRINT LIST OF RECOVERABLE JSN-S.
  525.  
  526. PRJ2 WRITEC OUTPUT,LIST LIST OF RECOVERABLE JOBS
  527. SA2 PRJC
  528. SA2 X2+ RESTORE PRINT BUFFER ADDRESS
  529. SA1 PRJD
  530. SA1 X1+1 ADVANCE TO NEXT JSN IN BUFFER
  531. SA4 PRJE DECREMENT NUMBER OF JSN-S TO PRINT
  532. SX6 X4-1
  533. SA6 PRJE
  534. NZ X6,PRJ3 IF MORE TO PRINT
  535. WRITEC OUTPUT,PRJA BLANK LINE
  536. EQ PRJX RETURN
  537.  
  538. PRJ3 BX6 X6-X6
  539. SA6 A2+ ZERO MINUTES FIELD
  540. SA1 A1+B1 INCREMENT JSN BUFFER ADDRESS
  541. EQ PRJ1 RETURN
  542.  
  543.  
  544. * RECOVERABLE JSN PRINT BUFFER.
  545.  
  546. PRJA DATA C* *
  547. DATA C* RECOVERABLE JOB(S)*
  548. DATA C* *
  549. DATA C* JSN UJN STATUS TIMEOUT*
  550. DATA C* *
  551. PRJAL EQU *-PRJA
  552. PRJB BSS 0 STATUSES FOR RECOVERY
  553. DATA 10HINITIAL
  554. DATA 10HEXECUTING
  555. DATA 10HSCH ROLLED
  556. DATA 10HSCP ROLLIN
  557. DATA 10HSCP ROLLED
  558. DATA 10HT/E ROLLED
  559. DATA 10HI/O ROLLED
  560. DATA 10HIDLE
  561. DATA 10HSUSPENDED
  562. DATA 10HPCP ROLLED
  563. ERRNZ *-PRJB-1-RCJS TABLE LENGTH ERROR
  564. PRJC DATA 0 PRINT BUFFER POSITION POINTER
  565. PRJD DATA 0 RECOVERABLE JSN BUFFER POSITION POINTER
  566. PRJE DATA 0 NUMBER OF JSN-S REMAINING TO PRINT
  567. SPACE 4,10
  568. * THE FOLLOWING TESTS ENSURE PROPER INTERFACE BETWEEN
  569. * THE RECOVERABLE JOB STATUSES PRINTED BY *RECOVER* AND
  570. * THE SYMBOLS DEFINED IN *COMSEJT*. IF AN ERROR OCCURRS,
  571. * THE PROPER STATUS SHOULD BE CHANGED IN THE TABLE OF
  572. * JOB STATUSES.
  573.  
  574.  
  575. ERRNZ PRJS-0 PRE-INITIAL JOB STEP
  576. ERRNZ EXJS-1 EXECUTING
  577. ERRNZ ROJS-2 SCHEDULER ROLLOUT
  578. ERRNZ SIJS-3 SCP ROLLIN
  579. ERRNZ SOJS-4 SCP ROLLOUT
  580. ERRNZ TOJS-5 TIMED/EVENT ROLLOUT
  581. ERRNZ IOJS-6 INTERACTIVE ROLLOUT
  582. ERRNZ DOJS-7 DISABLED ROLLOUT
  583. ERRNZ SUJS-10B SUSPENDED ROLLOUT
  584. ERRNZ PCJS-11B PSEUDO-ROLLOUT
  585. PTI SPACE 4,15
  586. ** PTI - PROCESS TERMINAL INTERRUPT.
  587. *
  588. * *PTI* PROCESSES TERMINAL INTERRUPTS. IF A USER
  589. * BREAK 1 OR USER BREAK 2 IS DETECTED WHILE THE LIST
  590. * OF RECOVERABLE JOBS IS BEING PRINTED, THE LIST WILL
  591. * BE TERMINATED.
  592. *
  593. * USES X - 0, 1, 2, 6, 7.
  594. * A - 1, 6, 7.
  595. *
  596. * MACROS REPRIEVE.
  597.  
  598.  
  599. PTI BSS 0 ENTRY
  600. BX6 X6-X6
  601. SA6 RPB+5 CLEAR PENDING SYSTEM REQUEST
  602. SA6 RPB+6 RESET TERMINAL INTERRUPT
  603. SA1 RPBA RESET *P* ADDRESS
  604. MX0 18
  605. LX0 -6
  606. BX2 -X0*X1
  607. SX1 QUU3
  608. LX1 36
  609. BX6 X1+X2
  610. SA6 RPBA SET *RESUME* ADDRESS
  611. SA1 INPUT SET COMPLETE BIT IN INPUT FET
  612. SX2 B1
  613. BX7 X1+X2
  614. SA7 A1+
  615. SA1 OUTPUT SET COMPLETE BIT IN OUTPUT FET
  616. BX7 X1+X2
  617. SA7 A1
  618. SA1 INPUT+1
  619. SX6 X1
  620. SA6 A1+B1 SET IN = FIRST
  621. SA6 A6+1 SET OUT = FIRST
  622. SA1 TOFG
  623. ZR X1,PTI1 IF FILE NOT ASSIGNED TO TERMINAL
  624. SA1 OUTPUT+1
  625. SX6 X1+
  626. SA6 A1+B1 SET IN = FIRST
  627. SA6 A6+B1 SET OUT = FIRST
  628. PTI1 SX6 1
  629. SA6 INFG SET TERMINAL INTERRUPT FLAG
  630. SA6 UPRF SET USER PROMPT FLAG
  631. REPRIEVE RPB,RESUME,200B RESUME PRIOR EXECUTION
  632. QUU SPACE 4,15
  633. ** QUU - QUERY USER.
  634. *
  635. * EXIT (X2) = 1 IF USER ENTERED A VALID JSN.
  636. * (X2) = 0 IF USER ENTERED *END*.
  637. * (X2) = .LT. 0 IF USER ENTERED AN INCORRECT ENTRY OR
  638. * *RELIST*.
  639. * (X1) = USER RESPONSE, LEFT JUSTIFIED, ZERO FILLED.
  640. *
  641. * USES X - 0, 1, 2, 3, 4, 6.
  642. * A - 1, 2, 3, 6.
  643. *
  644. * CALLS ABT, PRJ.
  645. *
  646. * MACROS READC, RECALL, WRITEC, WRITER.
  647.  
  648.  
  649. QUU SUBR ENTRY/EXIT
  650. BX6 X6-X6 CLEAR USER PROMPT FLAG
  651. SA6 UPRF
  652. SA1 LRSF
  653. PL X1,QUU1 IF PREVIOUS RESPONSE NOT *RELIST*
  654. BX6 X6-X6 CLEAR FLAG
  655. SA6 A1
  656. EQ QUU2 PRINT RECOVERABLE JOBS
  657.  
  658. QUU1 SA1 UIFG GET USER INTERACTION FLAG
  659. ZR X1,QUU3 IF INTERACTION HAS BEEN DONE
  660. SA1 JSNX
  661. NZ X1,QUU8 IF JSN ENTERED ON COMMAND
  662. QUU2 RJ PRJ PRINT LIST OF JSN-S
  663. QUU3 WRITEW OUTPUT,QUUA,QUUAL PRINT MENU AND QUERY USER
  664. SA1 TIFG
  665. ZR X1,QUU4 IF FILE NOT ASSIGNED TO TERMINAL
  666. READ INPUT,R
  667. QUU4 READC INPUT,WBUF,WBFL
  668. NZ X1,QUU10 IF EOR, EOF OR EOI
  669.  
  670. * DETERMINE IF REPLY = *RELIST*.
  671.  
  672. SA2 MSGB
  673. SA1 WBUF
  674. BX2 X2-X1
  675. ZR X2,QUU5 IF RESPONSE = *RELIST*
  676. SA2 MSGC
  677. BX2 X2-X1
  678. ZR X2,QUU5 IF RESPONSE = *RELIST*
  679. SA2 MSGD
  680. BX2 X2-X1
  681. NZ X2,QUU7 IF .NE. *RELIST*
  682. QUU5 BX6 X6-X6 CLEAR INCORRECT REPLY COUNTER
  683. SA6 INRC
  684. SA1 UPRF
  685. NZ X1,QUU6 IF NOT FIRST TIME THROUGH LOOP
  686. SX6 B1+ SET LOOP FLAG
  687. SA6 UPRF
  688. EQ QUU2 PRINT LIST OF JOBS
  689.  
  690. QUU6 SX2 -B1 SET LIST EXIT FLAG
  691. BX6 X2 SET LIST RESPONSE FLAG
  692. SA6 LRSF
  693. EQ QUUX RETURN
  694.  
  695. * DETERMINE IF REPLY = *GO*.
  696.  
  697. QUU7 SA2 MSGF
  698. SA1 WBUF
  699. BX2 X2-X1
  700. ZR X2,QUUX IF REPLY = *GO*
  701. SA2 MSGG
  702. BX2 X2-X1
  703. ZR X2,QUUX IF REPLY = *GO*
  704. SA2 MSGG2
  705. BX2 X2-X1
  706. ZR X2,QUUX IF REPLY = *GO*
  707. SA2 MSGG3
  708. BX2 X2-X1
  709. ZR X2,QUUX IF REPLY = *GO*
  710. SA2 MSGG4
  711. BX2 X2-X1
  712. ZR X2,QUUX IF REPLY = *GO*
  713.  
  714. * VALIDATE JSN.
  715.  
  716. QUU8 MX0 6
  717. LX0 -24 GET FIFTH CHARACTER IN REPLY
  718. BX2 X0*X1
  719. NZ X2,QUU12 IF REPLY .GE. 5 CHARACTERS
  720. LX0 6
  721. BX2 X0*X1
  722. NZ X2,QUU9 IF REPLY = 4 CHARACTERS
  723. LX0 6
  724. BX2 X0*X1
  725. ZR X2,QUU12 IF REPLY .LE. 2 CHARACTERS
  726. SX2 1R_ SPACE-FILL FOURTH CHARACTER
  727. LX2 36 POSITION BLANK
  728. BX1 X1+X2
  729. QUU9 BX6 X6-X6 CLEAR INCORRECT REPLY COUNTER
  730. SA6 INRC
  731. SX2 B1+ FLAG VALID REPLY
  732. EQ QUUX RETURN
  733.  
  734. * CLEAR TERMINATION STATUS IN FET IF FILE ASSIGNED
  735. * TO A TERMINAL.
  736.  
  737. QUU10 SA3 TIFG GET TERMINAL FLAG
  738. NZ X3,QUU11 IF FILE ASSIGNED TO TERMINAL
  739. WRITER OUTPUT FLUSH BUFFER
  740. SX3 MSGE * NO JSN-S RECOVERED.*
  741. EQ ABT ABORT
  742.  
  743. QUU11 RECALL INPUT
  744. SA1 INPUT INPUT FET
  745. MX0 16
  746. LX0 -42
  747. BX6 -X0*X1 CLEAR TERMINATION STATUS
  748. SA6 A1
  749. EQ QUU5 ASSUME *RELIST*
  750.  
  751. QUU12 WRITEC OUTPUT,MSGH *INCORRECT ENTRY.*
  752. SA1 INRC GET INCORRECT REPLY COUNTER
  753. SX4 X1-MAXI COMPARE VALUES
  754. SX3 MSGJ * INCORRECT REPLY LIMIT REACHED.*
  755. ZR X4,ABT IF MAXIMUM EXCEEDED
  756. SX6 X1+B1 INCREMENT INCORRECT REPLY COUNTER
  757. SA6 INRC
  758. SX2 -B1 FLAG INCORRECT ENTRY
  759. EQ QUUX RETURN
  760.  
  761.  
  762. * USER PROMPT PRINT BUFFER.
  763.  
  764. QUUA DATA C*ENTER GO TO CONTINUE CURRENT JOB,*
  765. DATA C* RELIST TO LIST RECOVERABLE JOBS,*
  766. DATA C* OR DESIRED JSN: "ES"*
  767. QUUAL EQU *-QUUA
  768.  
  769. SRJ SPACE 4,10
  770. ** SRJ - SORT LIST OF RECOVERABLE JOBS.
  771. *
  772. * *SRJ* SORTS THE LIST OF RECOVERABLE JOBS INTO
  773. * BUFFER *JSNB*.
  774. *
  775. * USES X - 0, 1, 2, 3, 5.
  776. * A - 1, 3, 5.
  777. * B - 2, 3, 4, 5, 6.
  778. *
  779. * MACROS MOVE.
  780.  
  781.  
  782. SRJ SUBR ENTRY/EXIT
  783. SA5 RJSN NUMBER OF JOBS RECOVERABLE
  784. SX5 X5-1
  785. SX0 QRBL
  786. IX5 X0*X5
  787. MX0 24
  788. SB3 JSNB+X5 LAST JSN ADDRESS
  789. SB4 B1+
  790. SRJ1 ZR B4,SRJX IF SORT COMPLETE
  791. SB4 B0+ SORT FLAG
  792. SB2 JSNB
  793. SB5 B2-QRBL
  794. SRJ2 SB5 B5+QRBL
  795. LE B3,B5,SRJ1 IF END OF BUFFER
  796. SA1 B5 JSN ENTRY ADDRESS
  797. SA3 A1+QRBL NEXT JSN ADDRESS
  798. BX1 X0*X1 EXTRACT JSN
  799. LX1 24 CLEAR SIGN BIT
  800. BX3 X0*X3 EXTRACT JSN
  801. LX3 24 CLEAR SIGN BIT
  802. IX1 X3-X1
  803. PL X1,SRJ2 IF SWITCH UNNECESSARY
  804. SB4 B1
  805.  
  806. * SAVE ADDRESS LOCATIONS.
  807.  
  808. SB2 A1 FIRST JSN ADDRESS
  809. SB4 A3+ SECOND JSN ADDRESS
  810. SB6 JSNT TEMPORARY ADDRESS FOR SWITCH
  811.  
  812. * INTERCHANGE WORD BLOCKS.
  813.  
  814. SX1 QRBL MOVE FIRST JSN BLOCK TO TEMPORARY
  815. SX2 B2
  816. SX3 B6
  817. MOVE X1,X2,X3
  818. SX1 QRBL MOVE SECOND JSN BLOCK TO PREVIOUS BLOCK
  819. SX2 B4
  820. SX3 B2
  821. MOVE X1,X2,X3
  822. SX1 QRBL MOVE TEMPORARY BLOCK TO NEXT BLOCK
  823. SX2 B6
  824. SX3 B4
  825. MOVE X1,X2,X3
  826. EQ SRJ2 CONTINUE SORT
  827. SVJ SPACE 4,10
  828. ** SVJ - SEARCH FOR JSN USER ENTERED.
  829. *
  830. * ENTRY (X1) = JSN LEFT-JUSTIFIED, ZERO-FILLED.
  831. *
  832. * EXIT (X2) = 0 IF JSN NOT FOUND OR JOB CANNOT BE RECOVERED.
  833. *
  834. * USES X - 0, 1, 2, 3, 4, 5, 6.
  835. * A - 2, 3, 6.
  836. *
  837. * MACROS WRITEC.
  838.  
  839.  
  840. SVJ4 SX5 MSGI *JSNX NOT FOUND.*
  841. SVJ5 SA2 X5 SET JSN IN MESSAGE
  842. MX0 -36
  843. BX2 -X0*X2
  844. BX6 X1+X2
  845. SA6 A2
  846. WRITEC OUTPUT,X5 ISSUE MESSAGE
  847. BX6 X6-X6 CLEAR *INCORRECT REPLY* COUNTER
  848. SA6 INRC
  849. BX2 X2-X2 FLAG JSN NOT FOUND
  850.  
  851. SVJ SUBR ENTRY/EXIT
  852. SA2 RJSN NUMBER OF RECOVERABLE JSN-S
  853. SA3 JSNB TABLE ADDRESS OF RECOVERABLE JSN-S
  854. MX0 24
  855. BX4 X1
  856. LX4 24
  857. SVJ1 BX3 X0*X3 EXTRACT JSN FROM BUFFER
  858. LX3 24
  859. IX3 X4-X3
  860. ZR X3,SVJ2 IF JSN FOUND
  861. NG X3,SVJ4 IF JSN NOT IN LIST
  862. SX2 X2-1
  863. ZR X2,SVJ4 IF END OF TABLE
  864. SA3 A3+QRBL
  865. EQ SVJ1 COMPARE NEXT JSN
  866.  
  867. SVJ2 SA2 A3+3 CHECK JOB ACCESS LEVEL LIMITS
  868. MX6 -3
  869. LX2 -15
  870. BX6 -X6*X2 UPPER ACCESS LEVEL LIMIT FOR SPECIFIED JOB
  871. SA2 JUAL
  872. IX6 X2-X6
  873. PL X6,SVJ3 IF .LE. LIMIT FOR CURRENT JOB
  874. SX5 MSGL *JSNX NOT RECOVERABLE-SECURITY CONFLICT.*
  875. EQ SVJ5 ISSUE ERROR MESSAGE
  876.  
  877. SVJ3 SX2 B1 FLAG JSN FOUND AND JOB RECOVERABLE
  878. EQ SVJX RETURN
  879. SPACE 4,10
  880. * COMMON DECKS.
  881.  
  882. *CALL COMCCDD
  883. *CALL COMCCIO
  884. *CALL COMCCPM
  885. *CALL COMCMVE
  886. *CALL COMCRDC
  887. *CALL COMCRDW
  888. *CALL COMCSFN
  889. *CALL COMCSYS
  890. *CALL COMCWTC
  891. *CALL COMCWTW
  892. SPACE 4,10
  893. * BUFFERS.
  894.  
  895. USE LITERALS
  896. INBUF EQU * INPUT BUFFER
  897. JSNT EQU INBUF+IBFL TEMPORARY FOR SORT SWITCH
  898. LIST EQU JSNT+QRBL LIST OF RECOVERABLE JSN-S
  899. OUTBUF EQU LIST+WRDL OUTPUT BUFFER
  900. WBUF EQU OUTBUF+OBFL WORKING BUFFER
  901. JSNB EQU WBUF+WBFL TABLE OF JSN-S, UJN-S, AND STATUSES
  902. RFL= EQU JSNB+JSNBL+200B SET *RECOVER* FL
  903. ERRNG AFFL*100B-RFL= FL EXCEEDS MAXIMUM LOGIN FL
  904. TITLE PRESET.
  905. ** PRS - PRESET.
  906.  
  907.  
  908. PRS SUBR ENTRY/EXIT
  909. SB1 1
  910.  
  911. * DETERMINE JOB ORIGIN.
  912.  
  913. SX3 PRSA * USER ACCESS NOT VALID.*
  914. SA1 JOPR GET JOB ORIGIN TYPE
  915. LX1 -24
  916. MX0 -12
  917. BX1 -X0*X1
  918. SX1 X1-TXOT
  919. NZ X1,ABT IF NOT *TXOT*
  920. SX6 B1+ SET INTERACTIVE FLAG
  921. SA6 IFLG
  922.  
  923. * GET UPPER ACCESS LEVEL LIMIT FOR CURRENT JOB.
  924.  
  925. GETJAL JUAL GET JOB ACCESS LEVEL LIMITS
  926. SA1 JUAL ISOLATE UPPER ACESS LEVEL LIMIT
  927. MX6 -3
  928. LX1 -6
  929. BX6 -X6*X1
  930. SA6 A1
  931.  
  932. * PROCESS ARGUMENT LIST.
  933.  
  934. SA1 ACTR
  935. MX0 -18
  936. BX1 -X0*X1 ARGUMENT COUNT
  937. ZR X1,PRS5 IF NO ARGUMENTS
  938. SB4 X1 SET NUMBER OF ARGUMENTS
  939. SA1 ARGR DETERMINE COMMAND FORMAT
  940. MX0 -6
  941. BX1 -X0*X1
  942. SX2 X1-1R=
  943. ZR X2,PRS1 IF ORDER INDEPENDENT
  944. NZ X1,PRS2 IF ARGUMENT ERROR
  945. SX1 1 SET ERROR FLAG
  946. SB4 B4-MARG-1
  947. PL B4,PRS2 IF ARGUMENT ERROR
  948. SA1 ARGR STORE JSN
  949. BX6 X1
  950. SA6 JSNX
  951. SA1 ARGR+1
  952. EQ PRS3 CHECK FOR VALID OPTIONS
  953.  
  954. PRS1 R= A4,ARGR
  955. SB5 TARG ADDRESS OF ARGUMENT TABLE
  956. RJ ARG PROCESS ARGUMENTS
  957. PRS2 SX3 PRSB * ARGUMENT ERROR.*
  958. NZ X1,ABT IF ARGUMENT ERROR
  959.  
  960. * CHECK IF *OP* OPTION VALID.
  961.  
  962. SA1 T GET *OP* OPTIONS
  963. PRS3 MX0 -6
  964. PRS4 LX1 6
  965. BX2 -X0*X1 GET NEXT OPTION
  966. ZR X2,PRS5 IF NO MORE OPTIONS
  967.  
  968. * SEARCH FOR *OP* OPTION SPECIFIED IN TABLE OF LEGAL OPTIONS.
  969.  
  970. SX4 TOPOL NUMBER OF VALID OPTIONS
  971. RJ SVO SEARCH FOR MATCH
  972. SX3 PRSC * OP OPTION NOT VALID.*
  973. ZR X4,ABT IF NO MATCH
  974.  
  975. * DETERMINE IF *T* WAS THE OPTION SPECIFIED.
  976.  
  977. SX4 1RT
  978. BX4 X4-X2
  979. NZ X4,PRS4 IF NOT *OP=T*
  980. SX6 1 SET LOGIN FLAG
  981. SA6 LFLG
  982. EQ PRS4 PROCESS NEXT OPTION
  983.  
  984. * DETERMINE CM AVAILABLE.
  985.  
  986. PRS5 MEMORY CM,STATM,R DETERMINE MAXIMUM CM AVAILABLE
  987. SA2 STATM
  988. BX6 X2
  989. AX6 30
  990. SA6 MAXC
  991. SX7 B0+ DETERMINE CURRENT CM AVAILABLE
  992. SA7 STATM
  993. MEMORY CM,A7,R
  994. SA1 STATM
  995. AX1 30
  996. BX6 X1
  997. SA6 MEMC
  998.  
  999. * DETERMINE AND SET TERMINAL CHARACTERISTICS.
  1000.  
  1001. TSTATUS TTST GET TERMINAL STATUS
  1002. SA1 B1+TTST GET CURRENT CHARACTER SET
  1003. MX0 1
  1004. LX0 3
  1005. BX1 X0*X1
  1006. ZR X1,PRS6 IF NOT 64 CHARACTER SET
  1007. BX6 X1 SET ASCII FLAG
  1008. SA6 ASFG
  1009. CSET NORMAL SET TERMINAL CHARACTER MODE
  1010. PRS6 PROMPT OFF SUPPRESS *IAF* PROMPTS
  1011. SA1 LFTB SET LIST OF FILES
  1012. BX6 X1
  1013. BX7 X7-X7
  1014. SA6 B1+B1 STORE TERMINAL FILES
  1015. SA7 A6+B1
  1016. SX2 INPUT
  1017. RJ STF DETERMINE IF FILE TYPE *TT*
  1018. NZ X6,PRS7 IF FILE TYPE NOT *TT*
  1019. SX6 B1+ STORE TERMINAL FLAG
  1020. SA6 TIFG
  1021. PRS7 SX2 OUTPUT
  1022. RJ STF DETERMINE IF FILE TYPE *TT*
  1023. NZ X6,PRSX IF FILE TYPE NOT *TT*
  1024. SX6 B1+ STORE TERMINAL FLAG
  1025. SA6 TOFG
  1026. EQ PRSX RETURN
  1027.  
  1028.  
  1029. PRSA DATA C* USER ACCESS NOT VALID.*
  1030. PRSB DATA C* ARGUMENT ERROR.*
  1031. PRSC DATA C* OP OPTION NOT VALID.*
  1032. TARG SPACE 4,10
  1033. * TARG - ARGUMENT TABLE.
  1034.  
  1035. TARG BSS 0
  1036. JSN ARG JSNX,JSNX JOB SEQUENCE NUMBER
  1037. OP ARG T,T LOGIN
  1038. ARG
  1039.  
  1040. T DATA 0 *OP* OPTION
  1041.  
  1042.  
  1043. * TOPO -TABLE OF VALID *OP* OPTIONS.
  1044.  
  1045. TOPO BSS 0
  1046. DATA 1RT LOGIN
  1047. TOPOL EQU *-TOPO
  1048. SVO SPACE 4,10
  1049. ** SVO - SEARCH FOR VALID *OP* OPTIONS.
  1050. *
  1051. * ENTRY (X4) = NUMBER OF OPTIONS IN TABLE.
  1052. * (X2) = VALUE SEARCHING FOR IN TABLE.
  1053. *
  1054. * EXIT (X4) = 0 IF *OP* NOT VALID.
  1055. * (X2) = VALUE SEARCHED FOR IN TABLE.
  1056. *
  1057. * USES X - 2, 3, 4, 6.
  1058. * A - 3, 6.
  1059.  
  1060.  
  1061. SVO2 BX6 X6-X6 CLEAR AS VALID ENTRY
  1062. SA6 A3
  1063.  
  1064. SVO SUBR ENTRY/EXIT
  1065. SA3 TOPO TABLE OF LEGAL OPTIONS
  1066. SVO1 BX3 X3-X2
  1067. ZR X3,SVO2 IF MATCH FOUND
  1068. SX4 X4-1
  1069. ZR X4,SVOX IF OPTION NOT RECOGNIZED
  1070. SA3 A3+1
  1071. EQ SVO1 COMPARE WITH NEXT VALUE
  1072. SPACE 4,10
  1073. * COMMON DECKS.
  1074.  
  1075. *CALL COMCARG
  1076. *CALL COMCSTF
  1077. SPACE 4,10
  1078. END