Table of Contents

PFAM

Table Of Contents

  • [00002] PFAM - PERMANENT FILE ARCHIVE MANAGEMENT UTILITIES.
  • [00010] PERMANENT FILE ARCHIVE MANAGEMENT UTILITIES.
  • [00211] ASSEMBLY CONSTANTS.
  • [00243] RESERVED LOCATIONS AND FETS.
  • [00326] MAIN ROUTINES.
  • [00328] MAIN PROGRAM.
  • [00347] AFL - PROCESS ARCHIVE FILE LABEL.
  • [00413] CUP - CALL UTILITY PROCESSOR.
  • [00433] ATC - *PFATC* MAIN LOOP.
  • [00492] COP - *PFCOPY* MAIN LOOP.
  • [00531] RES - *PFRES* MAIN LOOP.
  • [00616] EAF - END PROCESSING ON CURRENT ARCHIVE FILE.
  • [00643] EOF - PROCESS END OF FILE ON ARCHIVE FILE.
  • [00677] TER - PERFORM TERMINATION.
  • [00732] PRIMARY SUBROUTINES.
  • [00734] CCB - *PFCOPY* PROCESS CATALOG BLOCK.
  • [00826] CFB - CHECK FOR FIRST BLOCK OF TYPE ON CURRENT ARCHIVE FILE.
  • [00873] PDB - PROCESS DATA BLOCK.
  • [00997] PPB - PROCESS PERMIT BLOCK (*PFCOPY*).
  • [01060] RCB - *PFRES* PROCESS CATALOG BLOCK.
  • [01137] RCW - READ CONTROL WORD.
  • [01187] VPD - VERIFY PERMIT AND DATA BLOCKS.
  • [01294] GENERAL SUBROUTINES.
  • [01296] APR - ABORT PROCESSOR.
  • [01332] ALD - ASSIGN LOCAL FILE DEVICE.
  • [01362] APD - ASSIGN PERMANENT FILE DEVICE.
  • [01395] ARQ - ADD STAGE REQUEST TO QUEUE.
  • [01442] CAR - CHECK FOR ADDITIONAL STAGE REQUESTS.
  • [01485] CFC - CHECK FILES PROCESSED COUNT.
  • [01502] CLC - CONNECT LOCAL FILE TO CATALOG ENTRY.
  • [01568] CSP - CHECK SELECTION PARAMETERS.
  • [01641] CSR - CHECK FOR STAGE REQUEST FOR THIS FILE.
  • [01681] IFM - ISSUE FILE COUNT MESSAGES.
  • [01716] ISM - ISSUE STATISTICAL MESSAGE.
  • [01776] PPE - PROCESS PARITY ERROR.
  • [01817] RIP - REPRIEVE INTERRUPT PROCESSOR.
  • [01835] RUR - REQUEUE UNPROCESSED STAGE REQUESTS.
  • [01889] SAF - SET ACCESS LEVEL IN FET.
  • [01917] SER - SKIP TO EOR.
  • [01935] SRE - SEND STAGE REQUEST ERROR MESSAGE.
  • [01962] SSR - SETUP *PFM* SPECIAL REQUEST BLOCK.
  • [01998] STE - SKIP TAPE ERROR.
  • [02016] VCE - VERIFY CATALOG ENTRY FIELDS.
  • [02087] BUFFERS.
  • [02114] PRESET.
  • [02116] PRS - PRESET PROGRAM.
  • [02202] PRESET SUBROUTINES.
  • [02204] FSR - FIND STAGE REQUESTS.
  • [02296] ITA - ISSUE TAPE ASSIGNED MESSAGE.
  • [02340] RST - REQUEST STAGING TAPE.

Source Code

PFAM.txt
  1. IDENT PFAM1,/COMSPFS/OVLA,PFA,01,00
  2. TITLE PFAM - PERMANENT FILE ARCHIVE MANAGEMENT UTILITIES.
  3. ABS
  4. SST
  5. SYSCOM B1
  6. SPACE 4,10
  7. *COMMENT PFAM - PERM FILE ARCHIVE MANAGEMENT UTILITIES.
  8. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  9. SPACE 4,10
  10. *** PFAM - PERMANENT FILE ARCHIVE MANAGEMENT UTILITIES.
  11. *
  12. * G. S. YODER 87/02/20.
  13. * P. C. SMITH 87/04/08.
  14. SPACE 4,10
  15. *** *PFAM* CONTAINS UTILITIES FOR MANAGING ARCHIVE FILES CREATED
  16. * BY *PFDUMP*. THESE UTILITIES MAY BE CALLED THROUGH THE *PFS*
  17. * COMMAND OR DIRECTLY BY UTILITY NAME.
  18. *
  19. * THE FOLLOWING UTILITIES RESIDE IN *PFAM* -
  20. *
  21. * PFATC - CATALOG ARCHIVE FILE.
  22. * PFCOPY - COPY FILES FROM ARCHIVE FILE.
  23. * PFRES - RESTORE FILES FROM TAPE ALTERNATE STORAGE TO DISK
  24. * RESIDENCE.
  25. *** MESSAGE LEGEND.
  26. *
  27. * THE FOLLOWING LEGEND DEFINES PARAMETERS THAT ARE USED IN MANY
  28. * OF THE UTILITY ERROR MESSAGES. THE DESCRIPTIVE CHARACTER
  29. * STRINGS DEFINED HERE ARE REPLACED BY THEIR ACTUAL VALUE WHEN
  30. * A PARTICULAR MESSAGE IS ISSUED.
  31. *
  32. * FFFFFFF = FAMILY NAME.
  33. * MMMMMM = NUMBER OF FILES.
  34. * NNNNNNN = PERMANENT FILE NAME.
  35. * UUUUUU = USER INDEX.
  36. SPACE 4,10
  37. *** OPERATOR MESSAGES.
  38. *
  39. * *CATALOGING NNNNNNN UUUUUU*
  40. * FILE FFFFFFF ON USER INDEX UUUUUU ON THE ARCHIVE FILE
  41. * IS BEING PROCESSED BY *PFATC*.
  42. *
  43. * *COPYING NNNNNNN UUUUUU*
  44. * FILE FFFFFFF ON USER INDEX UUUUUU ON THE ARCHIVE FILE
  45. * IS BEING PROCESSED BY *PFCOPY*.
  46. *
  47. * *RESTORING NNNNNNN UUUUUU*
  48. * *PFRES* IS RESTORING THE DATA FOR PERMENENT FILE
  49. * NNNNNNN CATALOGED ON USER INDEX UUUUUU.
  50. *
  51. * *SKIPPING NNNNNNN UUUUUU*
  52. * FILE NNNNNNN ON USER INDEX UUUUUU ON THE ARCHIVE FILE
  53. * WAS NOT SELECTED FOR PROCESSING BY *PFATC*, *PFCOPY*
  54. * OR *PFRES*.
  55. SPACE 4,10
  56. *** INFORMATIVE DAYFILE MESSAGES.
  57. *
  58. * * FILE NAME CHANGED TO ZZZZZLF.*
  59. * THE NAME OF THE FILE BEING COPIED WAS THE SAME AS THE
  60. * SPECIFIED OUTPUT FILE. THE LOGICAL FILE NAME WAS
  61. * CHANGED TO PREVENT A CONFLICT.
  62. *
  63. * * FILE NAME CHANGED TO ZZZZZSF.*
  64. * THE NAME OF THE FILE BEING COPIED WAS THE SAME AS THE
  65. * SPECIFIED SUMMARY FILE. THE LOCAL FILE NAME WAS
  66. * CHANGED TO PREVENT A CONFLICT.
  67. *
  68. * * FILE NAME CHANGED TO ZZZZZTF.*
  69. * THE NAME OF THE FILE BEING COPIED WAS THE SAME AS THE
  70. * SPECIFIED ARCHIVE FILE. THE LOCAL FILE NAME WAS
  71. * CHANGED TO PREVENT A CONFLICT.
  72. *
  73. * * PFATC COMPLETE.*
  74. * *PFATC* TERMINATED WITHOUT FATAL ERRORS.
  75. *
  76. * * PFCOPY COMPLETE.*
  77. * *PFCOPY* TERMINATED WITHOUT FATAL ERRORS.
  78. *
  79. * * PFRES COMPLETE.*
  80. * *PFRES* TERMINATED WITHOUT FATAL ERRORS.
  81. *
  82. * * MMMMMM FILES CATALOGED.*
  83. * MMMMMM FILES WERE CATALOGED BY *PFATC*.
  84. *
  85. * * MMMMMM FILES COPIED.*
  86. * MMMMMM FILES WERE COPIED BY *PFCOPY.*
  87. *
  88. * * MMMMMM FILES RESTORED.*
  89. * MMMMMM FILES WERE RESTORED BY *PFRES.*
  90. SPACE 4
  91. *** NON-FATAL ERROR MESSSAGES.
  92. *
  93. * * ARCHIVE FILE BLOCK ERROR, FN=NNNNNNN, UI=UUUUUU.*
  94. * A PFC, PERMIT, OR DATA BLOCK WAS DETECTED WITH AN
  95. * INCORRECT SUB-TYPE, AN INCORRECT LENGTH FOR THE BLOCK
  96. * TYPE, OR INCORRECT CONTENTS FOR THE BLOCK TYPE. ALSO
  97. * ISSUED WHEN PERMIT OR DATA BLOCKS WERE PRESENT OR
  98. * MISSING WHEN THEY SHOULD NOT BE BASED ON INFORMATION
  99. * IN THE PFC BLOCK OR WHEN A BLOCK OF UNKNOWN TYPE IS
  100. * ENCOUNTERED.
  101. *
  102. * * ARCHIVE FILE BLOCK ERROR, FN=NNNNNNN, UI=UUUUUU,
  103. * FM=FFFFFFF.*
  104. * A PFC, PERMIT, OR DATA BLOCK WAS DETECTED WITH AN
  105. * INCORRECT SUB-TYPE, AN INCORRECT LENGTH FOR THE BLOCK
  106. * TYPE, OR INCORRECT CONTENTS FOR THE BLOCK TYPE. ALSO
  107. * ISSUED WHEN PERMIT OR DATA BLOCKS WERE PRESENT OR
  108. * MISSING WHEN THEY SHOULD NOT BE BASED ON INFORMATION
  109. * IN THE PFC BLOCK OR WHEN A BLOCK OF UNKNOWN TYPE IS
  110. * ENCOUNTERED.
  111. *
  112. * * ARCHIVE FILE READ ERROR, FN=NNNNNNN, UI=UUUUUU.*
  113. * A READ ERROR OCCURRED ON THE ARCHIVE FILE WHILE
  114. * PROCESSING THE INDICATED FILE.
  115. *
  116. * * ARCHIVE FILE READ ERROR, FN=NNNNNNN, UI=UUUUUU,
  117. * FM=FFFFFFF.*
  118. * A READ ERROR OCCURRED ON THE ARCHIVE FILE WHILE
  119. * PROCESSING THE INDICATED FILE.
  120. *
  121. * * FILE VERIFICATION ERROR, FN=NNNNNNN, UI=UUUUUU, FM=FFFFFFF.*
  122. * WHEN STAGING THE INDICATED FILE, THE PFC ON THE
  123. * ALTERNATE STORAGE TAPE DID NOT MATCH THE PFC OF THE
  124. * FILE TO BE STAGED.
  125. *
  126. * * NO DEVICE FOR FILE ACCESS LEVEL, FN=NNNNNNN, UI=UUUUUU.*
  127. * NO TEMPORARY FILE DEVICE WAS AVAILABLE THAT WILL ALLOW
  128. * THE SECURITY ACCESS LEVEL OF THE INDICATED FILE TO
  129. * RESIDE THERE.
  130. *
  131. * * NO DEVICE FOR FILE ACCESS LEVEL, FN=NNNNNNN, UI=UUUUUU,
  132. * FM=FFFFFFF.*
  133. * NO DEVICE COULD BE FOUND THAT WILL ALLOW THE SECURITY
  134. * ACCESS LEVEL OF THE INDICATED FILE TO RESIDE THERE.
  135. *
  136. * * NO FILES TO RESTORE.*
  137. * *PFRES* WAS INITIATED, BUT NO STAGE REQUESTS WERE
  138. * PENDING.
  139. *
  140. * * PFM ERROR ENCOUNTERED, FN=NNNNNNN, UI=UUUUUU, FM=FFFFFFF.
  141. * *PFM* WAS NOT ABLE TO RESTORE THE INDICATED FILE TO
  142. * DISK RESIDENCE.
  143. *
  144. * * STAGE ABANDONED, FN=NNNNNNN, UI=UUUUUU, FM=FFFFFFF.*
  145. * THE STAGE REQUEST FOR THE INDICATED FILE WAS ABANDONED
  146. * BECAUSE IT HAD BEEN RETRIED UNSUCCESSFULLY THE MAXIMUM
  147. * NUMBER OF TIMES.
  148. SPACE 4,10
  149. *** FATAL ERROR MESSAGES.
  150. *
  151. * * ARCHIVE FILE LABEL READ ERROR.*
  152. * A READ ERROR OCCURRED WHEN READING THE ARCHIVE FILE
  153. * LABEL.
  154. *
  155. * * INCORRECT CATALOG SIZE.*
  156. * THE ARCHIVE TAPE WHICH WAS ASSIGNED TO *PFRES* AS A
  157. * STAGING TAPE WAS DUMPED WITH 8-WORD PFC-S.
  158. *
  159. * * PREMATURE EOF DETECTED.*
  160. * END OF FILE DETECTED BEFORE END OF DUMP CONTROL WORD.
  161. *
  162. * * STAGING TAPE NOT ASSIGNED.*
  163. * A FILE OTHER THAN A TAPE WAS ASSIGNED TO *PFRES* AS A
  164. * STAGING TAPE.
  165. *
  166. * * STAGING TAPE VSN ERROR. VSN = VVVVVV.*
  167. * THE TAPE ASSIGNED TO *PFRES* AS A STAGING TAPE HAD A
  168. * VSN WHICH WAS NOT LEGAL FOR A STAGING TAPE.
  169. SPACE 4,10
  170. *** ACCOUNT FILE MESSAGES.
  171. *
  172. * *STAS, FILENAM, USERIN, FAMPACK, VSNVSN, R.*
  173. * INDICATES THE ABANDONMENT OF A STAGE REQUEST FOR
  174. * FILE *FILENAM*, OF USER INDEX *USERIN*, ON FAMILY/PACK
  175. * *FAMPACK*, FROM VSN *VSNVSN*, AFTER *R* RETRIES.
  176. *
  177. * *STES, FILENAM, USERIN, FAMPACK, VSNVSN, R.*
  178. * INDICATES THE SUCCESSFUL COMPLETION OF A STAGE REQUEST
  179. * FOR FILE *FILENAM*, OF USER INDEX *USERIN*, ON
  180. * FAMILY/PACK *FAMPACK*, FROM VSN *VSNVSN*, AFTER *R*
  181. * RETRIES.
  182. * INDICATES THE SUCCESSFUL COMPLETION OF A STAGE REQUEST
  183. * FOR FILE *FILENAM*, OF USER INDEX *USERIN*, ON
  184. * FAMILY/PACK *FAMPACK*, FROM VSN *VSNVSN*, AFTER *R*
  185. * RETRIES.
  186. *
  187. * *STTA, FAMPACK, VSNVSN, NNNN.*
  188. * INDICATES THAT FOR FAMILY/PACK *FAMPACK* STAGING VSN
  189. * *VSNVSN* HAS BEEN ASSIGNED TO RESTORE *NNNN* FILES.
  190. SPACE 4,10
  191. * COMMON DECKS.
  192.  
  193.  
  194. *CALL COMCMAC
  195. *CALL COMCCMD
  196. *CALL COMSMLS
  197. QUAL MTX
  198. LIST X
  199. *CALL COMSMTX
  200. LIST *
  201. QUAL *
  202. *CALL COMSPFM
  203. LIST X
  204. *CALL COMSPFS
  205. LIST *
  206. *CALL COMSPFU
  207. *CALL COMSPRD
  208. *CALL COMSRPV
  209. *CALL COMSSFM
  210. *CALL COMSSSD
  211. TITLE ASSEMBLY CONSTANTS.
  212. *CALL COMSVER
  213. * ASSEMBLY CONSTANTS.
  214.  
  215.  
  216. CWSW EQU 5 CONTROL WORD STATUS WORD
  217. MEMI EQU 1000B CM FL INCREMENT TO REQUEST
  218. SSLN EQU 100B SYSTEM SECTOR LENGTH
  219.  
  220. * BUFFER LENGTHS.
  221.  
  222. CATHL EQU NWCE CATALOG ENTRY HOLD BUFFER LENGTH
  223. DBUFL EQU 2001B ARCHIVE DATA BLOCK WORKING BUFFER LENGTH
  224. MBUFL EQU 6001B MAIN BUFFER LENGTH
  225. MSFBL EQU 10001B *COMCMSF* SORT FILES BUFFER LENGTH
  226. OUTBL EQU 10001B OUTPUT FILE BUFFER LENGTH
  227. PFLBL EQU 1001B PROCESSED FILES FILE BUFFER LENGTH
  228. QBUFL EQU 1000B STAGE REQUEST QUEUE BUFFER LENGTH
  229. RBUFL EQU 1001B STAGE REQUEST FILE BUFFER LENGTH
  230. SABFL EQU 1000B SUMMARY FILE ASSEMBLY BUFFER LENGTH
  231. SBUFL EQU 1001B SCRATCH STAGE REQUEST FILE BUFFER LENGTH
  232. SRTBL EQU 20000B SORT BUFFER LENGTH
  233. SUMBL EQU 1001B SUMMARY FILE BUFFER LENGTH
  234. TBUFL EQU 30061B ARCHIVE FILE BUFFER LENGTH
  235. ODEBL EQU 20B OPTICAL DISK EXTENSION BUFFER LENGTH
  236.  
  237.  
  238. * *COMSPFS* EQUIVALENCES.
  239.  
  240.  
  241. CPAR EQU /COMSPFS/CPL
  242. IDSA EQU /COMSPFS/PADR
  243. TITLE RESERVED LOCATIONS AND FETS.
  244. ORG /COMSPFS/OVLA
  245. SPACE 4,10
  246. * DATA LOCATIONS.
  247.  
  248.  
  249. CIPF CON 0 CIR BLOCK PROCESSED FLAG
  250. CAPF CON 0 CATALOG BLOCK PROCESSED FLAG
  251. EFPF CON 0 EOF JUST PROCESSED FLAG
  252. FPRF CON 0 FILE BEING PROCESSED FLAG
  253. NSSR CON 0 NUMBER OF STAGE REQUESTS SELECTED
  254. MSTAT CON 0 MEMORY STATUS
  255. PVSN CON 0 PACKED VSN OF STAGING TAPE
  256. SRFF CON 1 STAGE REQUEST FILE ATTACHED (*PFRES*)
  257. SRQF CON QBUF FWA OF STAGE REQUEST QUEUE
  258. SRQL CON 0 LENGTH OF STAGE REQUEST QUEUE
  259. SRQN CON 0 NUMBER OF ENTRIES OF STAGE REQUEST QUEUE
  260. STRA CON 0 ADDRESS OF STAGE REQUEST BEING PROCESSED
  261. SVSN CON 0 STAGING TAPE VSN
  262. SPACE 4,10
  263. * FETS.
  264.  
  265.  
  266. T BSS 0 ARCHIVE FILE
  267. TAPE FILEB TBUF,TBUFL,EPR,FET=13D
  268.  
  269. ODEB BSSZ ODEBL OPTICAL DISK EXTENSION BUFFER
  270.  
  271. F BSS 0 LOCAL/MASTER FILE
  272. FILEA FILEB MBUF,MBUFL,FET=16D
  273. .SRB BSS 0
  274. ORG F+CFPW
  275. VFD 42/0,18/EMBF ERROR MESSAGE BUFFER ADDRESS
  276. ORG F+CFSR
  277. VFD 42/0,18/SRB SPECIAL REQUEST BLOCK ADDRESS
  278. ORG .SRB
  279.  
  280. SRB BSSZ 4 SPECIAL REQUEST BLOCK
  281. EMBF BSSZ 6 ERROR MESSAGE BUFFER
  282. SPACE 4,10
  283. * INFORMATIONAL MESSAGES.
  284.  
  285.  
  286. MSCA DATA 10HCATALOGING
  287. MSCP DATA 10HCOPYING
  288. MSRS DATA 10HRESTORING
  289. MSSK DATA 10HSKIPPING
  290. BLNK DATA 30H
  291. SPACE 4,10
  292. * FILE COUNT MESSAGES.
  293.  
  294.  
  295. MSFA DATA C* ?????? FILE! CATALOGED.*
  296. MSFO DATA C* ?????? FILE! COPIED.*
  297. MSFR DATA C* ?????? FILE! RESTORED.*
  298. SPACE 4,10
  299. * ERROR MESSAGES.
  300.  
  301.  
  302. ERAB DATA C* ARCHIVE FILE BLOCK ERROR, FN=???????, UI=!!!!!!.*
  303. ERAL DATA C* ARCHIVE FILE LABEL READ ERROR.*
  304. ERAR DATA C* ARCHIVE FILE READ ERROR, FN=???????, UI=!!!!!!.*
  305. ERFL DATA C* FILE NAME CHANGED TO ZZZZZLF.*
  306. ERFS DATA C* FILE NAME CHANGED TO ZZZZZSF.*
  307. ERFT DATA C* FILE NAME CHANGED TO ZZZZZTF.*
  308. ERFV DATA C* FILE VERIFICATION ERROR, FN=???????, UI=!!!!!!, FM=+
  309. ,++++++.*
  310. ERIC DATA C* INCORRECT CATALOG SIZE.*
  311. ERDA DATA C* NO DEVICE FOR FILE ACCESS LEVEL, FN=???????, UI=!!!!
  312. ,!!.*
  313. ERNR DATA C* NO FILES TO RESTORE.*
  314. ERNT DATA C* STAGING TAPE NOT ASSIGNED.*
  315. ERPE DATA C* PREMATURE EOF DETECTED.*
  316. ERPF DATA C* PFM ERROR ENCOUNTERED, FN=???????, UI=!!!!!!, FM=+++
  317. ,++++.*
  318. ERRA DATA C* NO DEVICE FOR FILE ACCESS LEVEL, FN=???????, UI=!!!!
  319. ,!!, FM=+++++++.*
  320. ERRB DATA C* ARCHIVE FILE BLOCK ERROR, FN=???????, UI=!!!!!!, FM=
  321. ,+++++++.*
  322. ERRR DATA C* ARCHIVE FILE READ ERROR, FN=???????, UI=!!!!!!, FM=+
  323. ,++++++.*
  324. ERSA DATA C* STAGE ABANDONED, FN=???????, UI=!!!!!!, FM=+++++++.*
  325. ERVE DATA C* STAGING TAPE VSN ERROR. VSN = $$$$$$.*
  326. TITLE MAIN ROUTINES.
  327. PFA SPACE 4,10
  328. ** PFAM - MAIN PROGRAM.
  329. *
  330. * EXIT TO *AFL* TO READ ARCHIVE FILE.
  331. *
  332. * USES X - 1.
  333. * A - 1.
  334. *
  335. * CALLS PRS.
  336. *
  337. * MACROS SKIPFF.
  338.  
  339.  
  340. PFA BSS 0 ENTRY
  341. RJ PRS PRESET PROGRAM
  342. SA1 CPAR+/COMSPFS/CPSF
  343. ZR X1,AFL IF NO FILES TO SKIP
  344. SKIPFF TAPE,X1,R SKIP NUMBER OF FILES
  345. * EQ AFL PROCESS ARCHIVE FILE LABEL
  346. AFL SPACE 4,20
  347. ** AFL - PROCESS ARCHIVE FILE LABEL.
  348. *
  349. * EXIT ARCHIVE LABEL PROCESSED IF FOUND.
  350. * TO *CUP* IF NO READ ERROR ON LABEL READ.
  351. * TO *ABT* IF READ ERROR ON LABEL READ.
  352. * TO *TER* IF EOI AND IF EOF JUST PROCESSED.
  353. * TO *ABT* IF EOI NOT PRECEDED BY EOF.
  354. * TO *EAF* IF LAST ARCHIVE FILE AND NO FILES SELECTED.
  355. *
  356. * USES X - 0, 2, 1, 3, 5.
  357. * A - 0, 2, 1, 3, 5.
  358. * B - 2.
  359. *
  360. * CALLS PLP, SER.
  361. *
  362. * MACROS MOVE, READ, READW, RECALL.
  363.  
  364.  
  365. AFL BSS 0 ENTRY
  366. READ TAPE,R
  367. SA3 TAPE
  368. LX3 59-11
  369. PL X3,AFL1 IF NO ERROR
  370. SB2 ERAL * ARCHIVE FILE LABEL READ ERROR.*
  371. EQ ABT ABORT
  372.  
  373. AFL1 LX3 59-9-59+11
  374. PL X3,AFL1.1 IF NOT AT EOI
  375. SA1 EFPF
  376. NZ X1,TER IF EOF JUST PROCESSED
  377. SB2 ERPE * PREMATURE EOF DETECTED.*
  378. EQ ABT ABORT
  379.  
  380. AFL1.1 SX6 B0+ CLEAR *EOF JUST PROCESSED* FLAG
  381. SA6 EFPF
  382. SA1 TAPE+3 CHECK IF LABEL
  383. SA1 X1
  384. MX0 -3
  385. AX1 12
  386. BX1 -X0*X1
  387. ZR X1,AFL2 IF DUMP ARCHIVE LABEL
  388. SA0 B0+ SET LABEL NOT FOUND
  389. SX1 X1-1
  390. ZR X1,AFL3 IF CATALOG CONTROL WORD
  391. RJ SER SKIP TO END OF RECORD
  392. SA0 B0+ SET LABEL NOT FOUND
  393. EQ AFL3 CLEAR MESSAGE AREAS
  394.  
  395. AFL2 READW TAPE,DBUF,B1 READ LABEL CONTROL WORD
  396. SA1 DBUF GET CONTROL WORD
  397. MX0 -9
  398. BX5 -X0*X1
  399. READW TAPE,DBUF,X5 READ LABEL
  400. SA0 DBUF SET LABEL BUFFER ADDRESS
  401. AFL3 RJ PLP PROCESS LABEL PARAMETERS
  402. RECALL TAPE
  403. SA5 IDSA+/COMSPFS/ADMS CLEAR MESSAGE AREAS
  404. MOVE 3,BLNK,X5
  405. SA5 IDSA+/COMSPFS/ADER CLEAR MESSAGE AREAS
  406. MOVE 3,BLNK,X5
  407. SA1 AFDM GET ARCHIVE FILE DEVICE MASK
  408. SA2 FLSM GET REMAINING FILE SELECTIONS MASK
  409. BX1 X1*X2
  410. ZR X1,EAF IF LAST ARCHIVE FILE AND NO FILES SELECTED
  411. * EQ CUP CALL UTILITY PROCESSOR
  412. CUP SPACE 4,15
  413. ** CUP - CALL UTILITY PROCESSOR.
  414. *
  415. * ENTRY ARCHIVE FILE POSITIONED FOR READ OF CONTROL WORD.
  416. *
  417. * EXIT TO *ATC* IF *PFATC*.
  418. * TO *COP* IF *PFCOPY*.
  419. * TO *RES* IF *PFRES*.
  420. *
  421. * USES X - 1, 2.
  422. * A - 1.
  423.  
  424.  
  425. CUP BSS 0 ENTRY
  426. SA1 /COMSPFS/UTLC CHECK UTILITY CODE
  427. SX2 X1-/COMSPFS/ATUT
  428. ZR X2,ATC IF *PFATC*
  429. SX2 X1-/COMSPFS/COUT
  430. ZR X2,COP IF *PFCOPY*
  431. EQ RES PROCESS *PFRES*
  432. ATC SPACE 4,10
  433. ** ATC - *PFATC* MAIN LOOP.
  434. *
  435. * USES X - 1, 2, 4, 6.
  436. * A - 0, 1, 4, 6.
  437. *
  438. * CALLS CFB, CFC, CSP, DFN, OCD, OCI, PPE, RCW, SER.
  439. *
  440. * MACROS READW, SKIPW.
  441.  
  442.  
  443. ATC BSS 0 ENTRY
  444.  
  445. * CHECK CONTROL WORD.
  446.  
  447. ATC1 SX6 B0+
  448. SA6 FPRF CLEAR FILE PROCESSING FLAG
  449. RJ RCW READ CONTROL WORD
  450. NG X3,ATC1 IF EOR
  451. SX1 X2-1
  452. ZR X1,ATC5 IF PF CATALOG ENTRY
  453. SX1 X2-5
  454. ZR X1,ATC3 IF CIR
  455. ATC2 SKIPW TAPE,X5 SKIP BLOCK
  456. RJ SER SKIP TO EOR
  457. EQ ATC1 READ CONTROL WORD
  458.  
  459. * PROCESS CATALOG IMAGE RECORD BLOCK.
  460.  
  461. ATC3 ZR X5,ATC1 IF EMPTY BLOCK
  462. RJ CFB CHECK FOR FIRST BLOCK
  463. READW TAPE,DBUF,X5 READ CATALOG IMAGE BLOCK
  464. RJ PPE PROCESS PARITY ERROR
  465. NZ X6,ATC1 IF PARITY ERROR
  466. SX6 DBUF SET CIR BUFFER POINTER
  467. BX7 X5 SET WORD COUNT
  468. RJ OCI OUTPUT CATALOG IMAGE BLOCK
  469. EQ ATC1 READ CONTROL WORD
  470.  
  471. * PROCESS CATALOG BLOCK.
  472.  
  473. ATC5 RJ CFB CHECK IF FIRST CATALOG BLOCK
  474. RJ CFC CHECK FILES PROCESSED COUNT
  475. RJ CSP CHECK SELECTION PARAMETERS
  476. ZR X6,ATC7 IF NOT TO PROCESS FILE
  477. SA6 FPRF SET FILE PROCESSING FLAG
  478. SA1 CATH SET FILE NAME AND USER INDEX
  479. SA2 MSCA *CATALOGING ...*
  480. RJ DFN DISPLAY MESSAGE
  481. RJ VPD VERIFY PERMIT AND DATA BLOCKS
  482. SA0 CATH SET CATALOG ENTRY ADDRESS
  483. RJ CFP COUNT FILE PROCESSED
  484. EQ ATC1 CHECK NEXT CONTROL WORD
  485.  
  486. ATC7 SA1 CATH SET FILE NAME AND USER INDEX
  487. SA2 MSSK *SKIPPING ...*
  488. RJ DFN DISPLAY MESSAGE
  489. RJ SER SKIP TO END OF RECORD
  490. EQ ATC1 CHECK NEXT CONTROL WORD
  491. COP SPACE 4,10
  492. ** COP - *PFCOPY* MAIN LOOP.
  493. *
  494. * USES X - 1, 2, 6, 7.
  495. * A - 0, 1, 2, 6, 7.
  496. *
  497. * CALLS CCB, CFB, CFC, CFP, PDB, PPB, RCW, SER.
  498. *
  499. * MACROS MESSAGE, SKIPW.
  500.  
  501.  
  502. COP BSS 0 ENTRY
  503.  
  504. * CHECK NEXT CONTROL WORD.
  505.  
  506. COP1 SX6 B0+
  507. SA6 FPRF CLEAR FILE PROCESSING FLAG
  508. RJ CFC CHECK FILE SELECTION COUNT
  509. RJ RCW READ CONTROL WORD
  510. NG X3,COP1 IF EOR
  511. SX1 X2-1
  512. ZR X1,COP3 IF CATALOG CONTROL WORD
  513. SKIPW TAPE,X5 SKIP BLOCK
  514. RJ SER SKIP TO EOR
  515. EQ COP1 CHECK NEXT CONTROL WORD
  516.  
  517. COP3 RJ CFB CHECK IF FIRST CATALOG BLOCK
  518. RJ CCB PROCESS CATALOG BLOCK
  519. NZ X6,COP1 IF FILE NOT TO BE PROCESSED
  520. RJ PPB PROCESS PERMIT BLOCK
  521. NZ X6,COP1 IF PARITY ERROR
  522. RJ PDB PROCESS DATA BLOCK
  523. ZR X6,COP4 IF NO ERROR
  524. RETURN F,R RETURN LOCAL FILE
  525. EQ COP1 CHECK NEXT FILE
  526.  
  527. COP4 SA0 CATH SET CATALOG ENTRY ADDRESS
  528. RJ CFP COUNT FILE PROCESSED
  529. EQ COP1 CHECK NEXT FILE
  530. RES SPACE 4,10
  531. ** RES - *PFRES* MAIN LOOP.
  532. *
  533. * EXIT TO *TER* WHEN NO REQUESTS LEFT TO PROCESS.
  534. *
  535. * USES X - 0, 1, 2, 4, 5, 6, 7.
  536. * A - 0, 1, 2, 5, 6, 7.
  537. * B - 2, 5.
  538. *
  539. * CALLS CAR, CFP, CLC, PDB, PPE, RCB, RCW, SER, STE.
  540. *
  541. * MACROS EESET, MESSAGE, SKIPW, UNLOAD.
  542.  
  543.  
  544. RES BSS 0 ENTRY
  545.  
  546. * CHECK NEXT FILE ON TAPE.
  547.  
  548. RES1 SX6 B0+ CLEAR FILE PROCESSING FLAG
  549. SA6 FPRF
  550. RJ RCW READ CONTROL WORD
  551. NG X3,RES1 IF EOR
  552. SX1 X2-1
  553. ZR X1,RES3 IF CATALOG CONTROL WORD
  554. SX1 X2-5
  555. NZ X1,RES2 IF NOT CATALOG IMAGE RECORD
  556. SKIPW TAPE,X5 SKIP CIR BLOCK
  557. RJ SER SKIP TO EOR
  558. EQ RES1 CHECK NEXT CONTROL WORD
  559.  
  560. RES2 RJ STE SKIP TAPE ERROR
  561. EQ RES1 CHECK NEXT CONTROL WORD
  562.  
  563. RES3 RJ RCB PROCESS CATALOG BLOCK
  564. NZ X6,RES1 IF FILE NOT TO BE PROCESSED
  565.  
  566. * SKIP PERMIT BLOCKS, IF PRESENT.
  567.  
  568. RES4 RJ RCW READ CONTROL WORD
  569. BX0 X3
  570. SX4 X2-3
  571. ZR X4,RES6 IF DATA BLOCK
  572. SX4 X2-2
  573. ZR X4,RES5 IF PERMIT BLOCK
  574. SA5 STRA
  575. SB2 ERRB * ARCHIVE FILE BLOCK ERROR ...*
  576. RJ SRE SEND ERROR MESSAGE
  577. RJ STE SKIP TAPE ERROR
  578. EQ RES7 PROCESS ERROR
  579.  
  580. RES5 ZR X5,RES4 IF ZERO WORD COUNT
  581. SKIPW TAPE,X5 SKIP PERMIT BLOCK
  582. RJ PPE PROCESS PARITY ERROR
  583. NZ X6,RES7 IF PARITY ERROR
  584. EQ RES4 CHECK NEXT BLOCK
  585.  
  586. * PROCESS DATA BLOCK.
  587.  
  588. RES6 RJ PDB PROCESS DATA BLOCK
  589. ZR X6,RES8 IF NO ERROR
  590. RES7 UNLOAD F RETURN LOCAL FILE
  591. EQ RES9 CHECK FOR ADDITIONAL REQUESTS
  592.  
  593. * COMPLETE STAGE PROCESS.
  594.  
  595. RES8 RJ CLC CONNECT LOCAL FILE TO CATALOG ENTRY
  596. NZ X6,RES7 IF ERROR
  597. UNLOAD F RELEASE FILE
  598. SA1 STRA INDICATE FILE STAGED
  599. SA2 X1+3 GET EVENT
  600. MX6 -21
  601. BX1 -X6*X2
  602. EESET X1 ISSUE EVENT
  603. SB5 -ISMA ISSUE *STES* MESSAGE
  604. SA5 STRA
  605. RJ ISM
  606. SA1 STRA INDICATE STAGE REQUEST PROCESSED
  607. BX6 X6-X6
  608. SA6 X1
  609. SA6 A1
  610. SA0 CATH SET CATALOG ENTRY ADDRESS
  611. RJ CFP COUNT FILE PROCESSED
  612. RES9 RJ CAR CHECK FOR ADDITIONAL REQUESTS
  613. ZR X6,TER IF NO REQUESTS LEFT TO PROCESS
  614. EQ RES1 CHECK NEXT FILE
  615. EAF SPACE 4,20
  616. ** EAF - END PROCESSING ON CURRENT ARCHIVE FILE.
  617. *
  618. * ENTRY PROCESSING COMPLETE ON CURRENT ARCHIVE FILE.
  619. *
  620. * EXIT TO *EOF*.
  621. * ARCHIVE FILE POSITIONED TO START OF NEXT FILE.
  622. *
  623. * USES X - 1, 6, 7.
  624. * A - 1.
  625. *
  626. * MACROS RECALL, SKIPFF.
  627.  
  628.  
  629. EAF BSS 0 ENTRY
  630. RECALL TAPE
  631. SA1 X2+B1 REWIND BUFFER
  632. SX6 X1
  633. SA6 A1+B1
  634. SA6 A6+B1
  635. SA1 X2 CHECK FOR EOF/EOI ON ARCHIVE FILE
  636. SX6 30B
  637. BX7 X6*X1
  638. BX6 X7-X6
  639. ZR X6,EOF IF AT EOF/EOI
  640. SKIPFF X2,B1,R SKIP TO EOF
  641. * EQ EOF PROCESS END OF FILE
  642. EOF SPACE 4,15
  643. ** EOF - PROCESS END OF FILE ON ARCHIVE FILE.
  644. *
  645. * ENTRY END OF FILE ENCOUNTERED ON ARCHIVE FILE.
  646. *
  647. * EXIT TO *AFL* IF MORE FILES TO PROCESS.
  648. * BLOCK PROCESSED FLAGS RESET.
  649. * (EFPF) NONZERO.
  650. * TO *TER* IF NO MORE FILES TO PROCESS.
  651. *
  652. * USES X - 1, 6.
  653. * A - 1, 6.
  654. *
  655. * CALLS PSF.
  656.  
  657.  
  658. EOF BSS 0 ENTRY
  659. SA1 CAPF
  660. ZR X1,EOF1 IF CATALOG BLOCK NOT PROCESSED
  661. RJ PSF PROCESS SORTED FILE LIST AND STATISTICS
  662. EOF1 SA1 TAPE CHECK FOR *EOI*
  663. LX1 59-9
  664. NG X1,TER IF *EOI* ENCOUNTERED
  665. SA1 CPAR+/COMSPFS/CPNB CHECK IF NUMBER OF FILES SPECIFIED
  666. ZR X1,TER IF NOT SPECIFIED
  667. SX6 X1-1
  668. ZR X6,TER IF NUMBER SPECIFIED PROCESSED
  669. SA6 A1
  670. BX6 X6-X6 RESET BLOCK PROCESSED FLAGS
  671. SA6 CIPF
  672. SA6 CAPF
  673. SX6 B1+ SET *EOF JUST PROCESSED* FLAG
  674. SA6 EFPF
  675. EQ AFL PROCESS NEXT ARCHIVE FILE
  676. TER SPACE 4,20
  677. ** TER - PERFORM TERMINATION.
  678. *
  679. * EXIT TO *AFL* IF MORE STAGE REQUESTS TO PROCESS FOR *PFRES*.
  680. * TO *END* IF OVERLAY PROCESSING COMPLETE.
  681. * LOCAL FILE AND TAPE RETURNED (*PFRES*).
  682. * UNPROCESSED STAGE REQUESTS REQUEUED.
  683. *
  684. * USES X - 1, 2, 3, 6.
  685. * A - 1, 2, 6.
  686. * B - 2, 5.
  687. *
  688. * CALLS CAR, RUR, TCM.
  689. *
  690. * MACROS MESSAGE, MOVE, RETURN, REWIND.
  691.  
  692.  
  693. TER BSS 0 ENTRY
  694. SA1 /COMSPFS/UTLC
  695. SX1 X1-/COMSPFS/RSUT
  696. NZ X1,TER3 IF NOT *PFRES*
  697.  
  698. * IF STAGE REQUESTS REMAIN, REWIND TAPE AND READ FROM BEGINNING
  699. * (UNLESS NO NEW REQUESTS HAVE BEEN RECEIVED AND NO FILES HAVE
  700. * BEEN STAGED SINCE THE LAST ENTRY TO *TER*).
  701.  
  702. RJ CAR CHECK FOR ADDITIONAL STAGE REQUESTS
  703. ZR X6,TER2 IF NO MORE STAGE REQUESTS TO BE PROCESSED
  704. SA1 SRQN
  705. SA2 TERA
  706. BX6 X1
  707. SA6 A2 SAVE NUMBER OF REQUESTS RECEIVED
  708. IX3 X1-X2
  709. SA1 NSSR
  710. SA2 TERB
  711. BX6 X1
  712. SA6 A2 SAVE NUMBER OF REQUESTS SELECTED
  713. NZ X3,TER1 IF MORE REQUESTS RECEIVED SINCE LAST CALL
  714. IX1 X1-X2
  715. ZR X1,TER2 IF NO MORE FILES STAGED SINCE LAST CALL
  716. TER1 REWIND TAPE,R
  717. RJ CAR CHECK FOR ADDITIONAL STAGE REQUESTS
  718. EQ AFL PROCESS ADDITIONAL STAGE REQUESTS
  719.  
  720. TER2 RJ /MTX/TCM TERMINATE CONNECTION WITH *MAGNET*
  721. RJ RUR REQUEUE UNPROCESSED STAGE REQUESTS
  722. RETURN F,R
  723. RETURN T,R
  724.  
  725. * PROCESS *PFATC* OR *PFCOPY* TERMINATION.
  726.  
  727. TER3 EQ END TERMINATE
  728.  
  729.  
  730. TERA CON 0 STAGE REQUESTS RECEIVED BEFORE PRIOR CALL
  731. TERB CON 0 STAGE REQUESTS SELECTED BEFORE PRIOR CALL
  732. TITLE PRIMARY SUBROUTINES.
  733. CCB SPACE 4,15
  734. ** CCB - *PFCOPY* PROCESS CATALOG BLOCK.
  735. *
  736. * ENTRY (X3) = CATALOG BLOCK CONTROL WORD SUB-TYPE CODE.
  737. * (X5) = CATALOG BLOCK WORD COUNT.
  738. *
  739. * EXIT (X6) .NE. 0, IF FILE NOT TO BE PROCESSED.
  740. *
  741. * USES X - 0, 1, 2, 3, 4, 6, 7.
  742. * A - 1, 2, 3, 4, 6.
  743. *
  744. * CALLS ALD, CSP, CFE, DFN, SER, SFE.
  745. *
  746. * MACROS MESSAGE, RECALL, RETURN, WRITER, WRITEW.
  747.  
  748.  
  749. CCB SUBR ENTRY/EXIT
  750. RJ CSP CHECK SELECTION PARAMETERS
  751. ZR X6,CCB1 IF FILE NOT TO BE COPIED
  752. SA1 FLST
  753. LX1 59-0
  754. NG X1,CCB1 IF *PFC ONLY* FILE
  755. SA6 FPRF SET FILE PROCESSING FLAG
  756. EQ CCB3 SET FILE NAME IN FET
  757.  
  758. * SET SKIPPING FN UI MESSAGE.
  759.  
  760. CCB1 SA1 CATH SET FILE NAME AND USER INDEX
  761. SA2 MSSK *SKIPPING ...*
  762. RJ DFN DISPLAY MESSAGE
  763. CCB2 RJ SER SKIP TO EOR
  764. SX6 B1 INDICATE FILE NOT TO BE PROCESSED
  765. EQ CCBX RETURN
  766.  
  767. * SET FILE NAME IN FET.
  768.  
  769. CCB3 RECALL FILEA
  770. SA3 CPAR+/COMSPFS/CPMF CHECK IF MASTER FILE SPECIFIED
  771. NZ X3,CCB7 IF MASTER FILE SPECIFIED
  772. SA4 FILEA SET FILE NAME IN FET
  773. MX0 42
  774. BX7 -X0*X4 SAVE CODE AND STATUS
  775. SA3 CATH
  776. BX1 X0*X3
  777. SA2 CPAR+/COMSPFS/CPTB
  778. BX2 X2-X1
  779. NZ X2,CCB4 IF NOT ARCHIVE FILE NAME
  780. MESSAGE ERFT * FILE NAME CHANGED TO ZZZZZTF.*
  781. SA1 =0LZZZZZTF
  782. EQ CCB6 CHANGE NAME IN FET
  783.  
  784. CCB4 SA2 CPAR+/COMSPFS/CPLB
  785. BX2 X2-X1
  786. NZ X2,CCB5 IF NOT OUTPUT FILE NAME
  787. MESSAGE ERFL * FILE NAME CHANGED TO ZZZZZLF.*
  788. SA1 =0LZZZZZLF
  789. EQ CCB6 CHANGE FILE NAME IN FET
  790.  
  791. CCB5 SA2 CPAR+/COMSPFS/CPSU
  792. BX2 X2-X1
  793. NZ X2,CCB6 IF NOT SUMMARY FILE NAME
  794. MESSAGE ERFS * FILE NAME CHANGED TO ZZZZZSF.*
  795. SA1 =0LZZZZZSF
  796. CCB6 BX6 X7+X1
  797. SA6 A4
  798. RETURN FILEA,R
  799. RJ ALD ASSIGN MASS STORAGE DEVICE
  800. ZR X6,CCB7 IF DEVICE ASSIGNED
  801. SA1 CATH SET FILE NAME AND USER INDEX
  802. SA2 MSSK *SKIPPING ...*
  803. RJ DFN DISPLAY MESSAGE
  804. SA1 CATH+FCUI
  805. SB2 ERDA * NO DEVICE FOR FILE ACCESS LEVEL ...*
  806. RJ SFE SEND ERROR MESSAGE
  807. RJ CFE COUNT FILE SKIPPED
  808. EQ CCB2 SKIP FILE
  809.  
  810. * SET COPYING FN UI MESSAGE.
  811.  
  812. CCB7 SA1 CATH SET FILE NAME AND USER INDEX
  813. SA2 MSCP *COPYING ...*
  814. RJ DFN DISPLAY MESSAGE
  815.  
  816. * WRITE CATALOG PREFACE RECORD IF SELECTED.
  817.  
  818. SA1 CPAR+/COMSPFS/CPOP
  819. LX1 59-50
  820. PL X1,CCB8 IF NO PREFACE RECORDS REQUESTED
  821. WRITEW FILEA,CATH,NWCE
  822. WRITER FILEA,R
  823. CCB8 BX6 X6-X6 INDICATE FILE TO BE PROCESSED
  824. EQ CCBX
  825. CFB SPACE 4,20
  826. ** CFB - CHECK FOR FIRST BLOCK OF TYPE ON CURRENT ARCHIVE FILE.
  827. *
  828. * ENTRY (X2) = BLOCK TYPE (MUST BE 1 OR 5).
  829. * = 1 IF CATALOG ENTRY.
  830. * = 5 IF *CIR* ENTRY.
  831. * (X3) = BLOCK CONTROL WORD SUB-TYPE.
  832. * (X5) = BLOCK WORD COUNT.
  833. *
  834. * EXIT (CIPF) .NE. 0 IF *CIR* BLOCK.
  835. * (CAPF) .NE. 0 IF CATALOG BLOCK.
  836. * (X3) = BLOCK CONTROL WORD SUB-TYPE.
  837. * (X5) = BLOCK WORD COUNT.
  838. *
  839. * USES X - 2, 3, 5, 6, 7.
  840. * A - 3, 5, 6, 7.
  841. *
  842. * CALLS ICI, IFP, PSI.
  843.  
  844.  
  845. CFB SUBR ENTRY/EXIT
  846. SX2 X2-5
  847. SX1 CIPF
  848. ZR X2,CFB1 IF *CIR* TYPE
  849. SX1 CAPF
  850. CFB1 SA1 X1
  851. NZ X1,CFBX IF NOT FIRST BLOCK
  852. SX6 B1 SET FIRST BLOCK FOUND
  853. SA6 A1+
  854. BX6 X3
  855. BX7 X5
  856. SA6 CFBA SAVE BLOCK SUB-TYPE
  857. SA7 CFBB SAVE WORD COUNT
  858. NZ X2,CFB2 IF NOT CIR BLOCK
  859. RJ ICI INITIALIZE CIR OUTPUT
  860. EQ CFB4 RESET BLOCK PARAMETERS
  861.  
  862. CFB2 SA1 CIPF
  863. ZR X1,CFB3 IF CIR NOT PROCESSED
  864. RJ PSI PROCESS SORTED CIR OUTPUT
  865. CFB3 RJ IFL INITIALIZE CATALOG OUTPUT
  866. CFB4 SA3 CFBA RESTORE SUB-TYPE
  867. SA5 CFBB RESTORE WORD COUNT
  868. EQ CFBX RETURN
  869.  
  870. CFBA CON 0 BLOCK SUB-TYPE
  871. CFBB CON 0 BLOCK WORD COUNT
  872. PDB SPACE 4,20
  873. ** PDB - PROCESS DATA BLOCK.
  874. *
  875. * ENTRY NON-PERMIT CONTROL WORD READ.
  876. * (X3) = CONTROL WORD SUB-TYPE.
  877. * = -1, IF EOR WAS ENCOUNTERED.
  878. * (DBUF) = CONTROL WORD.
  879. *
  880. * EXIT (X6) .NE. 0, IF READ ERROR OR ARCHIVE FILE ERROR.
  881. * DATA BLOCK PROCESSED.
  882. *
  883. * USES X - 0, 1, 2, 6, 7.
  884. * A - 1, 2, 6, 7.
  885. *
  886. * CALLS PPE, RCW, STE.
  887. *
  888. * MACROS MESSAGE, READW, RECALL, SETFS, WRITE, WRITEF, WRITER,
  889. * WRITEW.
  890.  
  891.  
  892. PDB SUBR ENTRY/EXIT
  893. RECALL FILEA
  894. BX6 X6-X6 CLEAR EOF FLAG
  895. SX7 B1 SET FILE PROCESSED FLAG
  896. SA6 PDBA
  897. SX6 SSLN INITIALIZE REMAINING SYSTEM SECTOR LENGTH
  898. SA6 PDBD
  899. EQ PDB2 PROCESS SYSTEM SECTOR
  900.  
  901. * READ CONTROL WORD.
  902.  
  903. PDB1 RJ RCW READ CONTROL WORD
  904. PDB2 NG X3,PDB12 IF EOR
  905. SA1 DBUF CHECK DATA CONTROL WORD
  906. AX1 12
  907. MX0 -3
  908. BX1 -X0*X1
  909. SX1 X1-3
  910. ZR X1,PDB5 IF DATA BLOCK
  911.  
  912. * PROCESS ERROR IN ARCHIVE FILE.
  913.  
  914. PDB3 SA1 /COMSPFS/UTLC
  915. SX1 X1-/COMSPFS/RSUT
  916. ZR X1,PDB4 IF *PFRES*
  917. SA1 CATH+FCUI
  918. SB2 ERAB * ARCHIVE FILE BLOCK ERROR... *
  919. RJ SFE SEND ERROR MESSAGE
  920. EQ PDB4.1 SKIP TAPE ERROR
  921.  
  922. PDB4 SA5 STRA
  923. SB2 ERRB * ARCHIVE FILE BLOCK ERROR... *
  924. RJ SRE SEND ERROR MESSAGE
  925. PDB4.1 RJ STE SKIP TAPE ERROR
  926. SX6 B1 INDICATE ERROR
  927. EQ PDBX RETURN
  928.  
  929. * READ DATA.
  930.  
  931. PDB5 BX0 X3
  932. BX6 X3 SAVE DATA MARK
  933. SA6 PDBC
  934. ZR X5,PDB10 IF ZERO WORD COUNT
  935. READW TAPE,DBUF,X5
  936. RJ PPE PROCESS PARITY ERROR
  937. NZ X6,PDBX IF PARITY ERROR
  938.  
  939. * SKIP OVER SYSTEM SECTOR.
  940.  
  941. SA1 PDBD GET REMAINING SYSTEM SECTOR LENGTH
  942. SX2 X0-4
  943. BX6 X1+X2
  944. ZR X6,PDB3 IF EXTRA SYSTEM SECTOR (NOT AT BOI)
  945. ZR X2,PDB7 IF SYSTEM SECTOR
  946. ZR X1,PDB9 IF SYSTEM SECTOR ALREADY PROCESSED
  947. SX7 X1-SSLN
  948. NZ X7,PDB3 IF SYSTEM SECTOR TRUNCATED
  949. SA7 PDBD CLEAR REMAINING SYSTEM SECTOR LENGTH
  950. EQ PDB9 WRITE DATA SECTOR
  951.  
  952. PDB7 IX7 X1-X5
  953. NG X7,PDB3 IF SYSTEM SECTOR TOO LONG
  954. SA7 A1 UPDATE REMAINING SYSTEM SECTOR LENGTH
  955. EQ PDB1 BYPASS SYSTEM SECTOR
  956.  
  957. * WRITE DATA.
  958.  
  959. PDB9 WRITEW FILEA,DBUF,X5
  960.  
  961. * PROCESS DATA MARK.
  962.  
  963. PDB10 ZR X0,PDB1 IF NO DATA MARK
  964. SX2 X0-4
  965. ZR X2,PDB1 IF SYSTEM SECTOR
  966. SX0 X0-1
  967. NZ X0,PDB11 IF END OF FILE
  968. WRITER FILEA,R
  969. EQ PDB1 READ NEXT CONTROL WORD
  970.  
  971. PDB11 WRITEF FILEA,R
  972. SX6 B1+ SET EOF FLAG
  973. SA6 PDBA
  974. EQ PDB1 READ NEXT CONTROL WORD
  975.  
  976. * PROCESS FILES WITH NO EOF.
  977.  
  978. PDB12 SETFS FILEA,0 CLEAR SPECIAL FILE STATUS
  979. SA1 PDBA CHECK EOF FLAG
  980. NZ X1,PDB13 IF EOF FLAG SET
  981. SA1 PDBC CHECK LAST DATA MARK
  982. NZ X1,PDB13 IF EOR, RETURN
  983. WRITE FILEA,R
  984. SA1 FILEA+2 CHECK FOR EMPTY BUFFER
  985. SA2 A1+B1
  986. IX7 X1-X2 IN - OUT
  987. ZR X7,PDB13 IF BUFFER FLUSHED, RETURN
  988. WRITER FILEA,R
  989. PDB13 BX6 X6-X6 INDICATE NO ERROR
  990. EQ PDBX RETURN
  991.  
  992.  
  993. PDBA CON 0 EOF FLAG
  994. PDBC CON 0 LAST DATA MARK
  995. PDBD CON 0 REMAINING SYSTEM SECTOR LENGTH
  996. PPB SPACE 4,20
  997. ** PPB - PROCESS PERMIT BLOCK (*PFCOPY*).
  998. *
  999. * ENTRY CATALOG BLOCK PROCESSED.
  1000. *
  1001. * EXIT (X6) .NE. 0, IF PARITY ERROR.
  1002. * PERMIT BLOCK PROCESSED.
  1003. * NON-PERMIT CONTROL WORD READ.
  1004. * (X3) = CONTROL WORD SUB-TYPE.
  1005. * = -1, IF EOR WAS ENCOUNTERED.
  1006. *
  1007. * USES X - 0, 1, 4, 6.
  1008. * A - 1, 6.
  1009. *
  1010. * CALLS PPE, RCW.
  1011. *
  1012. * MACROS READW, RECALL, WRITER, WRITEW.
  1013.  
  1014.  
  1015. PPB SUBR ENTRY/EXIT
  1016. RECALL F
  1017. SX6 B0+ CLEAR PERMIT FLAG
  1018. SA6 PPBA
  1019.  
  1020. * CHECK IF PERMIT BLOCK.
  1021.  
  1022. PPB1 RJ RCW READ CONTROL WORD
  1023. BX0 X3
  1024. SX4 X2-2
  1025. ZR X4,PPB3 IF PERMIT BLOCK
  1026. SA1 PPBA
  1027. NZ X1,PPB2 IF PERMITS EXIST
  1028.  
  1029. * WRITE ZERO LENGTH RECORD IF PREFACE RECORDS REQUESTED.
  1030.  
  1031. SA1 CPAR+/COMSPFS/CPOP
  1032. LX1 59-50
  1033. PL X1,PPB2 IF NO PREFACE RECORD
  1034. WRITER FILEA,R
  1035. PPB2 BX6 X6-X6 INDICATE NO ERROR
  1036. EQ PPBX RETURN
  1037.  
  1038. * READ PERMIT INFORMATION.
  1039.  
  1040. PPB3 ZR X5,PPB1 IF ZERO WORD COUNT
  1041. SX6 B1 SET PERMIT FLAG
  1042. SA6 PPBA
  1043. READW TAPE,DBUF,X5 READ PERMIT BLOCK
  1044. RJ PPE PROCESS PARITY ERROR
  1045. NZ X6,PPBX IF PARITY ERROR
  1046.  
  1047. * WRITE PERMIT PREFACE RECORD.
  1048.  
  1049. SA1 CPAR+/COMSPFS/CPOP
  1050. LX1 59-50
  1051. PL X1,PPB1 IF NO PREFACE RECORD REQUESTED
  1052. WRITEW FILEA,DBUF,X5
  1053. ZR X0,PPB1 IF NO DATA MARK
  1054. WRITER FILEA,R
  1055. EQ PPB1 READ NEXT CONTROL WORD
  1056.  
  1057.  
  1058. PPBA BSSZ 1 PERMIT FLAG
  1059. RCB SPACE 4,20
  1060. ** RCB - *PFRES* PROCESS CATALOG BLOCK.
  1061. *
  1062. * ENTRY (X3) = CATALOG BLOCK CONTROL WORD SUB-TYPE CODE.
  1063. * (X5) = CATALOG BLOCK WORD COUNT.
  1064. *
  1065. * EXIT (X6) = 0, IF FILE IS TO BE PROCESSED.
  1066. * (CATH) = CATALOG ENTRY FOR FILE.
  1067. * TO *ABT* IF INCORRECT CATALOG SIZE.
  1068. * TO *TER* IF FILE SKIPPED AND NO MORE REQUESTS.
  1069. *
  1070. * USES X - 0, 1, 2, 5, 6.
  1071. * A - 1, 5, 6.
  1072. * B - 2.
  1073. *
  1074. * CALLS ALD, APD, CAR, CSR, DFN, PPE, SEM, SRE, SSR, VCE.
  1075. *
  1076. * MACROS RECALL, RETURN, WRITER, WRITEW.
  1077.  
  1078.  
  1079. RCB SUBR ENTRY/EXIT
  1080. SX1 X5-NWCE
  1081. ZR X1,RCB1 IF CORRECT SIZE CATALOG ENTRY
  1082. SB2 ERIC * INCORRECT CATALOG SIZE.*
  1083. EQ ABT ABORT
  1084.  
  1085. RCB1 SX0 X3 SAVE *PFC ONLY* STATUS
  1086. READW TAPE,CATH,X5 READ CATALOG ENTRY
  1087. RJ PPE PROCESS PARITY ERROR
  1088. NZ X6,RCB3 IF PARITY ERROR ON CATALOG READ
  1089. NZ X0,RCB4 IF NOT *PFC ONLY* FILE
  1090.  
  1091. * SKIP FILE.
  1092.  
  1093. RCB2 SA1 CATH SET FILE NAME AND USER INDEX
  1094. SA2 MSSK *SKIPPING ...*
  1095. RJ DFN DISPLAY MESSAGE
  1096. RJ SER SKIP TO EOR
  1097. RJ CAR CHECK FOR ADDITIONAL STAGE REQUESTS
  1098. ZR X6,TER IF NO REQUESTS REMAIN TO BE PROCESSED
  1099. RCB3 SX6 B1 INDICATE THAT FILE IS NOT TO BE PROCESSED
  1100. EQ RCBX RETURN
  1101.  
  1102. * CHECK IF FILE IS TO BE STAGED.
  1103.  
  1104. RCB4 RJ CSR CHECK FOR STAGE REQUEST FOR THIS FILE
  1105. ZR X6,RCB2 IF NO STAGE REQUEST FOR THIS FILE
  1106. RJ VCE VERIFY CATALOG ENTRY FIELDS
  1107. NZ X6,RCB2 IF ACTIVE PFC DOES NOT MATCH PFC ON TAPE
  1108.  
  1109. * SET UP TO STAGE FILE.
  1110.  
  1111. SX6 1
  1112. SA6 FPRF SET FILE PROCESSING FLAG
  1113. RJ SSR SETUP *PFM* SPECIAL REQUEST BLOCK
  1114. SA1 CATH+FCBS
  1115. LX1 59-11
  1116. PL X1,RCB5 IF INDIRECT ACCESS FILE
  1117. RJ APD ASSIGN PERMANENT FILE DEVICE
  1118. ZR X6,RCB7 IF DEVICE ASSIGNED
  1119. EQ RCB6 PROCESS NO DEVICE FOUND
  1120.  
  1121. RCB5 RJ ALD ASSIGN LOCAL FILE DEVICE
  1122. ZR X6,RCB7 IF DEVICE ASSIGNED
  1123. RCB6 SA5 STRA
  1124. SB2 ERRA * NO DEVICE FOR FILE ACCESS LEVEL ...*
  1125. RJ SRE SEND ERROR MESSAGE
  1126. EQ RCB2 SKIP FILE
  1127.  
  1128. * SET *RESTORING FN UI* MESSAGE.
  1129.  
  1130. RCB7 SA1 STRA SET FILE NAME AND USER INDEX
  1131. SA1 X1+2
  1132. SA2 MSRS *RESTORING ...*
  1133. RJ DFN DISPLAY MESSAGE
  1134. BX6 X6-X6 INDICATE THAT FILE IS TO BE PROCESSED
  1135. EQ RCBX RETURN
  1136. RCW SPACE 4,25
  1137. ** RCW - READ CONTROL WORD.
  1138. *
  1139. * EXIT (X2) = CONTROL WORD TYPE.
  1140. * (X3) = CONTROL WORD SUB-TYPE.
  1141. * = -1, IF EOR.
  1142. * (DBUF) = CONTROL WORD.
  1143. * (X5) = WORD COUNT.
  1144. * TO *EAF* IF END OF DUMP CONTROL WORD.
  1145. * TO *CUP* IF PARITY ERROR.
  1146. * TO *ABT* IF EOF BEFORE END OF DUMP CONTROL WORD.
  1147. *
  1148. * USES X - 0, 1, 2, 3, 5.
  1149. * A - 1.
  1150. * B - 2.
  1151. *
  1152. * CALLS PPE.
  1153. *
  1154. * MACROS MESSAGE, READ, READW.
  1155.  
  1156.  
  1157. RCW SUBR ENTRY/EXIT
  1158. READW TAPE,DBUF,B1
  1159. RJ PPE PROCESS PARITY ERROR
  1160. NZ X6,CUP IF PARITY ERROR
  1161. SB2 ERPE * PREMATURE EOF DETECTED.*
  1162. NG X1,ABT IF EOF
  1163. ZR X1,RCW1 IF NOT EOR
  1164.  
  1165. * PROCESS END OF RECORD.
  1166.  
  1167. READ TAPE
  1168. RJ PPE PROCESS PARITY ERROR
  1169. SX3 -1 SET EOR
  1170. ZR X6,RCWX IF NO PARITY ERROR
  1171. EQ CUP CALL UTILITY PROCESSOR
  1172.  
  1173. * BREAK UP CONTROL WORD.
  1174.  
  1175. RCW1 SA1 DBUF BREAK APART CONTROL WORD
  1176. MX0 -9
  1177. BX5 -X0*X1 MASK OFF WORD COUNT
  1178. AX0 6
  1179. AX1 9
  1180. BX3 -X0*X1 MASK OFF SUB-TYPE CODE
  1181. AX1 3
  1182. BX2 -X0*X1 MASK OFF TYPE CODE
  1183. SX1 X2-7
  1184. ZR X1,EAF IF END OF ARCHIVE FILE CONTROL WORD
  1185. EQ RCWX RETURN
  1186. VPD SPACE 4,20
  1187. ** VPD - VERIFY PERMIT AND DATA BLOCKS.
  1188. *
  1189. * ENTRY CATALOG ENTRY IN *CATH*.
  1190. *
  1191. * EXIT PERMIT OR DATA ERROR FLAGS SET IN *FLST* IF ERROR
  1192. * BLOCKS PRESENT ON ARCHIVE FILE.
  1193. * ERROR MESSAGES ISSUED IF FILE PERMITS OR DATA
  1194. * UNREADABLE OR LOGIGAL ERROR IN PERMIT OR DATA
  1195. * BLOCKS.
  1196. *
  1197. * USES X - 1, 2, 4, 6, 7.
  1198. * A - 1, 2, 6, 7.
  1199. *
  1200. * CALLS RCW, SFE, STE.
  1201. *
  1202. * MACROS READW.
  1203.  
  1204.  
  1205. VPD SUBR ENTRY/EXIT
  1206.  
  1207. * CHECK CONSISTENCY OF PFC AND PERMITS BLOCKS.
  1208.  
  1209. RJ RCW READ CONTROL WORD
  1210. SA1 CATH+FCRI GET PERMITS RANDOM INDEX
  1211. SX7 X2-2 CHECK FOR PERMITS BLOCK
  1212. MX6 -24
  1213. LX1 24
  1214. BX1 -X6*X1
  1215. NZ X1,VPD1 IF PERMITS IN CATALOG
  1216. NG X3,VPD4 IF EOR ON ARCHIVE FILE
  1217. NZ X7,VPD4 IF NOT PERMITS BLOCK
  1218. EQ VPD9 PROCESS ARCHIVE FILE ERROR
  1219.  
  1220. VPD1 NG X3,VPD9 IF EOR ON ARCHIVE FILE
  1221. NZ X7,VPD9 IF NOT PERMITS BLOCK
  1222.  
  1223. * CHECK FOR ERROR STATUS IN PERMITS BLOCKS.
  1224.  
  1225. VPD2 SA1 DBUF
  1226. MX6 -3
  1227. LX1 -15
  1228. BX6 -X6*X1
  1229. ZR X6,VPD3 IF NOT ERROR BLOCK
  1230. SA1 FLST SET PERMIT ERROR IN FILE STATUS
  1231. SX6 4
  1232. BX6 X1+X6
  1233. SA6 A1
  1234. VPD3 READW TAPE,DBUF,X5 READ PERMITS BLOCK
  1235. RJ PPE PROCESS PARITY ERROR
  1236. NZ X6,VPDX IF PARITY ERROR
  1237. RJ RCW READ NEXT CONTROL WORD
  1238. NG X3,VPD4 IF EOR ON ARCHIVE FILE
  1239. SX7 X2-2
  1240. ZR X7,VPD2 IF PERMITS BLOCK
  1241.  
  1242. * CHECK CONSISTENCY OF PFC AND DATA BLOCKS.
  1243.  
  1244. VPD4 SA1 FLST GET *PFC ONLY* FLAG
  1245. LX1 59-0
  1246. PL X1,VPD5 IF NOT *PFC ONLY* FILE
  1247. NG X3,VPDX IF EOR ON ARCHIVE FILE
  1248. EQ VPD9 PROCESS ARCHIVE FILE ERROR
  1249.  
  1250. VPD5 NG X3,VPD9 IF EOR ON ARCHIVE FILE
  1251. SX7 X2-3
  1252. NZ X7,VPD9 IF NOT DATA BLOCK
  1253.  
  1254. * CHECK FOR ERROR STATUS IN DATA BLOCKS.
  1255.  
  1256. VPD6 SA1 DBUF
  1257. SA2 VPDA
  1258. MX6 42
  1259. MX7 -3
  1260. BX6 X6*X1
  1261. LX1 -15
  1262. BX6 X6-X2
  1263. BX7 -X7*X1 EXTRACT ERROR TYPE
  1264. NZ X6,VPD8 IF NOT ERROR BLOCK
  1265. SA1 FLST
  1266. SX6 10B SET TRUNCATED FILE
  1267. ZR X7,VPD7 IF TRUNCATED FILE ERROR
  1268. SX6 2 SET ERROR IN DATA
  1269. VPD7 BX6 X1+X6
  1270. SA6 FLST
  1271. VPD8 READW TAPE,DBUF,X5 READ DATA BLOCK
  1272. RJ PPE PROCESS PARITY ERROR
  1273. NZ X6,VPDX IF PARITY ERROR
  1274. RJ RCW READ NEXT CONTROL WORD
  1275. NG X3,VPDX IF EOR ON ARCHIVE FILE
  1276. SX7 X2-3
  1277. ZR X7,VPD6 IF DATA BLOCK
  1278.  
  1279. * PROCESS ARCHIVE FILE ERROR.
  1280.  
  1281. VPD9 BX7 X3 SAVE EOR STATUS
  1282. SA7 VPDB
  1283. SA1 CATH+FCUI
  1284. SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...*
  1285. RJ SFE SEND ERROR MESSAGE
  1286. SA3 VPDB
  1287. NG X3,VPDX IF EOR ON ARCHIVE FILE
  1288. RJ STE SKIP TO END OF RECORD
  1289. EQ VPDX RETURN
  1290.  
  1291.  
  1292. VPDA VFD 42/7LERROR**,18/0
  1293. VPDB CON 0 ARCHIVE FILE EOR STATUS
  1294. TITLE GENERAL SUBROUTINES.
  1295. APR SPACE 4,15
  1296. ** APR - ABORT PROCESSOR.
  1297. *
  1298. * ENTRY CONTROL POINT OR PROGRAM FATAL ERROR DETECTED.
  1299. *
  1300. * EXIT FILES RETURNED (*PFRES*).
  1301. * UNPROCESSED STAGE REQUESTS FOR THIS VSN REQUEUED
  1302. * (*PFRES).
  1303. *
  1304. * USES X - 1.
  1305. * A - 1.
  1306. *
  1307. * CALLS CAR, RUR, /MTX/TCM.
  1308. *
  1309. * MACROS RETURN.
  1310.  
  1311.  
  1312. APR SUBR 0 ENTRY/EXIT
  1313. SA1 /COMSPFS/UTLC
  1314. SX1 X1-/COMSPFS/RSUT
  1315. NZ X1,APRX IF NOT *PFRES*
  1316.  
  1317. * PROCESS *PFRES* ABORT. GET ANY ADDITIONAL STAGE REQUESTS FOR
  1318. * THIS VSN FROM *MAGNET*, THEN TERMINATE CONNECTION AND REQUEUE
  1319. * UNPROCESSED REQUESTS.
  1320.  
  1321. APR1 RJ CAR GET ADDITIONAL REQUESTS FOR THIS VSN
  1322. GT B6,B0,APR1 IF ADDITIONAL REQUEST FOUND
  1323. RJ /MTX/TCM TERMINATE CONNECTION WITH *MAGNET*
  1324. RJ RUR REQUEUE UNPROCESSED STAGE REQUESTS
  1325. RETURN F,R RETURN LOCAL FILE
  1326. RETURN T,R RETURN TAPE
  1327. SA1 SRFF
  1328. ZR X1,APRX IF STAGE REQUEST FILE NOT ATTACHED
  1329. RETURN R,R RETURN STAGE REQUEST FILE
  1330. EQ APRX RETURN
  1331. ALD SPACE 4,15
  1332. ** ALD - ASSIGN LOCAL FILE DEVICE.
  1333. *
  1334. * ENTRY (CATH) = PFC ENTRY.
  1335. * (SYSS) = SYSTEM SECURITY MODE.
  1336. *
  1337. * EXIT (X6) = 0, IF DEVICE FOUND FOR FILE.
  1338. *
  1339. * USES X - 0, 1, 6.
  1340. * A - 1.
  1341. *
  1342. * CALLS SAF.
  1343. *
  1344. * MACROS RECALL, REQUEST, SETFET.
  1345.  
  1346.  
  1347. ALD SUBR ENTRY/EXIT
  1348. RECALL F
  1349. SX6 B0+ SET NO ERROR
  1350. SA1 SYSS
  1351. ZR X1,ALDX IF NOT SECURED SYSTEM
  1352. RJ SAF SET ACCESS LEVEL IN FET
  1353. SETFET F,ERP=E,DTY==2RMS SET ERROR PROCESSING, DEVICE TYPE
  1354. REQUEST F,U,N
  1355. SETFET F,ERP=0 CLEAR ERROR PROCESSING
  1356. SA1 F RETURN ERROR STATUS
  1357. LX1 -10
  1358. MX0 -8
  1359. BX6 -X0*X1
  1360. EQ ALDX RETURN
  1361. APD SPACE 4,15
  1362. ** APD - ASSIGN PERMANENT FILE DEVICE.
  1363. *
  1364. * ENTRY (CATH) = PFC ENTRY.
  1365. * (SYSS) = SYSTEM SECURITY MODE.
  1366. *
  1367. * EXIT (X6) = 0, IF DEVICE FOUND FOR FILE.
  1368. *
  1369. * USES X - 0, 1, 6.
  1370. * A - 1.
  1371. *
  1372. * CALLS SAF.
  1373. *
  1374. * MACROS ASSIGNPF, RECALL, SETFET.
  1375.  
  1376.  
  1377. APD SUBR ENTRY/EXIT
  1378. RECALL F
  1379. SA1 SYSS
  1380. ZR X1,APD1 IF NOT SECURED SYSTEM
  1381. RJ SAF SET ACCESS LEVEL IN FET
  1382. APD1 SETFET F,ERP=UE,DTY=0 SET ERROR PROCESSING, CLEAR DEVICE TYPE
  1383. SX6 SRSY*10000B *SET SYSTEM SECTOR* SPECIAL REQUEST
  1384. SA6 F+8
  1385. ASSIGNPF F
  1386. SETFET F,ERP=0 CLEAR ERROR PROCESSING
  1387. BX6 X6-X6 CLEAR SPECIAL REQUEST
  1388. SA6 F+8
  1389. SA1 F RETURN ERROR STATUS
  1390. LX1 -10
  1391. MX0 -8
  1392. BX6 -X0*X1
  1393. EQ APDX RETURN
  1394. ARQ SPACE 4,15
  1395. ** ARQ - ADD STAGE REQUEST TO QUEUE.
  1396. *
  1397. * ENTRY (B6) = FWA OF REQUEST TO ENTER.
  1398. *
  1399. * EXIT STAGE REQUEST ADDED TO QUEUE, IF NOT DUPLICATE.
  1400. * FIELD LENGTH INCREASED IF NECESSARY.
  1401. *
  1402. * USES X - 0, 1, 2, 3, 4, 6, 7.
  1403. * A - 1, 2, 3, 4, 6, 7.
  1404. * B - 5, 7.
  1405. *
  1406. * MACROS MEMORY, MOVE.
  1407.  
  1408.  
  1409. ARQ SUBR ENTRY/EXIT
  1410. SA3 SRQL
  1411. SA2 SRQF
  1412. SB7 X3+B1 VSN / SEQUENCE NUMBER WORD OF QUEUE ENTRY
  1413. SA4 B6+B1 VSN / SEQUENCE NUMBER OF NEW REQUEST
  1414. SB5 /MTX/PFTBL LENGTH OF STAGE REQUEST
  1415. MX0 -42
  1416. ARQ1 SB7 B7-B5 CHECK PREVIOUS ENTRY
  1417. NG B7,ARQ2 IF NO MORE ENTRIES
  1418. SA1 X2+B7
  1419. BX6 X1-X4
  1420. BX6 -X0*X6
  1421. NZ X6,ARQ1 IF VSN / SEQUENCE NUMBER DO NOT MATCH
  1422. EQ ARQX DUPLICATE REQUEST (IGNORE)
  1423.  
  1424. ARQ2 IX3 X2+X3 ADD REQUEST TO QUEUE
  1425. MOVE B5,B6,X3
  1426. SA1 SRQN UPDATE NUMBER OF ENTRIES
  1427. SX6 X1+B1
  1428. SA6 A1
  1429. SA1 SRQL UPDATE LENGTH
  1430. SX6 X1+B5
  1431. SA6 A1
  1432. SA1 SRQF CHECK REMAINING AVAILABLE MEMORY
  1433. SX6 X6+2*/MTX/PFTBL+8
  1434. IX1 X1+X6
  1435. SA2 MSTAT
  1436. AX2 30
  1437. IX3 X2-X1
  1438. PL X3,ARQX IF ENOUGH MEMORY FOR TWO MORE REQUESTS
  1439. MEMORY CM,MSTAT,R,X1+MEMI INCREASE FIELD LENGTH
  1440. EQ ARQX RETURN
  1441. CAR SPACE 4,15
  1442. ** CAR - CHECK FOR ADDITIONAL STAGE REQUESTS.
  1443. *
  1444. * CALLS *GSR* IF FOUR SECONDS HAVE ELAPSED SINCE LAST CALL,
  1445. * OR IF NO MORE REQUESTS REMAIN TO BE PROCESSED.
  1446. *
  1447. * EXIT (B6) .GT. 0, IF NEW REQUEST FOUND.
  1448. * (X6) = 0, IF NO REQUESTS LEFT TO PROCESS.
  1449. *
  1450. * USES X - 1, 2, 3, 6.
  1451. * A - 1, 2, 6.
  1452. *
  1453. * CALLS ARQ, GSR.
  1454. *
  1455. * MACROS RTIME.
  1456.  
  1457.  
  1458. CAR2 SA1 NSSR RETURN NUMBER OF REQUESTS LEFT TO PROCESS
  1459. SA2 SRQN
  1460. IX6 X2-X1
  1461.  
  1462.  
  1463. CAR SUBR ENTRY/EXIT
  1464. SA1 NSSR NUMBER OF REQUESTS SELECTED
  1465. SA2 SRQN NUMBER OF ENTRIES IN TABLE
  1466. IX1 X2-X1 NUMBER OF FILES YET TO BE PROCESSED
  1467. ZR X1,CAR1 IF ALL FILES PROCESSED (IMMEDIATE CHECK)
  1468. RTIME CARA+1 GET CURRENT TIME
  1469. SA1 CARA
  1470. SA2 CARA+1
  1471. IX1 X2-X1
  1472. AX1 36
  1473. SX3 X1-4
  1474. BX6 X2
  1475. NG X3,CARX IF NOT 4 SECONDS SINCE LAST *GSR* CALL
  1476. SA6 A1 UPDATE TIME
  1477. CAR1 RJ /MTX/GSR SEE IF MORE REQUESTS
  1478. LE B6,B0,CAR2 IF NO REQUESTS
  1479. RJ ARQ ADD REQUEST
  1480. EQ CAR1 GET NEXT REQUEST
  1481.  
  1482.  
  1483. CARA BSSZ 2 ENTRY TIME VALUES
  1484. CFC SPACE 4,10
  1485. ** CFC - CHECK FILES PROCESSED COUNT.
  1486. *
  1487. * EXIT TO CALLER IF NO FILE SELECTIONS OR ALL SELECTED FILES
  1488. * NOT PROCESSED.
  1489. * TO *TER* IF ALL SELECTED FILES PROCESSED.
  1490. *
  1491. * USES X - 1, 2.
  1492. * A - 1, 2.
  1493.  
  1494.  
  1495. CFC SUBR ENTRY/EXIT
  1496. SA1 /COMSPFS/FISP
  1497. SA2 /COMSPFS/NFIS
  1498. ZR X1,CFCX IF NO USER INDEX/FILE NAME SELECTIONS
  1499. NZ X2,CFCX IF ALL SPECIFIED FILES NOT PROCESSED
  1500. EQ TER TERMINATE
  1501. CLC SPACE 4,15
  1502. ** CLC - CONNECT LOCAL FILE TO CATALOG ENTRY.
  1503. *
  1504. * EXIT (X6) .NE. 0, IF ERROR.
  1505. *
  1506. * USES X - 1, 5, 6.
  1507. * A - 1, 5.
  1508. *
  1509. * CALLS SRE.
  1510. *
  1511. * MACROS MESSAGE, RECALL, ROLLOUT, SETDA, SETFET, UREPLAC.
  1512.  
  1513.  
  1514. CLC7 SETFET F,ERP=0 CLEAR ERROR PROCESSING
  1515. BX6 X6-X6 INDICATE NO ERROR
  1516.  
  1517.  
  1518. CLC SUBR ENTRY/EXIT
  1519. SETFET F,ERP=UE SET *EP* AND *UP*
  1520. CLC1 SA1 CATH+FCBS
  1521. LX1 59-11
  1522. PL X1,CLC2 IF INDIRECT ACCESS FILE
  1523. SETDA F SET DISK ADDRESS FOR DIRECT ACCESS FILE
  1524. EQ CLC3 CHECK *PFM* STATUS
  1525.  
  1526. CLC2 UREPLAC F UTILITY-REPLACE INDIRECT ACCESS FILE
  1527. RECALL X2
  1528. CLC3 SA1 X2 CHECK FOR *PFM* ERROR
  1529. MX6 -8
  1530. LX1 -10
  1531. BX6 -X6*X1
  1532. ZR X6,CLC7 IF NO ERROR
  1533.  
  1534. * PFM ERROR ENCOUNTERED. IF ERROR IS THE RESULT OF SYSTEM
  1535. * ACTIVITY, DELAY AND RETRY. IF ERROR COULD BE THE RESULT
  1536. * OF THE USER MODIFYING OR DELETING THE FILE, ABANDON STAGE
  1537. * WITH NO MESSAGE. OTHERWISE, ISSUE ERROR MESSAGE AND
  1538. * ABANDON STAGE.
  1539.  
  1540. CLC4 SX1 X6-/ERRMSG/INA
  1541. ZR X1,CLC5 IF *INTERLOCK NOT AVAILABLE*
  1542. SX1 X6-/ERRMSG/PFA
  1543. ZR X1,CLC6 IF *PF UTILITY ACTIVE*
  1544. SX1 X6-/ERRMSG/FNF
  1545. ZR X1,CLC7 IF *FILE NOT FOUND*
  1546. SX1 X6-/ERRMSG/ICU
  1547. ZR X1,CLC7 IF *INVALID CATALOG UPDATE*
  1548. SX1 X6-/ERRMSG/PVE
  1549. ZR X1,CLC7 IF *PFC VERIFICATION ERROR*
  1550. SA5 STRA SET STAGE REQUEST ADDRESS
  1551. SB2 ERPF * PFM ERROR ENCOUNTERED ...*
  1552. RJ SRE SEND ERROR MESSAGE
  1553. MESSAGE EMBF,,R SEND *PFM* ERROR MESSAGE TO SYSTEM DAYFILE
  1554. SX6 B1 INDICATE ERROR
  1555. EQ CLCX RETURN ERROR STATUS
  1556.  
  1557. * PROCESS *INTERLOCK NOT AVAILABLE.*
  1558.  
  1559. CLC5 RECALL GIVE UP CPU
  1560. EQ CLC1 TRY AGAIN
  1561.  
  1562. * PROCESS *PF UTILITY ACTIVE.*
  1563.  
  1564. CLC6 ROLLOUT WAIT FOR UTILITY
  1565. RECALL
  1566. EQ CLC1 TRY AGAIN
  1567. CSP SPACE 4,25
  1568. ** CSP - CHECK SELECTION PARAMETERS.
  1569. *
  1570. * ENTRY (X3) = CATALOG BLOCK CONTROL WORD SUB-TYPE CODE.
  1571. * (X5) = CATALOG BLOCK WORD COUNT.
  1572. *
  1573. * EXIT (X6) .NE. 0 IF FILE TO BE PROCESSED.
  1574. * CATALOG ENTRY CONVERTED TO 16 WORD FORMAT IF 8 WORD
  1575. * FORMAT.
  1576. * (FLST) = 0 IF NOT *PFC* ONLY FILE
  1577. * (FLST) = 59/0, 1/1 IF *PFC ONLY* FILE.
  1578. * (NFIS) = UPDATED FILE SELECTION COUNT.
  1579. * TO *CUP* IF PARITY ERROR ON CATALOG READ.
  1580. * TO *EAF* IF ALL SELECTED FILES PROCESSED.
  1581. *
  1582. * USES X - 1, 2, 4, 5, 6, 7.
  1583. * A - 1, 2, 5, 6, 7.
  1584. *
  1585. * CALLS CCE, CSC, PPE.
  1586. *
  1587. * MACROS READW.
  1588.  
  1589.  
  1590. CSP SUBR ENTRY/EXIT
  1591. BX6 X6-X6
  1592. NZ X3,CSP1 IF NOT *PFC ONLY* FILE
  1593. SX6 B1 SET *PFC ONLY* FILE FLAG
  1594. CSP1 SA6 FLST INITIALIZE FILE STATUS
  1595. BX6 X5 SAVE WORD COUNT
  1596. SA6 CSPA
  1597. READW TAPE,CATH,X5 READ CATALOG ENTRY
  1598. RJ PPE PROCESS PARITY ERROR
  1599. NZ X6,CUP IF PARITY ERROR ON CATALOG READ
  1600.  
  1601. * CHECK FORMAT OF CATALOG ENTRY.
  1602.  
  1603. SA5 CSPA RESTORE WORD COUNT
  1604. SX1 X5-NWCE
  1605. ZR X1,CSP2 IF CORRECT SIZE CATALOG ENTRY
  1606. SX4 CATH
  1607. RJ CCE CONVERT CATALOG ENTRY TO 16 WORD FORMAT
  1608.  
  1609. * CHECK SELECTIVE PARAMETERS.
  1610.  
  1611. CSP2 SA5 MXDC
  1612. SA1 CATH+FCUI
  1613. ZR X5,CSP3 IF NO DEVICE POSITION INFORMATON
  1614. MX2 -3
  1615. BX2 -X2*X1 SUBFAMILY INDEX
  1616. SA2 SFDT+X2
  1617. LX1 -3
  1618. SX6 X2+ CATALOG TRACK MASK
  1619. BX2 -X6*X2 ARCHIVE FILE DEVICE ORDINAL
  1620. BX1 X6*X1 CATALOG TRACK
  1621. BX6 X2+X1
  1622. IX6 X5-X6
  1623. NG X6,EAF IF BEYOND HIGHEST SELECTED USER INDEX
  1624. CSP3 SB4 CATH SET CATALOG ADDRESS
  1625. RJ CSC CHECK SELECTION CRITERIA
  1626. ZR X6,CSPX IF FILE NOT TO BE PROCESSED
  1627. ZR B6,CSPX IF FILE NAME NOT FOUND
  1628. SA1 B6+ READ FILE NAME SELECTION
  1629. SA2 /COMSPFS/NFIS
  1630. SX7 B1
  1631. LX7 17-0
  1632. BX7 X1+X7 MARK FILE NAME FOUND
  1633. SA7 A1
  1634. SX7 X2-1 DECREMENT SELECTION COUNT
  1635. SA7 A2+
  1636. EQ CSPX RETURN
  1637.  
  1638.  
  1639. CSPA BSS 1 SAVE AREA FOR WORD COUNT
  1640. CSR SPACE 4,15
  1641. ** CSR - CHECK FOR STAGE REQUEST FOR THIS FILE.
  1642. *
  1643. * ENTRY (CATH) = CATALOG ENTRY FOR CURRENT FILE ON TAPE.
  1644. *
  1645. * EXIT (X6) = 0, IF NO STAGE REQUEST FOUND FOR THIS FILE.
  1646. * (X6) = (STRA) = ADDRESS OF STAGE REQUEST, IF FOUND.
  1647. * (NSSR) INCREMENTED IF STAGE REQUEST FOUND.
  1648. *
  1649. * USES X - 0, 1, 2, 3, 6.
  1650. * A - 1, 2, 3, 6.
  1651. * B - 4, 5.
  1652.  
  1653.  
  1654. CSR SUBR ENTRY/EXIT
  1655. SA1 SRQF
  1656. SA2 SRQL
  1657. SA3 CATH+FCTV VSN / SEQUENCE NUMBER OF FILE ON TAPE
  1658. SB4 X1
  1659. SB5 X2
  1660. MX0 -42
  1661. BX6 X6-X6
  1662. CSR1 SB5 B5-/MTX/PFTBL CHECK PREVIOUS ENTRY
  1663. NG B5,CSRX IF ALL ENTRIES CHECKED
  1664. SA1 B4+B5
  1665. ZR X1,CSR1 IF ENTRY ALREADY PROCESSED
  1666. SA2 A1+B1 VSN / SEQUENCE NUMBER FROM STAGE REQUEST
  1667. NG X2,CSR1 IF ENTRY ALREADY SELECTED
  1668. BX7 X2-X3
  1669. BX7 -X0*X7
  1670. NZ X7,CSR1 IF NOT A MATCH
  1671. MX7 1 SET *ENTRY ALREADY SELECTED* FLAG
  1672. BX7 X2+X7
  1673. SA7 A2
  1674. SA2 NSSR INCREMENT NUMBER OF REQUESTS SELECTED
  1675. SX7 X2+B1
  1676. SA7 A2
  1677. SX6 A1 SAVE ADDRESS OF STAGE REQUEST
  1678. SA6 STRA
  1679. EQ CSRX RETURN
  1680. IFM SPACE 4,10
  1681. ** IFM - ISSUE FILE COUNT MESSAGES.
  1682. *
  1683. * EXIT FILE COUNT MESSAGES ISSUED TO DAYFILE.
  1684. *
  1685. * USES X - 1, 5, 6.
  1686. * A - 1, 5.
  1687. *
  1688. * CALLS IFC.
  1689.  
  1690.  
  1691. IFM SUBR ENTRY/EXIT
  1692. SA1 /COMSPFS/UTLC
  1693. SA5 IFMC
  1694. SX6 X1-/COMSPFS/RSUT
  1695. ZR X6,IFM1 IF *PFRES*
  1696. SA5 IFMB
  1697. SX6 X1-/COMSPFS/COUT
  1698. ZR X6,IFM1 IF *PFCOPY*
  1699. SA5 IFMA
  1700. IFM1 RJ IFC ISSUE FILE COUNT MESSAGES
  1701. EQ IFMX RETURN
  1702.  
  1703.  
  1704. IFMA BSS 0 *PFATC* MESSAGE TABLE
  1705. VFD 1/1,1/1,22/0,18/MSFA,18/PRFC
  1706. CON 0 END OF TABLE
  1707.  
  1708. IFMB BSS 0 *PFCOPY* MESSAGE TABLE
  1709. VFD 1/1,1/1,22/0,18/MSFO,18/PRFC
  1710. CON 0 END OF TABLE
  1711.  
  1712. IFMC BSS 0 *PFRES* MESSAGE TABLE
  1713. VFD 1/1,1/1,22/0,18/MSFR,18/PRFC
  1714. CON 0 END OF TABLE
  1715. ISM SPACE 4,20
  1716. ** ISM - ISSUE STATISTICAL MESSAGE.
  1717. *
  1718. * ENTRY (X5) = FWA OF STAGE REQUEST.
  1719. * (B5) = NEGATIVE ADDRESS OF MESSAGE TEMPLATE.
  1720. *
  1721. * EXIT MESSAGE ISSUED TO ACCOUNT FILE.
  1722. *
  1723. * USES X - 0, 1, 6.
  1724. * A - 1.
  1725. * B - 2, 3, 5.
  1726. *
  1727. * CALLS CDD, COD, SNM.
  1728. *
  1729. * MACROS MESSAGE.
  1730.  
  1731.  
  1732. ISM SUBR ENTRY/EXIT
  1733. SA1 X5+2 GET PERMANENT FILE NAME
  1734. MX0 42
  1735. BX1 X0*X1
  1736. SB3 ISMB
  1737. SB2 1R#
  1738. RJ SNM SET PERMANENT FILE NAME INTO MESSAGE
  1739. SA1 X5+2 GET USER INDEX
  1740. BX1 -X0*X1
  1741. RJ COD CONVERT TO OCTAL DISPLAY
  1742. SB2 B2-B1
  1743. MX1 1 GENERATE CHARACTER MASK
  1744. AX1 B2
  1745. BX1 X1*X4 REMOVE SPACES SPACES
  1746. SB5 ISMB
  1747. SB2 1R$
  1748. RJ SNM SET USER INDEX INTO MESSAGE
  1749. SA1 X5+4 GET FAMILY/PACK NAME
  1750. BX1 X0*X1
  1751. SB2 1R&
  1752. RJ SNM SET FAMILY/PACK NAME INTO MESSAGE
  1753. SA1 SVSN GET VSN
  1754. SB2 1R-
  1755. RJ SNM SET VSN INTO MESSAGE
  1756. SA1 X5+7 GET RETRY COUNT
  1757. AX1 36
  1758. RJ CDD CONVERT TO DECIMAL DISPLAY
  1759. MX0 -6 MASK TO ONE DIGIT
  1760. BX1 -X0*X6
  1761. LX1 -6 LEFT JUSTIFY
  1762. SB2 1R=
  1763. RJ SNM SET RETRY COUNT INTO MESSAGE
  1764. MESSAGE ISMB,5,R ISSUE STATISTICAL MESSAGE TO ACCOUNT FILE
  1765. EQ ISMX RETURN
  1766.  
  1767.  
  1768. ISMA DATA C*STES, #######, $$$$$$, &&&&&&&, ------, =.*
  1769. * DATA C*STES, FILENAM, USERIN, FAMPACK, VSNVSN, R.*
  1770. ISMAL EQU *-ISMA LENGTH OF MESSAGE
  1771. ISMB BSS ISMAL MESSAGE ASSEMBLY BUFFER
  1772. ISMC DATA C*STAS, #######, $$$$$$, &&&&&&&, ------, =.*
  1773. * DATA C*STAS, FILENAM, USERIN, FAMPACK, VSNVSN, R.*
  1774. ERRNZ *-ISMC-ISMAL MESSAGE TEMPLATES MUST BE SAME LENGTH
  1775. PPE SPACE 4,20
  1776. ** PPE - PROCESS PARITY ERROR.
  1777. *
  1778. * ENTRY WHENEVER INPUT FILE IS READ.
  1779. * (STRA) = ADDRESS OF STAGE REQUEST, IF STAGING FILE.
  1780. *
  1781. * EXIT (X6) = NON-ZERO, IF PARITY ERROR.
  1782. *
  1783. * USES X - 1, 3, 5, 6.
  1784. * A - 1, 3, 5, 6.
  1785. *
  1786. * CALLS SFE, SRE, STE.
  1787.  
  1788.  
  1789. PPE SUBR ENTRY/EXIT
  1790. BX6 X6-X6
  1791. SA3 TAPE
  1792. LX3 59-11
  1793. PL X3,PPEX IF NO ERROR
  1794. SA1 FPRF
  1795. ZR X1,PPE2 IF NO FILE BEING PROCESSED
  1796. SA1 /COMSPFS/UTLC
  1797. SX1 X1-/COMSPFS/RSUT
  1798. ZR X1,PPE1 IF *PFRES*
  1799. SA1 CATH+FCUI
  1800. SB2 ERAR * ARCHIVE FILE READ ERROR ...*
  1801. RJ SFE SEND ERROR MESSAGE
  1802. EQ PPE2 SKIP TAPE ERROR
  1803.  
  1804. PPE1 SA5 STRA SET STAGE REQUEST ADDRESS
  1805. SB2 ERRR * ARCHIVE FILE READ ERROR ...*
  1806. RJ SRE SEND ERROR MESSAGE
  1807. SA1 STRA
  1808. SA1 X1+7 SET *SELECT BACKUP VSN* BIT
  1809. SX6 B1
  1810. LX6 39-0
  1811. BX6 X1+X6
  1812. SA6 A1
  1813. PPE2 RJ STE SKIP TAPE ERROR
  1814. SX6 B1
  1815. EQ PPEX RETURN
  1816. RIP SPACE 4,10
  1817. ** RIP - REPRIEVE INTERRUPT PROCESSOR.
  1818. *
  1819. * EXIT BUSY FETS SET COMPLETE TO ALLOW TERMINATION
  1820. * PROCESSING.
  1821. *
  1822. * MACROS COMPFET.
  1823.  
  1824.  
  1825. RIP SUBR ENTRY/EXIT
  1826. SA1 /COMSPFS/UTLC
  1827. SX1 X1-/COMSPFS/RSUT
  1828. ZR X1,RIP1 IF *PFRES*
  1829. COMPFET (O,SU)
  1830. EQ RIPX RETURN
  1831.  
  1832. RIP1 COMPFET (F,T,R)
  1833. EQ RIPX RETURN
  1834. RUR SPACE 4,20
  1835. ** RUR - REQUEUE UNPROCESSED STAGE REQUESTS.
  1836. *
  1837. * EXIT UNPROCESSED STAGE REQUESTS REQUEUED.
  1838. * STAGE REQUESTS AT RETRY LIMIT ABANDONED, WITH
  1839. * ACCOUNT FILE AND DAYFILE/ERRLOG MESSAGES ISSUED.
  1840. *
  1841. * USES X - 1, 2, 5, 6, 7.
  1842. * A - 1, 2, 6.
  1843. * B - 5.
  1844. *
  1845. * CALLS ISM, /MTX/RSR, SEM.
  1846.  
  1847.  
  1848. RUR SUBR ENTRY/EXIT
  1849. SA1 SRQL SET UP INDEX
  1850. BX6 X1
  1851. SA6 RURA
  1852. RUR1 SA1 RURA CHECK PREVIOUS ENTRY
  1853. SX6 X1-/MTX/PFTBL
  1854. SA6 A1
  1855. NG X6,RURX IF NO MORE ENTRIES TO CHECK
  1856. SA2 SRQF
  1857. IX2 X2+X6
  1858. SA1 X2 GET ENTRY
  1859. ZR X1,RUR1 IF ENTRY NOT UNPROCESSED
  1860. SA2 A1+B1 CLEAR *REQUEST SELECTED* FLAG IN ENTRY
  1861. MX6 -59
  1862. BX6 -X6*X2
  1863. SA6 A2
  1864. SA2 A1+7 CHECK RETRY COUNT
  1865. MX6 -3
  1866. LX2 -36
  1867. BX6 -X6*X2
  1868. SX7 X6-/MTX/SRRM
  1869. NG X7,RUR2 IF MORE RETRIES ALLOWED
  1870. SB5 -ISMC ISSUE *STAS* MESSAGE TO ACCOUNT FILE
  1871. SX5 A1 SET STAGE REQUEST ADDRESS
  1872. RJ ISM
  1873. SB2 ERSA * STAGE ABANDONED ...*
  1874. RJ SRE SEND ERROR MESSAGE
  1875. EQ RUR1 CHECK NEXT QUEUE ENTRY
  1876.  
  1877. RUR2 SX7 X6-7
  1878. ZR X7,RUR3 IF RETRY COUNT ALREADY AT MAXIMUM
  1879. SX6 B1 INCREMENT RETRY COUNT
  1880. IX6 X2+X6
  1881. LX6 36
  1882. SA6 A2
  1883. RUR3 RJ /MTX/RSR REQUEUE STAGE REQUEST
  1884. EQ RUR1 CHECK NEXT QUEUE ENTRY
  1885.  
  1886.  
  1887. RURA CON 0 INDEX OF CURRENT ENTRY
  1888. SAF SPACE 4,10
  1889. ** SAF - SET ACCESS LEVEL IN FET.
  1890. *
  1891. * ENTRY (CATH) = CATALOG ENTRY FOR FILE (FROM TAPE).
  1892. * (STRA) = ADDRESS OF STAGE REQUEST FOR FILE (*PFRES*).
  1893. *
  1894. * EXIT ACCESS LEVEL SET IN FET.
  1895. *
  1896. * USES X - 0, 1, 2, 6.
  1897. * A - 1, 2, 6.
  1898.  
  1899.  
  1900. SAF SUBR ENTRY/EXIT
  1901. SA2 CATH+FCAL GET ACCESS LEVEL FROM CATALOG ENTRY
  1902. SA1 /COMSPFS/UTLC CHECK UTILITY CODE
  1903. SX1 X1-/COMSPFS/RSUT
  1904. NZ X1,SAF1 IF NOT *PFRES*
  1905. SA1 STRA GET ACCESS LEVEL FROM STAGE REQUEST
  1906. SA2 X1
  1907. LX2 36-51
  1908. SAF1 MX0 -3
  1909. LX0 36
  1910. BX2 -X0*X2 FILE ACCESS LEVEL
  1911. SA1 F+4
  1912. BX1 X0*X1
  1913. BX6 X1+X2 SET ACCESS LEVEL IN FET
  1914. SA6 A1
  1915. EQ SAFX RETURN
  1916. SER SPACE 4,10
  1917. ** SER - SKIP TO EOR.
  1918. *
  1919. * EXIT ARCHIVE FILE POSITIONED AT PHYSICAL EOR.
  1920. *
  1921. * CALLS PPE, RCW.
  1922. *
  1923. * MACROS SKIPW.
  1924.  
  1925.  
  1926. SER SUBR ENTRY/EXIT
  1927. SER1 RJ RCW READ CONTROL WORD
  1928. NG X3,SERX IF EOR
  1929. ZR X5,SER1 IF ZERO WORD COUNT
  1930. SKIPW TAPE,X5 SKIP WORDS
  1931. RJ PPE PROCESS PARITY ERROR
  1932. ZR X6,SER1 IF NO ERROR
  1933. EQ SERX
  1934. SRE SPACE 4,15
  1935. ** SRE - SEND STAGE REQUEST ERROR MESSAGE.
  1936. *
  1937. * ENTRY (X5) = STAGE REQUEST ADDRESS.
  1938. * (B2) = ERROR MESSAGE SKELETON ADDRESS.
  1939. *
  1940. * EXIT MESSAGE ISSUED.
  1941. *
  1942. * USES X - 1, 6.
  1943. * A - 1.
  1944. * B - 2, 5.
  1945. *
  1946. * CALLS SEM, SFU, SNM.
  1947.  
  1948.  
  1949. SRE SUBR ENTRY/EXIT
  1950. SA1 X5+2 GET FILE NAME AND USER INDEX
  1951. RJ SFU SET FILE NAME AND USER INDEX IN MESSAGE
  1952. SA1 X5+4
  1953. MX6 42
  1954. BX1 X6*X1 FAMILY NAME
  1955. SB2 1R+
  1956. SB5 MSGB
  1957. RJ SNM SET FAMILY NAME IN MESSAGE
  1958. SB2 MSGB SET MESSAGE ADDRESS
  1959. RJ SEM SEND ERROR MESSAGE
  1960. EQ SREX RETURN
  1961. SSR SPACE 4,10
  1962. ** SSR - SETUP *PFM* SPECIAL REQUEST BLOCK.
  1963. *
  1964. * ENTRY (STRA) = ADDRESS OF STAGE REQUEST ENTRY.
  1965. *
  1966. * EXIT *PFM* SPECIAL REQUEST BLOCK BUILT.
  1967. *
  1968. * USES X - 1, 3, 6, 7.
  1969. * A - 1, 3, 6.
  1970.  
  1971.  
  1972. SSR SUBR ENTRY/EXIT
  1973. SA3 STRA GET STAGE REQUEST
  1974. SA1 X3 SET PEO, DN, TRACK AND SECTOR
  1975. MX6 -32
  1976. BX6 -X6*X1
  1977. SA6 SRB+0
  1978. SA1 A1+B1 SET ALTERNATE STORAGE INFORMATION
  1979. MX6 -42
  1980. SX7 B1
  1981. BX6 -X6*X1
  1982. LX7 42-0 SET TAPE ALTERNATE STORAGE BIT
  1983. BX6 X6+X7
  1984. SA6 A6+B1
  1985. SA1 X3+5 SET CREATION DATE AND TIME
  1986. MX6 -36
  1987. BX6 -X6*X1
  1988. SA6 A6+B1
  1989. SA1 A1-B1 SET FAMILY AND USER INDEX
  1990. MX7 42
  1991. BX6 X7*X1
  1992. SA1 X3+2
  1993. BX7 -X7*X1
  1994. BX6 X6+X7
  1995. SA6 A6+B1
  1996. EQ SSRX RETURN
  1997. STE SPACE 4,10
  1998. ** STE - SKIP TAPE ERROR.
  1999. *
  2000. * ENTRY PARITY ERROR ENCOUNTERED.
  2001. *
  2002. * EXIT EOR DETECTED.
  2003. * TO *EAF* IF EOF DETECTED.
  2004. *
  2005. * MACROS READ, READW, RECALL.
  2006.  
  2007.  
  2008. STE SUBR ENTRY/EXIT
  2009. STE1 RECALL TAPE
  2010. READW TAPE,DBUF,DBUFL
  2011. NG X1,EAF IF EOF ENCOUNTERED
  2012. ZR X1,STE1 IF NOT EOR
  2013. READ TAPE,R
  2014. EQ STEX RETURN
  2015. VCE SPACE 4,15
  2016. ** VCE - VERIFY CATALOG ENTRY FIELDS.
  2017. *
  2018. * ENTRY (STRA) = ADDRESS OF STAGE REQUEST ENTRY.
  2019. * (CATH) = CATALOG ENTRY FROM TAPE.
  2020. *
  2021. * EXIT (X6) = 0, IF STAGE REQUEST MATCHES PFC ON TAPE.
  2022. *
  2023. * USES X - 1, 2, 5, 6.
  2024. * A - 1, 2, 5, 6.
  2025. *
  2026. * CALLS SRE.
  2027.  
  2028.  
  2029. VCE SUBR ENTRY/EXIT
  2030. SA1 STRA GET STAGE REQUEST ADDRESS
  2031. SA1 X1+5 VERIFY CREATION DATE AND TIME
  2032. SA2 CATH+FCCD
  2033. BX1 X1-X2
  2034. MX2 -36
  2035. BX6 -X2*X1
  2036. ZR X6,VCEX IF CREATION DATE AND TIME MATCHES
  2037. SA5 STRA SET STAGE REQUEST ADDRESS
  2038. SB2 ERFV * FILE VERIFICATION ERROR ...*
  2039. RJ SRE SEND STAGE REQUEST ERROR MESSAGE
  2040. SX6 B1 INDICATE ERROR
  2041. EQ VCEX RETURN
  2042. SPACE 4,10
  2043. * COMMON DECKS.
  2044.  
  2045.  
  2046. FCE$ EQU 0
  2047. *CALL COMCCCE
  2048. *CALL COMCCDD
  2049. *CALL COMCCIO
  2050. *CALL COMCCOD
  2051. *CALL COMCCPM
  2052. *CALL COMCDXB
  2053. *CALL COMCEDT
  2054. *CALL COMCFCE
  2055. GMS$ EQU 1 USE SORT KEY MASK
  2056. MWK$ EQU 1 ALLOW MULTIPLE WORD SORT KEYS
  2057. *CALL COMCGMS
  2058. *CALL COMCJCR
  2059. *CALL COMCLFM
  2060. *CALL COMCMSF
  2061. *CALL COMCMVE
  2062. *CALL COMCPFM
  2063. COM$ EQU 1 ASSEMBLE COMMON ROUTINES
  2064. PFA$ EQU 1 ASSEMBLE ARCHIVE FILE ROUTINES
  2065. LIST X
  2066. *CALL COMCPFS
  2067. LIST *
  2068. *CALL COMCPFU
  2069. *CALL COMCRDW
  2070. *CALL COMCSCB
  2071. *CALL COMCSFN
  2072. *CALL COMCSKW
  2073. *CALL COMCSNM
  2074. *CALL COMCSYS
  2075. LIST X
  2076. QUAL MTX
  2077. QUAL$ EQU 1
  2078. *CALL COMCSRI
  2079. QUAL *
  2080. LIST *
  2081. *CALL COMCVDT
  2082. *CALL COMCWTC
  2083. *CALL COMCWTH
  2084. *CALL COMCWTO
  2085. *CALL COMCWTW
  2086. *CALL COMCZTB
  2087. TITLE BUFFERS.
  2088. USE LITERALS
  2089. SPACE 4,10
  2090. * BUFFERS.
  2091.  
  2092.  
  2093. MBUF EQU * MAIN BUFFER
  2094. CATH EQU MBUF+MBUFL CATALOG ENTRY HOLD BUFFER
  2095. DBUF EQU CATH+CATHL ARCHIVE DATA BLOCK WORKING BUFFER
  2096. TBUF EQU DBUF+DBUFL ARCHIVE FILE BUFFER
  2097. OUTB EQU TBUF+TBUFL OUTPUT FILE BUFFER
  2098. SUMB EQU OUTB+OUTBL SUMMARY FILE BUFFER
  2099. PFLB EQU SUMB+SUMBL PROCESSED FILES FILE BUFFER
  2100. MS1B EQU PFLB+PFLBL SORT FILE 1
  2101. MS2B EQU MS1B+MSFBL SORT FILE 2
  2102. MS3B EQU MS2B+MSFBL SORT FILE 3
  2103. MS4B EQU MS3B+MSFBL SORT FILE 4
  2104. SRTB EQU MS3B SORT BUFFER (OVERLAYS *MS3B* AND *MS4B*)
  2105. ERRNG MSFBL*2-SRTBL SORT BUFFER OVERFLOW
  2106. EBUF EQU MS4B+MSFBL+5 END OF BUFFERS
  2107.  
  2108. * *PFRES* BUFFERS OVERLAY BUFFERS FROM *SUMB* TO *SRTB*.
  2109.  
  2110. RBUF EQU SUMB STAGE REQUEST FILE BUFFER (*PFRES* PRESET)
  2111. SBUF EQU RBUF+RBUFL SCRATCH FILE BUFFER (*PFRES* PRESET)
  2112. QBUF EQU SBUF+SBUFL STAGE REQUEST QUEUE (*PFRES* PRESET)
  2113. EBUFP EQU QBUF+QBUFL END OF BUFFERS (*PFRES* PRESET)
  2114. TITLE PRESET.
  2115. PRS SPACE 4,20
  2116. ** PRS - PRESET PROGRAM.
  2117. *
  2118. * ENTRY FILES *ZZZZZG0* THROUGH *ZZZZZG8* RETURNED BY *PFS*.
  2119. * FILE *ZZZZZG9* RETURNED BY *PFS* IF NO FILE
  2120. * SELECTIONS.
  2121. * FILE *ZZZZZG9* CONTAINS FILE SELECTIONS IF PRESENT.
  2122. *
  2123. * EXIT FILE NAMES SET IN FETS.
  2124. * SECURITY PROCESSING BIT SET IN FET, IF NEEDED.
  2125. * (SYSS) = SYSTEM SECURITY MODE.
  2126. *
  2127. * USES X - 0, 1, 2, 5, 6.
  2128. * A - 0, 1, 2, 5, 6.
  2129. *
  2130. * CALLS FSR, IOF, ITA, PFO, RPS, RST, SSS.
  2131. *
  2132. * MACROS MACHID, MEMORY, REPRIEVE, SETFET.
  2133.  
  2134.  
  2135. PRS SUBR ENTRY/EXIT
  2136. SB1 1
  2137. MEMORY CM,,R,EBUF REQUEST REQUIRED MEMORY
  2138. REPRIEVE RPVB,SET,277B
  2139. RJ SSS SET SECURED SYSTEM STATUS
  2140. SA1 SYSS
  2141. ZR X1,PRS1 IF NOT SECURED SYSTEM
  2142. SA1 F+1 SET SECURITY PROCESSING BIT IN FET
  2143. SX6 B1
  2144. LX6 39-0
  2145. BX6 X1+X6
  2146. SA6 A1
  2147.  
  2148. * SET UTILITY NAME IN MESSAGES.
  2149.  
  2150. PRS1 SA1 /COMSPFS/UTLC CHECK UTILITY CODE
  2151. SX1 X1-/COMSPFS/RSUT
  2152. NZ X1,PRS2 IF NOT *PFRES*
  2153.  
  2154. * PROCESS *PFRES*.
  2155.  
  2156. MEMORY CM,MSTAT,R,EBUFP REQUEST ADDITIONAL MEMORY
  2157. MACHID PRSA GET MACHINE ID
  2158. SA1 PRSA
  2159. SA2 R SET MACHINE ID INTO *STRQID* FET
  2160. LX1 24
  2161. BX6 X1+X2
  2162. SA6 A2
  2163. RJ RST REQUEST STAGING TAPE
  2164. RJ FSR FIND STAGE REQUESTS
  2165. RJ ITA ISSUE TAPE ASSIGNED MESSAGE
  2166. EQ PRSX RETURN
  2167.  
  2168. * INITIALIZE OUTPUT FILE AND SUMMARY FILE.
  2169.  
  2170. PRS2 RJ IOF INITIALIZE OUTPUT FILES
  2171.  
  2172. * INITIALIZE ARCHIVE FILE.
  2173.  
  2174. SA1 CPAR+/COMSPFS/CPTB SET ARCHIVE FILE NAME
  2175. SA2 TAPE
  2176. MX6 -18
  2177. BX6 -X6*X2
  2178. BX6 X6+X1
  2179. SA6 A2
  2180. SX2 TAPE SET OPTICAL DISK EXTENSION BUFFER
  2181. SA3 PRSB
  2182. RJ SOE SET FET EXTENSION IF OPTICAL DISK FILE
  2183. OPEN TAPE,READNR,R
  2184.  
  2185. * INITIALIZE *PFCOPY* MASTER FILE.
  2186.  
  2187. SA1 CPAR+/COMSPFS/CPMF CHECK IF MASTER FILE SPECIFIED
  2188. ZR X1,PRS3 IF MASTER FILE NOT SPECIFIED
  2189. SA5 FILEA
  2190. RJ PFO OPEN MASTER FILE
  2191. SETFET SU,ERP=0 CLEAR USER ERROR PROCESSING
  2192.  
  2193. * READ FILE NAME AND USER INDEX SELECTIONS.
  2194.  
  2195. PRS3 SX0 EBUF SET SELECTION BUFFER ADDRESS
  2196. RJ RPS READ PERMANENT FILE SELECTIONS
  2197. EQ PRSX RETURN
  2198.  
  2199.  
  2200. PRSA CON 0 MACHINE ID WORD
  2201. PRSB VFD 36/,6/ODEBL,18/ODEB POINTER TO *OD* EXT. BUFFER
  2202. TITLE PRESET SUBROUTINES.
  2203. FSR SPACE 4,20
  2204. ** FSR - FIND STAGE REQUESTS.
  2205. * READ STAGE REQUESTS FROM REQUEST FILE AND REPACK FILE.
  2206. * READ ADDITIONAL STAGE REQUESTS FROM *MAGNET*-S FL.
  2207. *
  2208. * ENTRY STAGE REQUEST FILE ATTACHED (BY *RESEX*).
  2209. *
  2210. * EXIT STAGE REQUESTS QUEUED IN *QBUF*.
  2211. * SELECTED REQUESTS DELETED FROM STAGE REQUEST FILE.
  2212. * STAGE REQUEST FILE RETURNED.
  2213. * TO *ABT* IF NO STAGE REQUESTS FOR ASSIGNED VSN.
  2214. *
  2215. * USES X - 0, 1, 2, 6.
  2216. * A - 1, 2, 5, 6.
  2217. * B - 2, 6.
  2218. *
  2219. * CALLS ARQ, GSR.
  2220. *
  2221. * MACROS MEMORY, MESSAGE, MOVE, READEI, READW, REWIND, RTIME,
  2222. * UNLOAD, WRITE, WRITER, WRITEW.
  2223.  
  2224.  
  2225. FSR SUBR ENTRY/EXIT
  2226. REWIND R
  2227. READEI X2 INITIATE READ
  2228. WRITE S,*
  2229. SA5 PVSN GET VSN ASSIGNED TO THIS JOB
  2230.  
  2231. * READ NEXT ENTRY FROM REQUEST FILE.
  2232.  
  2233. FSR1 READW R,FSRA,/MTX/PFTBL
  2234. NZ X1,FSR3 IF END OF REQUEST FILE
  2235. SA1 FSRA CHECK FUNCTION CODE
  2236. AX1 54
  2237. SX1 X1-1
  2238. NZ X1,FSR1.1 IF NOT TAPE STAGE REQUEST
  2239. SA1 FSRA+1 COMPARE VSN REQUIRED
  2240. BX2 X1-X5
  2241. MX0 -24
  2242. BX2 -X0*X2
  2243. ZR X2,FSR2 IF VSN MATCHES VSN ASSIGNED TO THIS JOB
  2244. FSR1.1 WRITEW S,FSRA,/MTX/PFTBL WRITE UNSELECTED REQ TO SCRATCH
  2245. EQ FSR1 READ NEXT REQUEST
  2246.  
  2247. FSR2 SB6 FSRA
  2248. RJ ARQ ADD REQUEST TO QUEUE
  2249. EQ FSR1 READ NEXT REQUEST
  2250.  
  2251. * COPY SCRATCH FILE (UNSELECTED REQUESTS) BACK TO REQUEST FILE.
  2252.  
  2253. FSR3 WRITER S FLUSH BUFFER
  2254. REWIND X2
  2255. READEI X2
  2256. REWIND R,R
  2257. WRITE X2,*
  2258. FSR4 READW S,FSRA,/MTX/PFTBL
  2259. NZ X1,FSR5 IF END OF FILE
  2260. WRITEW R,FSRA,/MTX/PFTBL
  2261. EQ FSR4 COPY NEXT REQUEST
  2262.  
  2263. FSR5 WRITER R FLUSH BUFFER
  2264. UNLOAD X2,R RETURN BOTH FILES
  2265. UNLOAD S,R
  2266. BX6 X6-X6 INDICATE STAGE REQUEST FILE RETURNED
  2267. SA6 SRFF
  2268.  
  2269. * MOVE REQUEST QUEUE DOWN (ON TOP OF *RBUF*/*SBUF*).
  2270.  
  2271. SA5 SRQL GET NUMBER OF WORDS IN CURRENT QUEUE
  2272. ZR X5,FSR6 IF NO REQUESTS
  2273. MOVE X5,QBUF,RBUF
  2274. FSR6 SX6 RBUF UPDATE QUEUE POINTER
  2275. SA6 SRQF
  2276.  
  2277. * PROCESS REQUESTS PENDING IN *MAGNET*.
  2278.  
  2279. FSR7 RJ /MTX/GSR GET STAGE REQUEST
  2280. LE B6,B0,FSR8 IF NO REQUEST
  2281. RJ ARQ ADD REQUEST TO QUEUE
  2282. EQ FSR7 GET NEXT REQUEST
  2283.  
  2284. FSR8 RTIME CARA INITIALIZE STARTING TIME
  2285. SA1 SRQL CHECK IF ANY REQUESTS FOUND
  2286. ZR X1,FSR9 IF NO REQUESTS FOUND
  2287. MEMORY CM,MSTAT,R,RBUF+X1+MEMI REDUCE FIELD LENGTH
  2288. EQ FSRX RETURN
  2289.  
  2290. FSR9 SB2 ERNR * NO FILES TO RESTORE.*
  2291. EQ ABT ABORT
  2292.  
  2293.  
  2294. FSRA BSS /MTX/PFTBL STAGE REQUEST BUFFER
  2295. ITA SPACE 4,15
  2296. ** ITA - ISSUE TAPE ASSIGNED MESSAGE.
  2297. *
  2298. * ENTRY (SRQF) = POINTER TO FWA OF STAGE REQUEST QUEUE.
  2299. * (SRQN) = NUMBER OF RESTORE REQUESTS.
  2300. * (SVSN) = STAGING TAPE VSN.
  2301. *
  2302. * USES X - 0, 1, 2, 6.
  2303. * A - 1, 2.
  2304. * B - 2, 3, 5.
  2305. *
  2306. * CALLS CDD, SNM.
  2307. *
  2308. * MACROS MESSAGE.
  2309.  
  2310.  
  2311. ITA SUBR ENTRY/EXIT
  2312. MX0 42
  2313. SB3 ITAB
  2314. SB5 -ITAA
  2315. SA1 SRQF
  2316. SA2 X1+4 GET FAMILY/PACK NAME
  2317. BX1 X0*X2
  2318. SB2 1R$
  2319. RJ SNM SET FAMILY/PACK NAME INTO MESSAGE
  2320. SA1 SVSN GET VSN
  2321. SB5 ITAB
  2322. SB2 1R-
  2323. RJ SNM SET VSN INTO MESSAGE
  2324. SA1 SRQN GET NUMBER OF ENTRIES IN REQUEST QUEUE
  2325. RJ CDD CONVERT TO DECIMAL DISPLAY
  2326. MX0 -24 MASK TO FOUR DIGITS
  2327. BX1 -X0*X6
  2328. LX1 -24 LEFT JUSTIFY
  2329. SB2 1R=
  2330. RJ SNM SET NUMBER OF ENTRIES INTO MESSAGE
  2331. MESSAGE ITAB,5 ISSUE STAGING TAPE ASSIGNED MESSAGE
  2332. EQ ITAX RETURN
  2333.  
  2334.  
  2335. ITAA DATA C*STTA, $$$$$$$, ------, ====.*
  2336. * DATA C*STTA, FAMPACK, VSNVSN, NNNN.*
  2337. ITAAL EQU *-ITAA LENGTH OF MESSAGE
  2338. ITAB BSS ITAAL MESSAGE ASSEMBLY BUFFER
  2339. RST SPACE 4,20
  2340. ** RST - REQUEST STAGING TAPE.
  2341. *
  2342. * EXIT STAGING TAPE ASSIGNED.
  2343. * (SVSN) = VSN OF STAGING TAPE.
  2344. * (PVSN) = PACKED VSN OF STAGING TAPE.
  2345. * STAGE REQUEST FILE ATTACHED (BY *RESEX*).
  2346. * TO *ABT* IF IMPROPER TAPE ASSIGNED.
  2347. *
  2348. * USES X - 0, 1, 2, 5, 6, 7
  2349. * A - 1, 2, 6.
  2350. * B - 2, 5, 6, 7.
  2351. *
  2352. * CALLS DXB, SNM.
  2353. *
  2354. * MACROS FILINFO, LABEL, MOVE, UNLOAD.
  2355.  
  2356.  
  2357. RST SUBR ENTRY/EXIT
  2358. SA1 TAPE SET FILE NAME IN *FILINFO* BLOCK
  2359. SA2 RSTA
  2360. MX7 42
  2361. BX1 X7*X1
  2362. BX2 -X7*X2
  2363. BX6 X1+X2
  2364. SA6 RSTA
  2365. UNLOAD TAPE,R
  2366. MOVE 5,TAPE,RSTB COPY FET FIELDS
  2367. LABEL RSTB REQUEST STAGING TAPE
  2368. FILINFO RSTA
  2369. SA1 RSTA+1 CHECK TAPE FILE FLAG
  2370. LX1 59-24
  2371. NG X1,RST1 IF TAPE FILE
  2372. SB2 ERNT * STAGING TAPE NOT ASSIGNED.*
  2373. EQ ABT ABORT
  2374.  
  2375. RST1 SA1 RSTA+5 GET VSN OF TAPE
  2376. MX0 36
  2377. BX6 X0*X1
  2378. SA6 SVSN SAVE VSN
  2379. LX0 6
  2380. BX0 -X0*X6 VERIFY SIX CHARACTER VSN
  2381. NZ X0,RST3 IF SIX CHARACTER VSN
  2382. RST2 SA1 SVSN SET VSN IN DAYFILE MESSAGE
  2383. SB2 1R$
  2384. SB5 ERVE
  2385. RJ SNM
  2386. SB2 ERVE * STAGING TAPE VSN ERROR. VSN = $.*
  2387. EQ ABT ABORT
  2388.  
  2389. RST3 SA1 SVSN BUILD PACKED VSN
  2390. MX5 24
  2391. LX1 12
  2392. SB7 B1 SET DECIMAL CONVERSION
  2393. BX5 X5*X1
  2394. RJ DXB CONVERT VSN SUFFIX TO BINARY
  2395. NZ X4,RST2 IF ERROR IN CONVERSION (NOT PROPER VSN)
  2396. SX7 X6-5000
  2397. NG X7,RST5 IF NOT BACKUP VSN
  2398. SX6 X7 USE PRIMARY VSN FOR COMPARISON PURPOSES
  2399. RST5 SA1 SVSN GET VSN PREFIX
  2400. MX2 12
  2401. BX1 X2*X1
  2402. LX1 -36
  2403. BX6 X1+X6
  2404. SA6 PVSN SAVE PACKED VSN
  2405. EQ RSTX RETURN
  2406.  
  2407.  
  2408. RSTA VFD 42/0,6/6,12/1 *FILINFO* BLOCK
  2409. BSSZ 4
  2410. VFD 54/,6/4
  2411.  
  2412. RSTB FILEB TBUF,TBUFL,FET=16B FET FOR *LABEL*
  2413. ORG RSTB+10B PO=R,LB=KL,NO UNLOAD
  2414. VFD 6/20B,3/0,3/0,12/50B,6/0,6/0,24/0
  2415. BSSZ RSTB+16B-*
  2416. SPACE 4,10
  2417. * PRESET DATA LOCATIONS.
  2418.  
  2419.  
  2420. R BSS 0 STAGE REQUEST FILE
  2421. STRQ FILEB RBUF,RBUFL,FET=6
  2422.  
  2423. S BSS 0 SCRATCH STAGE REQUEST FILE
  2424. ZZZZZG4 FILEB SBUF,SBUFL,FET=6
  2425.  
  2426. SPACE 4,10
  2427. * PRESET COMMON DECKS.
  2428.  
  2429.  
  2430. LIST X
  2431. *CALL COMCPFP
  2432. LIST *
  2433. *CALL COMCSOE
  2434. SPACE 4,10
  2435. ERRPL *-TBUF-1 PRESET OVERFLOWS INTO BUFFERS
  2436. SPACE 4,10
  2437. END