Table of Contents

PFM

Table Of Contents

  • [00013] PFM - PERMANENT FILE MANAGER.
  • [00015] PERMANENT FILE MANAGER.
  • [00076] MACRO DEFINITIONS.
  • [00080] COMPARE - COMPARE TWO 36 BIT FIELDS.
  • [00103] ERROR - CALL ERROR PROCESSOR.
  • [00138] ERRMSG - SETUP ERROR MESSAGE CONSTANTS.
  • [00164] EXIT - CALL ERROR PROCESSING FOR SPECIAL (NON-ABORT) EXIT.
  • [00186] OVERLAY - GENERATE OVERLAY CONSTANTS.
  • [00217] CSR - DEFINE 24 BIT QUANTITY FROM 18 BIT EQUATE.
  • [00232] COMMON DECKS.
  • [00260] STORAGE ASSIGNMENTS AND ASSEMBLY CONSTANTS.
  • [00324] MEMORY ASSIGNMENTS.
  • [00326] PERMANENT FILE MANAGER RESIDENT MEMORY LOCATIONS.
  • [00509] RESIDENT SUBROUTINES.
  • [00511] SFA - SET FET ADDRESS.
  • [00525] CCI - CLEAR CATALOG INTERLOCK.
  • [00550] CTA - CALCULATE TRT ADDRESS.
  • [00567] ERR - PROCESS ERROR.
  • [00611] HNG - HANG PP.
  • [00620] PDA - PROCESS DEVICE AVAILABILITY.
  • [00650] PDV - PROCESS DEVICE STATUS.
  • [00670] PES - PROCESS I/O ERROR STATUS.
  • [00692] SFN - SET FILE NAME.
  • [00724] SPN - SET PERMANENT FILE NAME.
  • [00745] PRESET.
  • [00862] PRS - PRESET ROUTINE.
  • [01439] TCTL - TABLE OF COMMAND CODE CONTROLS.
  • [01488] TPFI - TABLE OF PF INCREMENT VALUES BY FUNCTION.
  • [01521] PRESET SUBROUTINES.
  • [01523] CCA - CHECK CATALOG ACCESSABILITY.
  • [01677] CRF - CALL *0RF*.
  • [01717] CRR - CHECK AUXILIARY DEVICE REQUEST.
  • [01760] CRX - CHECK *CPUPFM*/*RESEX* RETURN STATUS.
  • [01815] CUN - COMPARE USER NAMES.
  • [01867] FIF - FIND INTERLOCK FILES.
  • [01900] FMS - FORM MASK FOR FILE RESIDENCE CHECK.
  • [01933] GCA - GET CATALOG ADDRESS.
  • [01967] POA - PROCESS OPTIONAL USER NAME.
  • [02207] RCL - RECALL PFM.
  • [02246] RSX - REQUEST RESOURCE VALIDATION.
  • [02285] SAM - SET UP ACCOUNTING MESSAGE.
  • [02327] SRF - SET UP RESERVE FNT.
  • [02384] SUC - SET USER CONTROLS.
  • [02489] SWI - SWAP USER INDICES.
  • [02594] OVERLAYABLE PRESET SUBROUTINES.
  • [02596] CPN - COMPARE NAMES.
  • [02622] PER - PROCESS ERROR REPLY FROM *CPUPFM*.
  • [02672] PFP - PROCESS FET PARAMETERS.
  • [02863] PSR - PROCESS SPECIAL REQUEST BLOCK.
  • [03048] PXT - PROCESS EXPIRATION TERM.
  • [03142] SAP - SAVE ACCESS PARAMETERS.
  • [03236] SEP - SET ERROR PROCESSING OPTIONS.
  • [03255] SLT - SEARCH COMMON LIBRARY TABLE FOR ALTERNATE USER NAME.
  • [03328] VCA - VERIFY CATALOG ADDRESS.
  • [03401] VFA - VERIFY FET ADDRESS.
  • [03460] VRP - VERIFY PARAMETERS.
  • [03531] VUA - VALIDATE USER ACCESS.
  • [03567] PLF - PROCESS LOCAL FILE.
  • [03701] SUBROUTINES.
  • [03703] CAA - CHECK FOR APPLICATION ACCOUNTING.
  • [03727] CFA - CHECK FOR FAST ATTACH FILE.
  • [03835] CSA - CHECK SPECIFIED ACCESS LEVEL.
  • [03865] CFS - CHECK FILE SIZE FOR THE CATALOG SEARCH.
  • [03905] EFN - ESTABLISH FNT ENTRY FOR FAST ATTACH FILE.
  • [03962] IAM - ISSUE ACCOUNT FILE MESSAGE.
  • [04002] PDS - PROCESS DEVICE STATUS.
  • [04026] PEF - PROCESS EXISTING FILE.
  • [04151] PIF - PROCESS INTERLOCK FILES.
  • [04218] SSF - SEARCH FOR SYSTEM FILE.
  • [04497] SUBROUTINES.
  • [04499] CDA - CHECK DEVICE ACCESSIBILITY.
  • [04577] CML - CHECK MASS STORAGE LIMIT.
  • [04602] CPF - CHECK FOR PRESERVED FILE.
  • [04632] CPR - CHECK PROPER PERMANENT FILE RESIDENCE.
  • [04741] DDN - DETERMINE DEVICE NAME.
  • [04773] DFR - DETERMINE FILE RESIDENCY.
  • [05018] DSA - DETERMINE SPACE AVAILABLE ON A DEVICE.
  • [05064] PDS - PROCESS DEVICE STATUS.
  • [05120] SFT - SET FNT/FST INFORMATION.
  • [05201] MSR - *COMPRNS* MASS STORAGE READ ERROR PROCESSOR.
  • [05224] RESIDENT SUBROUTINES.
  • [05226] CAI - CLEAR ALLOCATION INTERLOCK.
  • [05250] CSA - COMPUTE SECTOR ADDRESS.
  • [05273] DPR - DELAY PRIOR TO RETRY.
  • [05298] DTK - DROP TRACKS.
  • [05319] ITC - INTERLOCK TRACK CHAIN.
  • [05341] RMD - RESET TO MASTER DEVICE.
  • [05361] UCE - UPDATE CATALOG ENTRY.
  • [05426] WBI - WRITE BUFFER IN PLACE.
  • [05493] PERMIT SEARCH ROUTINES.
  • [05495] CPI - CHECK PERMISSION INFORMATION.
  • [05654] SPI - SEARCH PERMISSION INFORMATION.
  • [05762] CATALOG SEARCH ROUTINES.
  • [05764] CCD - CHECK CATALOG DATA.
  • [05903] ICT - INTERLOCK CATALOG TRACK.
  • [05932] ISP - INITIALIZE SEARCH OF PERMANENT FILES.
  • [05981] PCE - PROCESS CATALOG READ ERROR.
  • [05990] SCH - SEARCH CATALOGS.
  • [06234] SHL - SEARCH CATALOG FOR HOLE.
  • [06313] SPECIAL REQUEST BLOCK CATALOG ACCESS ROUTINES.
  • [06315] ACE - ACCESS CATALOG ENTRY.
  • [06412] COF - COMPARE FIELD OF 36 BITS.
  • [06440] RSC - READ CATALOG ENTRY, SEARCH CATALOG IF NECESSARY.
  • [06459] RVC - READ AND VERIFY CATALOG ENTRY.
  • [06500] REQUEST PREPROCESSORS.
  • [06949] LOAD OVERLAY PROCESSOR.
  • [06951] LCO - LOAD COMMAND OVERLAY.
  • [06974] INITIALIZATION SUBROUTINES.
  • [06976] CCT - CHECK FOR CPU TRANSFER.
  • [07068] CLF - CREATE LOCAL FILE.
  • [07119] DSR - DETERMINE IF FILE STAGING REQUIRED.
  • [07151] MCB - MOVE CATALOG BUFFER.
  • [07183] SDB - SWAP DISK BUFFERS.
  • [07271] SSP - SET STATISTICAL PARAMETERS.
  • [07291] VFI - VERIFY THAT FILE IS INDIRECT ACCESS.
  • [07309] OVERLAYABLE INITIALIZATION ROUTINES.
  • [07392] CMD - CREATE *TCMD* TABLE ENTRIES.
  • [07422] TCMD - TABLE OF COMMAND PROCESSOR ADDRESSES.
  • [07514] ALLOCATION ROUTINES.
  • [07516] ACS - ALLOCATE CATALOG SPACE.
  • [07588] AFS - ALLOCATE FILE SPACE.
  • [07665] CATALOG UPDATE ROUTINES.
  • [07667] CCS - CREATE CATALOG SECTOR.
  • [07804] CDA - COMPARE DISK ADDRESSES.
  • [07834] CIA - CLEAR INDIRECT ALLOCATION INTERLOCK.
  • [07888] DCE - DELETE CATALOG ENTRY.
  • [08081] FCE - FORM CATALOG ENTRY.
  • [08257] FHE - FORM HOLE ENTRY.
  • [08320] IIA - INTERLOCK INDIRECT ALLOCATION.
  • [08362] REB - REREAD END BUFFER.
  • [08424] RTK - REQUEST LINKED TRACK.
  • [08470] EOI - EOI SECTOR BUFFER.
  • [08522] ALLOCATION ROUTINES.
  • [08524] APS - ALLOCATE PERMIT SPACE.
  • [08581] PERMIT UPDATE ROUTINES.
  • [08583] CPE - CREATE PERMIT ENTRY.
  • [08648] FPE - FORM PERMIT ENTRY IN BUFFER.
  • [08702] RTK - REQUEST LINKED TRACK.
  • [08748] UPI - UPDATE PERMIT INFORMATION.
  • [08864] WNP - WRITE NEW PERMIT BUFFER.
  • [08919] EOI - EOI SECTOR BUFFER.
  • [08954] COMMAND PROCESSING.
  • [09221] SUBROUTINES.
  • [09223] VSS - VERIFY SYSTEM SECTOR.
  • [09256] COMMAND PROCESSING (OVERLAYABLE).
  • [09350] SUBROUTINES (OVERLAYABLE).
  • [09352] CML - CHECK MASS STORAGE LIMIT.
  • [09380] POF - PROCESS OLD PRIMARY FILE.
  • [09459] COMMAND PROCESSING.
  • [09661] SUBROUTINES.
  • [09663] CSS - CREATE SYSTEM SECTOR IN BUFFER.
  • [09715] CUC - CHECK USER CONTROLS.
  • [09813] COMMAND PROCESSING.
  • [09997] SUBROUTINES.
  • [09999] CSS - CREATE SYSTEM SECTOR IN BUFFER.
  • [10054] CUC - CHECK USER CONTROLS.
  • [10134] VSS - VERIFY SYSTEM SECTOR.
  • [10192] COMMAND PROCESSING.
  • [10560] SUBROUTINES.
  • [10562] CFE - CREATE FNT/FST ENTRY FOR ATTACHED FILE.
  • [10644] PFE - PROCESS FILE ERROR CONDITION.
  • [10679] OVERLAYABLE SUBROUTINES.
  • [10684] CFM - CHECK FILE MODE.
  • [10856] CSL - CHECK SIZE LIMITS.
  • [10913] DLT - DETERMINE LOCAL USER TABLE TO UPDATE.
  • [11037] COMMAND PROCESSING.
  • [11039] CAT - CATALOG MAIN PROGRAM.
  • [11079] CATX - TERMINATE PROGRAM.
  • [11089] DPP - DROP PP.
  • [11097] PAS - *PFID* ACCESS SEARCH.
  • [11105] NCS - NORMAL CATALOG SEARCH.
  • [11114] ACS - ALTERNATE CATALOG SEARCH.
  • [11136] PDS - PERMIT DATA SEARCH.
  • [11281] SUBROUTINES.
  • [11283] SBS - SET STATUS OF BUFFER.
  • [11320] RBS - READ BUFFER FOR SEARCH.
  • [11369] MSR - MASS STORAGE READ ERROR PROCESSOR.
  • [11376] SHB - SEARCH CATALOG BUFFER.
  • [11535] WDB - WRITE BUFFER TO CENTRAL.
  • [11627] CCP - CHECK CATALOG PERMISSION.
  • [11820] DFS - DETERMINE FILE SIZE.
  • [11896] SPB - SEARCH PERMIT BUFFER.
  • [11938] CSA - COMPUTE SECTOR ADDRESS.
  • [11980] PCA - PROCESS CATALOG ADDRESS ACCESS MODE.
  • [12045] OVERLAYABLE SUBROUTINES.
  • [12047] CSU - CHECK FOR SPECIAL USER.
  • [12095] ISP - INITIALIZE SEARCH OF PERMANENT FILES.
  • [12284] COMMAND PROCESSING.
  • [12579] SUBROUTINES.
  • [12581] CUC - CHECK USER CONTROLS.
  • [12615] SUC - SET USER COUNTS IN SYSTEM SECTOR.
  • [12637] WSE - WRITE MASS STORAGE ERROR PROCESSOR.
  • [12696] COMMAND PROCESSING.
  • [12808] TRP - TERMINATE PROGRAM.
  • [12812] SUBROUTINES.
  • [12814] DDF - DELETE DIRECT ACCESS FILE.
  • [13016] SCP - SAVE CATALOG PARAMETERS.
  • [13034] SDD - SEARCH FOR DIRECT ACCESS DEVICE.
  • [13071] WCB - REWRITE CATALOG BUFFER.
  • [13112] WCE - REWRITE CATALOG ENTRY.
  • [13161] COMMAND PROCESSING.
  • [13353] SUBROUTINES.
  • [13355] UEP - UPDATE EXISTING PERMIT ENTRY.
  • [13413] COMMAND PROCESSING.
  • [13452] SUBROUTINES.
  • [13454] CAL - CHECK ACCESS LEVEL.
  • [13509] CCE - CHANGE CATALOG ENTRY.
  • [13725] CFB - CHECK FOR FILE BUSY.
  • [13794] CFN - CHECK FILE NAMES.
  • [13879] ICT - INTERLOCK CATALOG TRACK.
  • [13908] ISP - INITIALIZE SEARCH OF PERMANENT FILES.
  • [13955] PCC - PROCESS CATALOG READ ERROR FOR *CHANGE*.
  • [13964] SCT - SEARCH CATALOG.
  • [14052] SFL - SET FILE NAMES.
  • [14110] COMMAND PROCESSING.
  • [14206] SUBROUTINES.
  • [14208] CDA - COMPARE DISK ADDRESSES.
  • [14243] UAF - UPDATE CARTRIDGE ALTERNATE STORAGE FLAGS.
  • [14353] UFL - UPDATE FILE LENGTH.
  • [14418] UTF - UPDATE TAPE ALTERNATE STORAGE FLAGS.
  • [14573] WCE - REWRITE CATALOG ENTRY.
  • [14623] DEVICE-TO-DEVICE TRANSFER MAIN LOOP.
  • [14624] DTD - DEVICE TO DEVICE TRANSFER.
  • [14716] SUBROUTINES.
  • [14718] DPC - DECREMENT PRU COUNTER.
  • [14744] IBA - INCREMENT BUFFER ADDRESS.
  • [14767] PLE - PROCESS LENGTH ERROR.
  • [14787] PTE - PROCESS TRANSFER ERROR.
  • [14811] SDP - SWAP DISK PARAMETERS.
  • [14852] SNS - SET NEXT SECTOR.
  • [14884] WES - WRITE EOI SECTOR.
  • [14932] WNS - WRITE NEXT SECTOR.
  • [14997] WSE - WRITE MASS STORAGE ERROR PROCESSOR.
  • [15041] CES - CREATE EOI SECTOR.
  • [15104] ADT - APPEND DISK TRANSFER.
  • [15344] SUBROUTINES.
  • [15397] CTC - CHECK FOR TAPE ALTERNATE STORAGE COPY OF FILE.
  • [15458] GEE - GET EST ORDINAL FOR EVENT.
  • [15504] ISM - ISSUE REQUEST STAGE MESSAGE.
  • [15622] STR - SETUP *TDAM* REQUEST.
  • [15851] UPF - UPDATE PFC ON USER ACCESS.
  • [15928] SUBROUTINES.
  • [15930] IDR - INITIATE *DMP=* AND SET UP *PFM* RECALL REQUEST.
  • [16013] PWS - PREWRITE SYSTEM SECTOR AND EOI.
  • [16115] SCF - SET UP COMMUNICATION FILES.
  • [16273] SCP - SET UP CPU PARAMETERS.
  • [16923] SYSTEM ERROR PROCESSING.
  • [16925] SEP - SYSTEM ERROR PROCESSING.
  • [17007] E0C - EXIT 0 CASE PROCESSING.
  • [17043] E1C - EXIT 1 CASE PROCESSING.
  • [17105] E2C - EXIT 2 CASE PROCESSING.
  • [17132] E3C - EXIT 3 CASE PROCESSING.
  • [17152] E4C - EXIT 4 CASE PROCESSING.
  • [17186] E5C - EXIT 5 CASE PROCESSING.
  • [17214] E6C - EXIT 6 CASE PROCESSING.
  • [17252] E7C - EXIT 7 CASE PROCESSING.
  • [17271] SUBROUTINES.
  • [17273] CPN - COPY NAME.
  • [17308] GEA - GET ERROR MESSAGE RETURN ADDRESS.
  • [17325] IDM - ISSUE DAYFILE MESSAGE.
  • [17416] MEC - MODIFY ERROR CODES.
  • [17442] MFN - MERGE FILE NAME WITH MESSAGE.
  • [17512] PAF - PROCESS PF ACTIVITY COUNT AND LOCAL FILE FNT.
  • [17554] PEA - PROCESS ERRORS REQUIRING SPECIAL ACTION.
  • [17593] PEM - PROCESS ERROR MESSAGE.
  • [17664] TDMO - TABLE OF DAYFILE MESSAGE OPTIONS.
  • [17676] PPF - PROCESS SPECIAL *PFM* FILES.
  • [17730] RCL - RECALL PFM.
  • [17777] REM - RETURN ERROR MESSAGE.
  • [17822] SEQ - SET EQUIPMENT INFORMATION IN MESSAGE.
  • [17955] UFF - UPDATE FET FIELDS.
  • [17996] WCM - WRITE CONTROL POINT MESSAGE.
  • [18025] ERROR MESSAGES.
  • [18152] OVERLAYABLE SUBROUTINES.
  • [18154] CAD - CHECK FOR ACCESS DENIED.
  • [18210] CAI - CLEAR ALLOCATION AND *DAPF* INTERLOCKS.
  • [18249] CEI - CHECK FOR ERROR IDLE REQUIRED.
  • [18277] CLE - CHECK FOR LENGTH ERROR.
  • [18299] PDE - PROCESS *DMP=* JOB.
  • [18323] PRT - PROCESS PRESERVED AND RESERVED TRACKS.
  • [18397] CLF - COMPLETE LOCAL FILE FST.
  • [18420] DPP - DROP PP.
  • [18521] SFS - SET FET STATUS.

Source Code

PFM.txt
  1. IDENT PFM,PFM
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. EOR$ SET 0 UNCONDITIONAL POSITIONING IN *COMPRNS*
  6. EQV$ SET 0 DON-T VERIFY EST ORDINAL IN SYSTEM SECTOR
  7. QUAL$ SET 0 DEFINE UNQUALIFIED COMMON DECKS
  8. MSR$ SET 0 ERROR PROCESSING RNS MASS STORAGE READS
  9. IRA$ SET 0 EXTERNAL PRESET OF RANDOM ADDRESSING DECKS
  10. SCA$ SET 0 SET NO REJECT ON *UNLOAD*
  11. *COMMENT PFM - PERMANENT FILE MANAGER.
  12. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  13. TITLE PFM - PERMANENT FILE MANAGER.
  14. SPACE 4,10
  15. *** PFM - PERMANENT FILE MANAGER.
  16. * R. A. LARSEN. 71/01/19.
  17. * J. L. WARDELL. 72/07/14.
  18. * S. L. BETH. 74/10/25.
  19. * S. L. KSANDER. 75/02/20.
  20. * W. B. CHAPIN. 79/04/27.
  21. * P. C. SMITH. 79/04/27.
  22. * M. D. LEMBCKE. 83/01/12.
  23. * P. C. SMITH. 83/12/07.
  24. * B. J. SALCEDO. 85/01/22.
  25. SPACE 4,15
  26. *** *PFM* IS A PERMANENT FILE DRIVER CAPABLE OF CREATING
  27. * PERMANENT FILES ON ANY SYSTEM MASS STORAGE DEVICE. FILES
  28. * MAY BE OF ANY LENGTH AND ARE ALLOCATED ON THE DEVICE
  29. * ACCORDING TO THEIR LENGTH.
  30. *
  31. * *PFM* WILL PERFORM ALL THE NECESSARY TASKS TO COMPLETE THE
  32. * PERMANENT FILE REQUEST. THESE TASKS ARE SEARCH, CREATE OR
  33. * MODIFY USERS FILE CATALOG AND TRANSFER FILE FROM MASS
  34. * STORAGE TO MASS STORAGE IF REQUIRED.
  35. *
  36. * *PFM* MAY BE CALLED BY ANY ROUTINE THAT SETS UP THE PROPER
  37. * CALL BLOCK IN CENTRAL MEMORY.
  38. QUAL SPACE 4,10
  39. * DEFINE QUAL BLOCK ORDER.
  40.  
  41.  
  42. QUAL PRS
  43. QUAL 3PA
  44. QUAL 3PB
  45. QUAL 3PC
  46. QUAL 3PD
  47. QUAL 3PE
  48. QUAL 3PF
  49. QUAL 3PG
  50. QUAL 3PH
  51. QUAL 3PI
  52. QUAL 3PJ
  53. QUAL 3PK
  54. QUAL 3PL
  55. QUAL 3PM
  56. QUAL 3PN
  57. QUAL 3PO
  58. QUAL 3PP
  59. QUAL 3PQ
  60. QUAL 3PR
  61. QUAL 3PS
  62. QUAL 3PT
  63. QUAL 3PU
  64. QUAL
  65. SPFM SPACE 4,10
  66. LIST F,X
  67. *CALL COMSPFM
  68. LIST *
  69. SPACE 4,10
  70. ** ROUTINES USED.
  71. *
  72. * 0AV - ACCOUNT VERIFICATION.
  73. * 0BF - BEGIN FILE.
  74. * 0DF - DROP FILES.
  75. * 0RF - UPDATE RESOURCE FILE.
  76. TITLE MACRO DEFINITIONS.
  77. SPACE 4,10
  78. ** MACROS.
  79. COMPARE SPACE 4,15
  80. ** COMPARE - COMPARE TWO 36 BIT FIELDS.
  81. *
  82. * COMPARE X,Y
  83. *
  84. * ENTRY X = FIELD TO BE COMPARED WITH *PFC* ENTRY FIELD Y.
  85. * Y = FIELD IN *PFC* ENTRY TO BE COMPARED WITH X.
  86. * (CI) = *PFC* ENTRY BASE ADDRESS.
  87. *
  88. * EXIT (A) = ZERO IF FIELDS ARE IDENTICAL.
  89. *
  90. * CALLS COF.
  91. *
  92. * USES T1, T2, T3.
  93.  
  94.  
  95. COMPARE MACRO X,Y
  96. MACREF COMPARE
  97. LDC X
  98. STD T1
  99. LDC Y
  100. RJM COF
  101. COMPARE ENDM
  102. ERROR SPACE 4,25
  103. ** ERROR - CALL ERROR PROCESSOR.
  104. *
  105. * ERROR MNE,CH,IW,EQ,EXC,EI
  106. *
  107. * ENTRY MNE = ERROR MESSAGE MNEMONIC.
  108. * CH = IF SET DO NOT RELEASE CHANNEL.
  109. * IW = IF SET DO NOT CLEAR CATALOG INTERLOCK
  110. * (DUMMY PARAMETER).
  111. * EQ = IF SET, (EQ) = EST ORDINAL OF DEVICE FOR ERROR
  112. * PROCESSING.
  113. * IF CLEAR, (A) = EST ORDINAL.
  114. * EXC = EXIT CASE FOR COMPLETION PROCESSING:
  115. * 0 NORMAL ERROR PROCESSING (EP CONTROLLED).
  116. * 1 TIME-DEPENDENT ROLLOUT (EP AND UP CONTROLLED).
  117. * 2 PF-STAGE ROLLOUT (UP OR RT CONTROLLED).
  118. * 3 UNCONDITIONAL ABORT.
  119. * 4 TIME-DEPENDENT RECALL (EP AND UP CONTROLLED).
  120. * 5 SECURITY VIOLATION ERROR PROCESSING.
  121. * 6 TIME-DEPENDENT ROLLOUT (RT CONTROLLED).
  122. * 7 ISSUE ERRLOG MESSAGE BUT DO NOT ABORT JOB.
  123. * EI = IF SET, SET ERROR IDLE ON DEVICE GIVEN IN *EQ*.
  124. *
  125. * NOTES IF MODIFYING THIS MACRO, CHECK ALL CALLS TO IT.
  126.  
  127.  
  128. ERROR MACRO MNE,CH,IW,EQ,EXC,EI
  129. MACREF ERROR
  130. .A IFC NE,$EQ$$
  131. LDD EQ
  132. .A ENDIF
  133.  
  134. RJM ERR
  135. VFD 3/EXC,7//ERRMSG/MNE,1/EI,1/CH
  136. ERROR ENDM
  137. ERRMSG SPACE 4,10
  138. ** ERRMSG - SETUP ERROR MESSAGE CONSTANTS.
  139. *
  140. *NUM ERRMSG CLASS,MSG
  141. *
  142. * ENTRY *NUM* = ERROR CODE MNEMONIC.
  143. * *CLASS* = ERROR TYPE FOR MESSAGE PROCESSING.
  144. * *MSG* = ERROR MESSAGE INCLOSED IN PARENTHESIS.
  145.  
  146.  
  147. NOREF .LEN
  148.  
  149. MACRO ERRMSG,NUM,CLASS,MSG
  150. MACREF ERRMSG
  151. INDEX /ERRMSG/NUM,CLASS
  152. ERRMT RMT
  153. INDEX /ERRMSG/NUM,(=C*MSG*)
  154. ERRMT RMT
  155. .MSGM MICRO 1,,*MSG*
  156. .LEN MICCNT .MSGM
  157. .A IFEQ CLASS,0
  158. ERRNG 29D-.LEN MESSAGE TOO LONG
  159. .A ELSE
  160. ERRNG 38D-.LEN MESSAGE TOO LONG
  161. .A ENDIF
  162. ENDM
  163. EXIT SPACE 4,15
  164. ** EXIT - CALL ERROR PROCESSING FOR SPECIAL (NON-ABORT) EXIT.
  165. *
  166. * EXIT MNE,CH,IW,EQ,EXC,EI
  167. *
  168. * SEE *ERROR* MACRO FOR EXPLANATION OF PARAMETERS.
  169.  
  170. EXIT MACRO MNE,CH,IW,EQ,EXC,EI
  171. MACREF EXIT
  172. .A IFC NE,$EQ$$
  173. LDD EQ
  174. .A ENDIF
  175.  
  176. RJM ERR
  177. VFD 3/EXC,7//ERRMSG/MNE,1/EI,1/CH
  178. EXIT ENDM
  179. OVERLAY SPACE 4,10
  180. ** OVERLAY CONTROL.
  181.  
  182.  
  183. .N SET 0
  184. OVLB MICRO 1,, 3P BASE OVERLAY NAME
  185. OVERLAY SPACE 4,10
  186. ** OVERLAY - GENERATE OVERLAY CONSTANTS.
  187. *
  188. *
  189. * OVERLAY (TEXT),LOAD,NQ
  190. * ENTRY *TEXT* = TEXT OF SUBTITLE.
  191. * *LOAD* = IF DEFINED SPECIFIES ORGIN ADDRESS.
  192. * *NQ* IF SPECIFIED OVERLAY IS NOT QUALIFIED.
  193.  
  194.  
  195. PURGMAC OVERLAY
  196.  
  197. OVERLAY MACRO TEXT,LOAD,NQ
  198. QUAL
  199. NOREF .N
  200. .N SET .N+1
  201. .M MICRO .N,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ
  202. .O MICRO 1,3, "OVLB"".M"
  203. .P MICRO 2,2, ".O"
  204. .Q MICRO 1,3, O".P"
  205. IFC EQ,*NQ**,1
  206. QUAL ".O"
  207. TTL PFM/".O" - TEXT
  208. TITLE
  209. IDENT ".O",".Q"X TEXT
  210. *COMMENT PFM - TEXT
  211. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  212. ORG LOAD OVLC
  213. ".Q" SUBR
  214. MACREF OVERLAY
  215. ENDM
  216. CSR SPACE 4,10
  217. ** CSR - DEFINE 24 BIT QUANTITY FROM 18 BIT EQUATE.
  218. *
  219. * CSR R
  220. * *R* = VALUE TO BE EXPANDED TO 24 BITS.
  221.  
  222.  
  223. CSR MACRO R
  224. LOCAL N,O,P,Q
  225. MACREF CSR
  226. N SET R
  227. O SET R/100B
  228. P SET O*100B
  229. Q SET R-P
  230. CON O,Q*100B
  231. ENDM
  232. TITLE COMMON DECKS.
  233. SPACE 4,10
  234. *CALL COMPMAC
  235. *CALL COMSACC
  236. *CALL COMSCPS
  237. *CALL COMSEVT
  238. *CALL COMSLFD
  239. *CALL COMSLSD
  240. *CALL COMSMMF
  241. *CALL COMSMLS
  242. MSP$ EQU 1
  243. *CALL COMSMSP
  244. *CALL COMSMST
  245. QUAL MTX
  246. *CALL COMSMTX
  247. QUAL *
  248. *CALL COMSPIM
  249. *CALL COMSREM
  250. QUAL RSX
  251. *CALL COMSRSX
  252. QUAL *
  253. *CALL COMSSCD
  254. *CALL COMSSRU
  255. *CALL COMSSSD
  256. *CALL COMSSSJ
  257. *CALL COMSWEI
  258. *CALL COMSZOL
  259. SPACE 4,10
  260. TITLE STORAGE ASSIGNMENTS AND ASSEMBLY CONSTANTS.
  261. **** DIRECT LOCATION ASSIGNMENTS.
  262.  
  263.  
  264. FS EQU 20 - 24 FST ENTRY
  265. UI EQU 25 - 26 USER INDEX
  266. LF EQU 27 - 30 LENGTH OF FILE
  267. CN EQU 30 - 34 SCRATCH
  268. P0 EQU 31 TEMPORARY LOCATIONS
  269. P1 EQU 32
  270. P2 EQU 33
  271. P3 EQU 34
  272. EB EQU 35 END BUFFER
  273. PI EQU 36 - 37 PERMITTED USER INDEX
  274. FN EQU 40 - 44 FILE NAME
  275. PB EQU 45 POINTER TO PERMIT BUFFER
  276. PP EQU 46 INDEX IN PERMIT BUFFER
  277. NF EQU 45 - 46 NUMBER OF FILES IN CATALOG
  278. SA EQU 45 - 46 SPACE AVAILABLE
  279. HL EQU 47 LENGTH OF HOLE
  280. FA EQU 57 LOCAL FNT ENTRY OFFSET
  281. EQ EQU 60 PERMANENT FILE EST ORDINAL
  282. RI EQU 61 - 62 PERMIT RANDOM INDEX
  283. CS EQU 61 - 62 CUMULATIVE SIZE OF FILES IN CATALOG
  284. BB EQU 63 BUFFER BASE ADDRESS
  285. * THE NEXT FIVE CELLS MUST BE CONTIGUOUS.
  286. HB EQU 63 POINTER TO HOLE BUFFER
  287. HP EQU 64 INDEX IN HOLE BUFFER
  288. CB EQU 65 POINTER TO FILE CATALOG BUFFER
  289. RT EQU CB *RT* BOOLEAN (1 = SET)
  290. CI EQU 66 INDEX IN FILE CATALOG BUFFER
  291. UP EQU CI *UP* BOOLEAN (1 = SET)
  292. EP EQU 67 END BUFFER POINTER
  293. *EP EQU EP *EP* BOOLEAN (1 = SET)
  294.  
  295. CC EQU IR+2 COMMAND CODE
  296.  
  297. ****
  298. SPACE 4,10
  299. * ASSEMBLY CONSTANTS.
  300.  
  301.  
  302. BUF1 EQU BFMS-505 CATALOG BUFFER + TRACK AND SECTOR POINTERS
  303. BUF2 EQU BUF1-505 CATALOG BUFFER + TRACK AND SECTOR POINTERS
  304. MXRL EQU 7 MAXIMUM TDAM RETRY COUNT
  305. SSLE EQU 10 LENGTH OF SYSTEM SECTOR DATA (CM WORDS)
  306. UIRT EQU 300 UTILITY INTERLOCK ROLLOUT TIME
  307. SPACE 4,10
  308. * *ERROR*/*EXIT* MACRO PARAMETER VALUES.
  309.  
  310.  
  311. EC0 EQU 0 NORMAL ERROR PROCESSING (EP CONTROLLED)
  312. EC1 EQU 1 TIME-DEPENDENT ROLLOUT (EP/UP CONTROLLED)
  313. EC2 EQU 2 PF-STAGE ROLLOUT (UP OR RT CONTROLLED)
  314. EC3 EQU 3 UNCONDITIONAL ABORT
  315. EC4 EQU 4 TIME-DEPENDENT RECALL (EP/UP CONTROLLED)
  316. EC5 EQU 5 SECURITY VIOLATION
  317. SVE EQU EC5 SECURITY VIOLATION
  318. EC6 EQU 6 TIME-DEPENDENT ROLLOUT (RT CONTROLLED)
  319. EC7 EQU 7 ISSUE ERRLOG MESSAGE BUT DO NOT ABORT JOB
  320.  
  321. CH EQU 1 CHANNEL NOT INTERLOCKED
  322. EI EQU 1 SET ERROR IDLE
  323.  
  324. TITLE MEMORY ASSIGNMENTS.
  325. PFM SPACE 4,10
  326. ** PFM - PERMANENT FILE MANAGER RESIDENT MEMORY LOCATIONS.
  327.  
  328.  
  329. ORG PPFW
  330.  
  331. PFM LJM /PRS/PRS
  332. PFAC EQU *-2 ACCOUNTING WORD OF USER
  333. BSSZ 3
  334. PFSN BSSZ 5 SYSTEM FILE NAME
  335.  
  336.  
  337. * THE NEXT 5 BYTES MUST BE CONTIGUOUS.
  338.  
  339. SVAL CON 0 SECURITY VALIDATION BITS
  340. PFAL CON 0 JOB ACCESS LEVEL
  341. PFFC BSSZ 3 JOB ACCESS CATEGORIES
  342.  
  343.  
  344. * THE NEXT 8 CM WORDS MUST REMAIN IN THE SAME ORDER AS THE
  345. * CALL BLOCK (FET).
  346.  
  347. TFET EQU *
  348. PFFN BSSZ 5 PERMANENT FILE NAME
  349. PFSR EQU PFFN+3 SPECIAL REQUESTS
  350. MODE EQU PFFN+4 MODE OF FILE PERMISSION
  351. PFOU BSSZ 5 USER NAME
  352. CTDN EQU PFOU+3 DEVICE NUMBER FOR CATALOG LIST
  353. PRU EQU PFOU+3 PRUS DESIRED FOR DEFINE
  354. PFPW BSSZ 3 PASSWORD
  355. EMRA BSSZ 2 ERROR MESSAGE RETURN ADDRESS
  356. PUCW BSSZ 5 USER CONTROL WORD
  357. PFPN BSSZ 5 PF CONTROL WORD (42/ PN, 6/, 12/ FAM EQ)
  358. * PN = PACK NAME.
  359. PFNF BSSZ 5 NEW FILE NAME
  360. PFXT EQU PFNF+3 ACCESS EXPIRATION DATE/TERM
  361. BSSZ 5
  362. PFRS EQU * PREFERRED RESIDENCE *PR*
  363. PFBR EQU * BACKUP REQUIREMENT *BR*
  364. PFSS CON 0 SUBSYSTEM *SS* (3/PR,3/BR,6/SS)
  365. PFAP BSSZ 1 ALTERNATE CATLIST PERMISSION
  366. BSSZ 1 RESERVED
  367. PFRB BSSZ 2 (6/0,18/RB)
  368. * RB = SPECIAL REQUEST BLOCK POINTER
  369. TFETL EQU *-TFET LENGTH OF FET PARAMETERS
  370.  
  371.  
  372. * THE NEXT 4 CM WORDS MUST REMAIN IN THE SAME ORDER AS THE
  373. * SPECIAL REQUEST BLOCK.
  374.  
  375. PFSB BSSZ 2 RESERVED
  376. PFID BSSZ 3 PERMANENT FILE CATALOG ADDRESS
  377. PFES BSSZ 1 ALTERNATE STORAGE ERROR STATUS
  378. PFAT BSSZ 1 CARTRIDGE ALTERNATE STORAGE TYPE
  379. PFTS EQU PFAT TAPE ALTERNATE STORAGE TAPE SEQUENCE NUMBER
  380. PFAA BSSZ 3 CARTRIDGE ALTERNATE STORAGE ADDRESS
  381. PFTV EQU PFAA+1 TAPE ALTERNATE STORAGE TAPE VSN
  382. PFOA BSSZ 2 OPTICAL DISK ADDRESS
  383. PFCD BSSZ 3 CREATION DATE
  384. PFFM BSSZ 3 FAMILY AND USER INDEX
  385. PFSU BSSZ 2 USER INDEX
  386.  
  387.  
  388. * THE FOLLOWING THREE BYTES ARE USED FOR ONE PURPOSE
  389. * FOR DIRECT ACCESS FUNCTIONS, AND FOR A DIFFERENT PURPOSE
  390. * FOR INDIRECT ACCESS FUNCTIONS.
  391.  
  392. FRSM BSS 0 DEVICE ACCESS MASK FOR FILE RESIDENCY
  393. * 1/A,1/B,2/,8/DEVICE MASK
  394. * A = SPECIAL USER INDEX PRESENT
  395. * B = *LIFT* FILES ALLOWED.
  396. MXFS CON 0 MAXIMUM INDIRECT FILE SIZE ALLOWED
  397. MXDS BSS 0 MAXIMUM DIRECT ACCESS FILE SIZE (2 WORDS)
  398. MXCS CON 0,0 MAXIMUM CUMULATIVE INDIRECT FILE
  399. * ALLOWED
  400. MXNF CON 0 MAXIMUM NUMBER OF FILES ALLOWED
  401.  
  402.  
  403. * THE NEXT TWO TERMS MUST BE CONTIGUOUS.
  404.  
  405. ACNF CON 0,0 ACTUAL NUMBER OF FILES
  406. CIFS CON 0,0 ACTUAL CUMULATIVE INDIRECT FILE SIZE
  407.  
  408.  
  409. * DEVICE TO DEVICE TRANSFER POINTERS
  410. * (CATALOG SEARCH POINTERS).
  411.  
  412. SDAA CON 0 EST ORDINAL
  413. SDAB CON 0 TRACK
  414. SDAC CON 0 SECTOR
  415.  
  416.  
  417. * *PFM* INTERNAL STATUS BITS.
  418.  
  419. STAT CON 0 *PFM* INTERNAL STATUS BITS
  420.  
  421. STXD EQU 1 PASSWORD EXPIRATION DATE SPECIFIED
  422. STRX EQU 2 RESEX INITIATED ON THIS REQUEST
  423. STAB EQU 4 ABORT AFTER PERMIT CHECK (*APPEND*)
  424. STTA EQU 10 TAPE ALTERNATE STORAGE REQUEST
  425. STPR EQU 20 PERMITS HAVE BEEN READ
  426. STBR EQU 40 *BFMS* (*END* BUFFER) HAS BEEN REUSED
  427. STAC EQU 100 STATISTICAL ACCUMULATION ENABLED
  428. STPD EQU 200 PRIVATE DEVICE
  429. STEC EQU 400 APPEND TO END OF CHAIN
  430. STBD EQU 1000 MASTER DEVICE IS BUFFERED DEVICE
  431. STNS EQU 2000 NO JOB SUSPENSION WHEN DEVICE INACCESSIBLE
  432. STXC EQU 4000 EXTENDING INDIRECT CHAIN
  433.  
  434. STAU CON 0 *PFM* INTERNAL STATUS BITS (PART 2)
  435.  
  436. STAJ BITSET 0 ABORT JOB
  437. STDP BITSET 1 DROP PP
  438. STDS BITSET 2 DROP PP WITH ERROR STATUS IN FET
  439. STRP BITSET 3 RECALL *PFM*
  440.  
  441.  
  442. * *PFM* RESTART FLAGS FOR RECALL.
  443.  
  444. PWRF BSS 1 RESTART FLAGS
  445.  
  446. RFAM BITSET 0 ACCOUNTING MESSAGES ISSUED FLAG
  447. RFAC BITSET 1 ACCESS COUNTS UPDATED FLAG
  448. RFPC BITSET 2 PERMIT COUNTS UPDATED FLAG
  449. RFRR BITSET 3 RETRY REQUEST FLAG
  450.  
  451.  
  452. * MISCELLANEOUS MEMORY LOCATIONS.
  453.  
  454. ACCM CON 0 ACTUAL ACCESS MODE (ON *GET*/*OLD*)
  455. AILK CON 0 TRACK FOR ALLOCATION INTERLOCK
  456. AIPF CON 0,0 ACCUMULATOR INCREMENT FOR PF ACCESS
  457. AIPR CON 0,0 ACCUMULATOR INCREMENT FOR PRU COUNT
  458. APDK BSSZ 5 DEFERRED DELINK REQUEST (*APPEND*)
  459. * (SECOND BYTE NONZERO IF DELINK REQUESTED)
  460. APLF CON 0,0 LENGTH OF APPENDAGE
  461. APSC CON 0 FIRST SECTOR OF *APPEND* ORIGINAL FILE
  462. APTK CON 0 FIRST TRACK OF *APPEND* ORIGINAL FILE
  463. CPTF CON 0 CPU TRANSFER FLAG
  464. DAHP CON 0 DIRECT ACCESS HOLE TRACK
  465. CON 0 DIRECT ACCESS HOLE SECTOR
  466. CON 0 DIRECT ACCESS HOLE OFFSET
  467. DAIF CON 0 DIRECT ACCESS FILE INTERLOCK FLAG
  468. DTMD CON EPRW DEVICE TRANSFER MODE (NONZERO = REWRITE)
  469. DVLW BSSZ 5 DEVICE LAYOUT WORD
  470. EBSC CON 0 END BUFFER SECTOR, IF END BUFFER IN *BFMS*
  471. EBTK CON 0 END BUFFER TRACK, IF END BUFFER IN *BFMS*
  472. EPFA CON 0 EST ORDINAL IF PF ACTIVITY COUNT SET
  473. EPOP CON 0 ERROR OPTIONS (7/,1/SA,1/UP,1/EP,1/RT,1/IP)
  474. EXPC CON 0 EXPLICIT PERMIT COUNT
  475. FERT CON 0 NON-ZERO IF REAL-TIME BIT SET IN FET
  476. FETL CON TFETL/5+10B MAXIMUM POSITION OF FET PF PARAMETERS
  477. FNMD CON 0 *FNT* STATUS MODE EQUIVALENCE
  478. FNTA CON 0 FNT ADDRESS FOR LOCAL FILE
  479. FNTB CON 0 FNT ADDRESS FOR /PFM*PFN/
  480. FNTC CON 0 FNT ADDRESS FOR /PFM*ILK/
  481. FNTD CON 0 FNT ADDRESS FOR /PFM*APF/
  482. IACP CON 100 INCREMENT ACCESS COUNT IN PERMIT
  483. IAIF CON 0 INDIRECT ALLOCATION INTERLOCK FLAG
  484. JORG CON 0 JOB ORIGIN TYPE
  485. LFAL CON 0 LOCAL FILE ACCESS LEVEL
  486. LFEF CON 0 LOCAL FILE EMPTY FLAG
  487. MSTA CON 0 ADDRESS OF MASTER DEVICE MST/10
  488. NPHA CON 0 NEXT PERMIT HOLE ADDRESS (FROM *SPI*)
  489. PFCA CON 0 ADDRESS OF PFC ENTRY (*SAVE*/*REPLACE*)
  490. PFDN CON 0 DEVICE NUMBER OF EXISTING FILE
  491. PFEQ CON 0 DIRECT ACCESS PERMANENT FILE EST ORDINAL
  492. PFFT CON 0 DIRECT ACCESS PERMANENT FILE FIRST TRACK
  493. PFPT CON 0077 MULTI-LEVEL PERMISSION FLAG
  494. PFSP CON 0 SECURITY PROCESSING BIT
  495. PFUC BSSZ 1 USER CONTROLS
  496. PTKT CON 0 PRESERVED TRACK
  497. PWCC CON 0 *PFM* COMMAND CODE FROM *RPFSTAT* REQUEST
  498. PXDT BSSZ 2 PASSWORD EXPIRATION DATE
  499. RQDT VFD 5/0,1/0,18/DFPT REQUESTED DEVICE TYPE
  500. * (BIT 18 SET IF DEVICE TYPE SPECIFIED IN FET)
  501. * (THE ACTUAL VALUE OF *DFPT* IS READ FROM *PFNL*)
  502. RTKE CON 0 RESERVED TRACK EST ORDINAL
  503. RTKT CON 0 RESERVED TRACK
  504. SAPF CON 20 SET ACCOUNTING PERMIT FLAG
  505. SSID CON 0 SUBSYSTEM ID
  506. SSJS CON 0 NONZERO IF CALLER IS *SSJ=* PROGRAM
  507. SSOM CON 0 OPERATING SYSTEM SECURITY MODE
  508. SSYS CON 0 NON-ZERO IF CALLER IS SUBSYSTEM
  509. TITLE RESIDENT SUBROUTINES.
  510. SFA SPACE 4,10
  511. ** SFA - SET FET ADDRESS.
  512. *
  513. * ENTRY (SFAA - SFAA+1) PRESET TO FET ADDRESS BY *PRS*.
  514. *
  515. * EXIT (A) = ABSOLUTE FET ADDRESS.
  516.  
  517.  
  518. SFA SUBR ENTRY/EXIT
  519. SFAB LDN 0
  520. * LDD RA (FET ADDRESS VALIDATED)
  521. SHN 6
  522. SFAA ADC 0 PRESET FET ADDRESS
  523. UJN SFAX RETURN
  524. CCI SPACE 4,10
  525. ** CCI - CLEAR CATALOG INTERLOCK.
  526. *
  527. * ENTRY (EQ) = MASTER DEVICE EST ORDINAL.
  528. * (CCIA) = CATALOG TRACK.
  529. * (CCIB) = NONZERO IF CATALOG TRACK INTERLOCK SET.
  530. *
  531. * USES CM - CM+4.
  532. *
  533. * MACROS MONITOR.
  534.  
  535.  
  536. CCI SUBR ENTRY
  537. CCIB LDN 0 (NONZERO IF INTERLOCK SET)
  538. ZJN CCIX IF CATALOG TRACK INTERLOCK NOT SET
  539. LDD EQ
  540. STD CM+1
  541. LDC ** (CATALOG TRACK)
  542. CCIA EQU *-1
  543. STD CM+2
  544. LDN CTIS CLEAR TRACK INTERLOCK
  545. STD CM+3
  546. MONITOR STBM
  547. SOM CCIB CLEAR *INTERLOCK SET* FLAG
  548. UJN CCIX RETURN
  549. CTA SPACE 4,10
  550. ** CTA - CALCULATE TRT ADDRESS.
  551. *
  552. * ENTRY (A) = ADDRESS OF *TRLL* IN MST.
  553. *
  554. * EXIT (A) = FWA OF TRT.
  555. *
  556. * USES CM - CM+4.
  557.  
  558.  
  559. CTA SUBR ENTRY/EXIT
  560. CRD CM GET FWA OF TRT
  561. LDD CM+3
  562. LPN 77
  563. SHN 14
  564. LMD CM+4
  565. UJN CTAX RETURN
  566. ERR SPACE 4,25
  567. ** ERR - PROCESS ERROR.
  568. *
  569. * ENTRY (A) = EST ORDINAL IF REQUIRED FOR THE ERROR.
  570. * (T4) = CHANNEL TO BE RELEASED.
  571. * ((ERR)) = VFD 3/EXC,7/MNE,1/EIF,1/CIF.
  572. * (EXC) = EXIT CASE.
  573. * (MNE) = MESSAGE MNEUMONIC ERROR CODE VALUE.
  574. * (EIF) = ERROR IDLE FLAG.
  575. * (CIF) = CHANNEL NOT INTERLOCKED FLAG.
  576. * (CSWD - CSWD+4) = CATALOG STATUS INTERLOCK WORD.
  577. * (ERRB) = 0 IF PFM CREATED FNT/FST ENTRY.
  578. * (ERRC) = FOLDED EVENT FOR ROLLOUT.
  579. * (ERRD) = ROLLOUT TIME.
  580. * (ERRE) = EST ORDINAL FOR EVENT.
  581. *
  582. * EXIT (P1) = (ERR+0).
  583. * (P2) = EST ORDINAL.
  584. *
  585. * USES P1, P2, T1.
  586. *
  587. * CALLS CCI.
  588. *
  589. * MACROS ENDMS, EXECUTE.
  590.  
  591.  
  592. ERR CON 0 ENTRY, PARAMETER ADDRESS
  593. STD P2 SAVE EST ORDINAL
  594. LDM ERR SAVE PARAMETERS *EXC*, *MNE*, *ERC*
  595. STD T1
  596. LDI T1
  597. STD P1
  598. LPN 1
  599. NJN ERR1 IF CHANNEL NOT INTERLOCKED
  600. ENDMS RELEASE CHANNEL IF RESERVED
  601. ERR1 RJM CCI CLEAR CATALOG INTERLOCK IF SET
  602. EXECUTE 3PT PROCESS ERROR
  603.  
  604. ERRB CON 0 FILE PRESENT BOOLEAN
  605. ERRC CON 0 FOLDED EVENT FOR ROLLOUT
  606. * (TRACK FOR BAD CATALOG/PERMIT SECTOR)
  607. ERRD CON 0 ROLLOUT TIME
  608. * (SECTOR FOR BAD CATALOG/PERMIT SECTOR)
  609. ERRE CON 0 EST ORDINAL FOR EVENT
  610. HNG SPACE 4,10
  611. ** HNG - HANG PP.
  612. *
  613. * MACROS MONITOR.
  614.  
  615.  
  616. HNG CON 0 ENTRY (RETURN ADDRESS)
  617. HNG1 MONITOR HNGM HANG
  618. UJN HNG1 CONTINUE TO HANG
  619. PDA SPACE 4,20
  620. ** PDA - PROCESS DEVICE AVAILABILITY.
  621. *
  622. * ENTRY (A) = 0 IF DEVICE AVAILABLE.
  623. * (A) .NE. 0 IF DEVICE INACCESSIBLE.
  624. * (T4) = CHANNEL FOR DEVICE, IF RESERVED.
  625. * (T5) = EST ORDINAL OF DEVICE.
  626. * (FERT) = REAL-TIME PROCESSING FLAG.
  627. * (STAT) = *STNS* BIT SET FOR NO JOB SUSPENSION.
  628. * (SSYS) = SUBSYSTEM FLAG.
  629. * DRIVER SOFTWARE IS LOADED.
  630. *
  631. * EXIT RETURN IF PROCESSING IS TO CONTINUE.
  632. *
  633. * TO *ERR* IF DEVICE IS INACCESSIBLE AND CALLER HAS
  634. * REAL-TIME PROCESSING SET IN FET OR IS NOT A SUBSYSTEM.
  635. *
  636. * MACROS ERROR.
  637.  
  638.  
  639. PDA SUBR ENTRY/EXIT
  640. ZJN PDAX IF DEVICE AVAILABLE, RETURN
  641. LDM STAT
  642. LPK STNS
  643. NJN PDAX IF PROCESSING TO CONTINUE, RETURN
  644. LDM FERT
  645. NJN PDA1 IF REAL-TIME PROCESSING SELECTED
  646. LDM SSYS
  647. NJN PDAX IF SUBSYSTEM, RETURN
  648. PDA1 ERROR WID,,,T5,EC6 * WAITING - INACCESSIBLE DEVICE.*
  649. PDV SPACE 4,20
  650. ** PDV - PROCESS DEVICE STATUS.
  651. *
  652. * ENTRY (T4) = CHANNEL FOR DEVICE, IF RESERVED.
  653. * (T5) = EST ORDINAL OF DEVICE.
  654. * (FERT) = REAL-TIME PROCESSING FLAG.
  655. * (STAT) = *STNS* BIT SET FOR NO JOB SUSPENSION.
  656. * (SSYS) = SUBSYSTEM FLAG.
  657. * DRIVER SOFTWARE IS LOADED.
  658. *
  659. * EXIT RETURN IF PROCESSING IS TO CONTINUE.
  660. *
  661. * CALLS PDA.
  662.  
  663.  
  664. PDV SUBR ENTRY/EXIT
  665. LDM MSD GET DEVICE STATUS
  666. LPC 100
  667. RJM PDA PROCESS DEVICE AVAILABILITY
  668. UJN PDVX IF PROCESSING TO CONTINUE, RETURN
  669. PES SPACE 4,15
  670. ** PES - PROCESS I/O ERROR STATUS.
  671. *
  672. * ENTRY (T4) = CHANNEL FOR DEVICE.
  673. * (T5) = EST ORDINAL OF DEVICE.
  674. * (RDCT) = DRIVER STATUS.
  675. * A MASS STORAGE DRIVER HAS ENCOUNTERED AN I/O ERROR.
  676. *
  677. * EXIT ERROR IS UNRECOVERABLE.
  678. * DEVICE IS INACCESSIBLE BUT CALLER IS ALLOWED
  679. * TO PROCEED.
  680. *
  681. * CALLS PDA.
  682.  
  683.  
  684. PES SUBR ENTRY/EXIT
  685. LDM RDCT CHECK DRIVER STATUS
  686. SHN 21-12
  687. MJN PESX IF UNRECOVERABLE ERROR, RETURN
  688. * LDN 1 DEVICE INACCESSIBLE
  689. RJM PDA PROCESS DEVICE STATUS
  690. UJN PESX RETURN
  691. SFN SPACE 4,10
  692. ** SFN - SET FILE NAME.
  693. *
  694. * ENTRY (A) = ADDRESS OF FILE NAME TO BE MOVED.
  695. *
  696. * EXIT (FN - FN+3) = FILE NAME.
  697. * (FN+4) = FNT STATUS FIELD.
  698. *
  699. * USES FN - FN+4.
  700.  
  701.  
  702. SFN SUBR ENTRY/EXIT
  703. STM SFNA
  704. LDD MA
  705. CWM *,ON
  706. SFNA EQU *-1
  707. SBN 1
  708. CRD FN
  709. LDD FN+3
  710. SCN 77
  711. STD FN+3
  712. SFNB LDN 0 SET FILE STATUS
  713. * LDN ST (FILE STATUS FIELD FOR FNT)
  714. STD FN+4
  715. UJN SFNX
  716. SPACE 4,10
  717. * RESIDENT COMMON DECKS.
  718.  
  719.  
  720. *CALL COMPSEI
  721. SPACE 4,10
  722. OVLA EQU *+5 OVERLAY LOAD ADDRESS
  723. SPN SPACE 4,15
  724. ** SPN - SET PERMANENT FILE NAME.
  725. *
  726. * SETS PERMANENT FILE NAME INTO (FN - FN+4).
  727. *
  728. * ENTRY (PFFN - PFFN+4) = PERMANENT FILE NAME.
  729. * (PFSN - PFSN+4)= LOCAL FILE NAME.
  730. *
  731. * EXIT (FN - FN+4) = PERMANENT FILE NAME.
  732. *
  733. * CALLS SFN.
  734.  
  735.  
  736. SPN SUBR ENTRY/EXIT
  737. LDM PFFN
  738. ZJN SPN1 IF PF NAME NOT SPECIFIED
  739. LDN PFFN-PFSN
  740. SPN1 ADC PFSN
  741. RJM SFN
  742. UJN SPNX
  743. SPACE 4,15
  744. OVLD EQU *+5 LOCAL FILE PROCESSING LOAD ADDRESS
  745. TITLE PRESET.
  746. QUAL PRS
  747. *** PFM PRESET PROCESSING INCLUDES -
  748. *
  749. * VERIFICATION OF FET PARAMETERS.
  750. * VERIFICATION OF USER VALIDATION ALLOWANCES.
  751. * PLACING REQUEST IN RECALL IF CATALOG REQUIRED IS INTERLOCKED.
  752. * ISSUING ACCOUNTING MESSAGES.
  753. * LOADING OF PROPER FUNCTION PROCESSOR OVERLAY.
  754. SPACE 4,10
  755. *** DAYFILE MESSAGES.
  756. *
  757. * FOR DESCRIPTIONS OF ERROR MESSAGES CONSULT DOCUMENTATION OF
  758. * ERROR PROCESSING OVERLAY (3PT).
  759. SPACE 4,15
  760. *** ACCOUNT FILE MESSAGES.
  761. *
  762. * ACCOUNTING MESSAGES ARE ISSUED EVEN IF OPERATION IS
  763. * NOT SUCCESSFUL. I.E. FILE NOT FOUND, ETC....
  764. * MESSAGE IS OF FOLLOWING FORMAT.
  765. *
  766. * GPFC, FILENAME, USERNAME, PACKNAME.
  767. *
  768. * GPFC - G=GROUP (S=STATISTICS, A=ACCOUNTING,
  769. * M=MULTI LEVEL SECURITY).
  770. * P=PERMANENT FILE RELATED MESSAGE.
  771. * FC=PF FUNCTION CODE MNEMONIC.
  772. *
  773. * COMMA SEPARATORS WILL BE PRESENT EVEN IF DATA FIELD IS
  774. * EMPTY. (E.G. GPFC, FILENAME, ,PACKNAME.)
  775. *
  776. *
  777. * *SPAC, FILENAME, USERNAME, PACKNAME.*
  778. * *SETPFAC* OPERATION.
  779. *
  780. * *SPAL, FILENAME, USERNAME, PACKNAME.*
  781. * *SETPFAL* OPERATION.
  782. *
  783. * *SPAP, FILENAME, USERNAME, PACKNAME.*
  784. * *APPEND* OPERATION.
  785. *
  786. * *SPAS, FILENAME, USERNAME, PACKNAME.*
  787. * *ASSIGNPF* OPERATION.
  788. *
  789. * *SPCG, FILENAME, USERNAME, PACKNAME.*
  790. * *CHANGE* OPERATION.
  791. *
  792. * *SPCT, FILENAME, USERNAME, PACKNAME.*
  793. * *CATLIST* OPERATION.
  794. *
  795. * *SPDD, FILENAME, USERNAME, PACKNAME.*
  796. * *DROPDS* OPERATION.
  797. *
  798. * *SPDF, FILENAME, USERNAME, PACKNAME.*
  799. * *DEFINE* OPERATION.
  800. *
  801. * *SPDI, FILENAME, USERNAME, PACKNAME.*
  802. * *DROPIDS* OPERATION.
  803. *
  804. * *SPDP, FILENAME, USERNAME, PACKNAME.*
  805. * *DELPFC* OPERATION.
  806. *
  807. * *SPGT, FILENAME, USERNAME, PACKNAME.*
  808. * *GET* OR *OLD* OPERATION.
  809. *
  810. * *SPPG, FILENAME, USERNAME, PACKNAME.*
  811. * *PURGE* OPERATION.
  812. *
  813. * *SPPM, FILENAME, USERNAME, PACKNAME.*
  814. * *PERMIT* OPERATION.
  815. *
  816. * *SPRP, FILENAME, USERNAME, PACKNAME.*
  817. * *REPLACE* OPERATION.
  818. *
  819. * *SPRS, FILENAME, USERNAME, PACKNAME.*
  820. * *RPFSTAT* OPERATION.
  821. *
  822. * *SPSA, FILENAME, USERNAME, PACKNAME.*
  823. * *SETASA* OPERATION.
  824. *
  825. * *SPSD, FILENAME, USERNAME, PACKNAME.*
  826. * *SETDA* OPERATION.
  827. *
  828. * *SPSF, FILENAME, USERNAME, PACKNAME.*
  829. * *SETAF* OPERATION.
  830. *
  831. * *SPSP, FILENAME, USERNAME, PACKNAME.*
  832. * *STAGEPF* OPERATION.
  833. *
  834. * *SPSV, FILENAME, USERNAME, PACKNAME.*
  835. * *SAVE* OPERATION.
  836. *
  837. * *SPUA, FILENAME, USERNAME, PACKNAME.*
  838. * *UATTACH* OPERATION.
  839. *
  840. * *SPUG, FILENAME, USERNAME, PACKNAME.*
  841. * *UGET* OPERATION.
  842. *
  843. * *SPUR, FILENAME, USERNAME, PACKNAME.*
  844. * *UREPLACE* OPERATION.
  845. *
  846. *
  847. * *MFFI, FILENAME, LEVELNAME.*
  848. * AN INVALID ATTEMPT WAS MADE TO CHANGE THE ACCESS
  849. * LEVEL ON FILE FILENAME TO LEVEL LEVELNAME.
  850. *
  851. * *MPNF, FILENAME, USERNAME, PACKNAME.*
  852. * AN UNSUCCESSFUL ATTEMPT WAS MADE TO ACCESS FILE
  853. * FILENAME UNDER ALTERNATE USER USERNAME ON PACK
  854. * PACKNAME.
  855. *
  856. *
  857. * *STRS, FILENAME, USERINDEX, FAMPACK.*
  858. * A REQUEST HAS BEEN SENT TO *MAGNET* TO STAGE FILE
  859. * FILENAME, OF USER INDEX USERINDEX ON FAMILY/PACK
  860. * FAMPACK, TO DISK FROM TAPE ALTERNATE STORAGE.
  861. PRS SPACE 4,35
  862. ** PRS - PRESET ROUTINE.
  863. * CHECK INPUT PARAMETERS.
  864. *
  865. * ENTRY (IR - IR+4) = CALL.
  866. * (MP - MP+4) = PARAMETER WORD FROM MESSAGE BUFFER.
  867. *
  868. * EXIT (UI - UI+1) = CALLING USER INDEX.
  869. * (PFUI - PFUI+1) = CALLING USER INDEX.
  870. * (PI - PI+1) = OPTIONAL USER INDEX.
  871. * (PFPI - PFPI+1) = OPTIONAL USER INDEX.
  872. * (SFAA - SFAA+1) = RELATIVE FET ADDRESS.
  873. * (PCPD) = CURRENT PACKED DATE.
  874. * (PFAL) = JOB ACCESS LEVEL.
  875. * (PFFC - PFFC+2) = JOB ACCESS CATEGORY SET.
  876. * (PFFN - PFFN+3) = PERMANENT FILE NAME.
  877. * (PFSN - PFSN+3) = SYSTEM FILE NAME.
  878. * (PFAC - PFAC+4) = USER NAME OF CALLING JOB.
  879. * (PFOU - PFOU+4) = ALTERNATE USER NAME IN CALL BLOCK.
  880. * (PFPW - PFPW+3) = FILE PASSWORD.
  881. * (PUCW - PUCW+4) = USER CONTROL WORD.
  882. * (PFPN - PFPN+3) = PACKNAME + FAMILY EST ORDINAL.
  883. * (PFUC) = USER CONTROLS.
  884. * (PFNF - PFNF+3) = NEW FILE NAME.
  885. * (PWCC) = COMMAND CODE FROM *RPFSTAT* REQUEST.
  886. * (PWRF) = RESTART FLAGS FOR *PFM* RECALL.
  887. * (PXDT - PXDT+1) = VALIDATED EXPIRATION DATE.
  888. * (PXDT - PXDT+1) = 0 IF NONEXPIRING PASSWORD/PERMIT.
  889. * (SSID) = SUBSYSTEM ID.
  890. * (SSOM) = OPERATING SYSTEM SECURITY MODE.
  891. * (SSYS) = SUBSYSTEM FLAG.
  892. * (SVAL) = SECURITY VALIDATION BITS.
  893. * ACCOUNTING MESSAGE ISSUED.
  894. * USER CONTROLS SET (SEE *SUC* EXIT CONDITIONS.)
  895.  
  896.  
  897. PRS BSS 0 ENTRY
  898. LDD MP SAVE RESTART FLAGS FOR *PFM* RECALL
  899. STM PWRF
  900. LDD MP+2 SAVE COMMAND CODE FROM *RPFSTAT* REQUEST
  901. STM PWCC
  902. LDD MP+3 SET EST ORDINAL FROM *RPFSTAT* REQUEST
  903. STD EQ
  904. LDN ZERL CLEAR *MS2W*
  905. CRD CM
  906. LDD CP
  907. ADK MS2W
  908. CWD CM
  909. LDN 0 CLEAR FST POINTER
  910. STD FA
  911. LDD CP FETCH EJT ORDINAL
  912. ADN TFSW
  913. CRD CM
  914. SFA EJT,CM READ EJT
  915. ADN SCLE
  916. CRD CM
  917. LDD CM SET SERVICE CLASS
  918. SHN 14
  919. RAM SUCA
  920. SHN -14 SET JOB ORIGIN TYPE
  921. LPN 17
  922. STM JORG
  923. RJM VFA VERIFY FET ADDRESS
  924. MJN PRS1 IF ADDRESS OUT OF RANGE
  925. RJM SEP SET ERROR PROCESSING OPTIONS
  926. LDD CP
  927. ADN STSW
  928. CRD CM
  929. ADN JCIW-STSW
  930. CRD CN
  931. LDD CN+2 SAVE SUBSYSTEM ID
  932. STM SSID
  933. SBK LSSI+1
  934. MJN PRS0.1 IF NOT A SUBSYSTEM
  935. LDN 1 SET SUBSYSTEM FLAG
  936. STM SSYS
  937. PRS0.1 LDD CC CHECK FUNCTION CODE
  938. LPN 77
  939. ZJN PRS1 IF ZERO FUNCTION CODE
  940. STD CC
  941. SBN CCRS
  942. ZJN PRS3 IF *RPFSTAT* COMMAND
  943. LDD CM+1
  944. NJN PRS2 IF ERROR AT CONTROL POINT
  945. LDD CC
  946. SBN CCLM
  947. MJN PRS3 IF LEGAL COMMAND CODE
  948. PRS1 ERROR PAE,CH,IW * PFM ARGUMENT ERROR.*
  949.  
  950. PRS2 EXECUTE 3PU TERMINATE PROGRAM
  951.  
  952. PRS3 RJM VUA VALIDATE USER ACCESS
  953. LDK SSML SAVE SYSTEM SECURITY MODE
  954. CRD CM
  955. LDD CM
  956. LPN 7
  957. STM SSOM
  958. PRS4 RJM PFP PROCESS FET PARAMETERS
  959.  
  960. * CHECK FOR VALID USER INDEX.
  961.  
  962. LDD CN+3 SET USER INDEX OF CALLING USER
  963. LPN 37
  964. STM PRSJ
  965. STD UI
  966. SHN 14
  967. ADD CN+4
  968. STM PRSJ+1
  969. STD UI+1
  970. ZJN PRS5 IF USER INDEX NOT SPECIFIED
  971. LMC IFUI
  972. NJN PRS6 IF NOT INDIRECT FLAW USER INDEX
  973. PRS5 ERROR PFN,CH,IW * DEVICE UNAVAILABLE.*
  974.  
  975. * DETERMINE USERS PERMISSION TO CREATE PERMANENT FILES.
  976.  
  977. PRS6 LDM TCTL,CC
  978. SHN 21-3
  979. PJN PRS8 IF COMMAND NOT CREATING INDIRECT FILES
  980. LDD FN+4 COMPARE ACCESS CONTROL BITS
  981. SHN 21-3
  982. MJN PRS9 IF USER ALLOWED TO CREATE INDIRECT FILES
  983. PRS7 ERROR IUA,CH,IW *USER ACCESS NOT VALID.*
  984.  
  985. PRS8 SHN 21-2-21+3
  986. PJN PRS10 IF USER NOT CREATING DIRECT FILE
  987. LDD FN+4
  988. SHN 21-2
  989. PJN PRS7 IF USER NOT ALLOWED TO CREATE DIRECT FILES
  990.  
  991. PRS9 LDM PFPN
  992. ZJN PRS10 IF NOT REMOVABLE PACK REQUEST
  993. LDD FN+4
  994. SHN 21-10
  995. PJN PRS7 IF USER NOT ALLOWED TO CREATE FILES ON RP
  996.  
  997. * VERIFY FILE NAMES.
  998.  
  999. PRS10 LDD CC
  1000. LMN CCCG CHECK FOR CHANGE COMMAND
  1001. NJN PRS11 IF NOT CHANGE
  1002. LDM PFNF
  1003. ZJN PRS11 IF NEW NAME NOT SPECIFIED
  1004. LDC PFNF
  1005. RJM SFN
  1006. RJM VFN
  1007. ZJN PRS12 IF ERROR IN NAME
  1008.  
  1009. PRS11 RJM SFA READ SYSTEM FILE NAME
  1010. CRM PFSN,ON
  1011. LDM PFSN+3
  1012. SCN 77
  1013. STM PFSN+3
  1014. LDC PFSN VERIFY SYSTEM FILE NAME
  1015. RJM SFN
  1016. RJM VFN
  1017. NJN PRS13 IF NAME OK
  1018.  
  1019. PRS12 ERROR FNE,CH,IW *FILE NAME ERROR.*
  1020.  
  1021. PRS13 LDM PFFN
  1022. ZJN PRS14 IF NO PF NAME SPECIFIED
  1023. LDC PFFN VERIFY PF NAME
  1024. RJM SFN
  1025. RJM VFN
  1026. ZJN PRS12 IF ERROR IN NAME
  1027.  
  1028. * CHECK RANGE ON SPECIAL REQUEST SUBFUNCTION.
  1029.  
  1030. PRS14 LDM PFSR GET SPECIAL REQUEST
  1031. LPN 77
  1032. SBN SRLM
  1033. PJN PRS16 IF INVALID SPECIAL REQUEST VALUE
  1034.  
  1035. * CHECK PARAMETER RANGE.
  1036.  
  1037. LDM PFFN+4 CHECK MODE RANGE
  1038. STD T0
  1039. LPN 37
  1040. SBN PTLM
  1041. MJN PRS17 IF MODE IN RANGE
  1042.  
  1043. PRS16 ERROR ILR,CH,IW *PFM INCORRECT REQUEST.*
  1044.  
  1045. PRS17 LDD T0 CHECK CATALOG TYPE
  1046. SHN -6
  1047. LPN 37
  1048. SBN FCPB+1
  1049. PJN PRS16 IF CATALOG TYPE OUT OF RANGE
  1050. RJM CRX CHECK FOR *RESEX*/*CPUPFM* ERROR STATUS
  1051. LDD CC
  1052. LMN CCRS
  1053. NJN PRS18 IF NOT *RPFSTAT* REQUEST
  1054. LDM PWCC ORIGINAL COMMAND CODE
  1055. ZJP PRS7 IF *CPUPFM* HAS NOT JUST BEEN CALLED
  1056. LDD CM+2 ERROR REPLY
  1057. RJM PER PROCESS ERROR REPLY
  1058. RAM PRSK SET PARAMETER WORD FOR *ERROR* MACRO
  1059. RJM FIF FIND INTERLOCK FILES
  1060. LJM PRS41 SKIP *RESEX* PROCESSING
  1061.  
  1062. * DETERMINE CATALOG TO ACCESS AND SET ADDRESS.
  1063.  
  1064. PRS18 RJM POA PROCESS OPTIONAL USER NAME
  1065. MJN PRS16 IF INCORRECT REQUEST
  1066. LDC PFPN SET CATALOG ADDRESS
  1067. RJM GCA
  1068. STM MSTA MST ADDRESS/10B
  1069. MJN PRS22 IF CATALOG NOT AVAILABLE
  1070. SHN 3
  1071. ADN PUGL READ MST USER NAME WORD
  1072. CRD FS
  1073. ADN STLL-PUGL READ DEVICE STATUS WORD
  1074. CRD CM
  1075. LDD CM
  1076. LPN MLUNL
  1077. ZJN PRS19 IF UNLOAD NOT REQUESTED
  1078. RJM CRR CHECK FOR CURRENT ATTACHMENT TO PACK
  1079. ZJN PRS22 IF FIRST ACCESS TO PACK
  1080. PRS19 LJM PRS25 CHECK FOR AUXILIARY DEVICE
  1081.  
  1082. * CATALOG NOT AVAILABLE.
  1083.  
  1084. PRS20 LDD MA SET PACK NAME FOR *0RF*
  1085. CWM PFPN,ON
  1086. SBN 1
  1087. CRD FN
  1088. LDN 0 CLEAR EST ORDINAL
  1089. STD EQ
  1090. RJM CRF *UNLOAD* REMOVABLE PACK RESOURCE
  1091. PRS21 ERROR PFN,CH,IW * PERMANENT FILES NOT AVAILABLE.*
  1092.  
  1093. PRS22 LDM PFPN
  1094. ZJN PRS21 IF NOT AUXILIARY DEVICE REQUEST
  1095. LDM EPOP CHECK ERROR PROCESSING STATUS
  1096. SHN 21-2
  1097. PJN PRS20 IF ERROR PROCESSING NOT SELECTED
  1098. SHN 21-3-21+2+22 CHECK USER ERROR PROCESSING SELECTED
  1099. MJN PRS20 IF USER ERROR PROCESSING SELECTED
  1100. RJM CRX CHECK RESEX STATUS
  1101. NJN PRS24 IF RESEX HAS BEEN ACTIVATED
  1102. PRS23 LJM RSX ACTIVATE RESEX
  1103.  
  1104. PRS24 LPN /STATUS/MV CHECK RESEX STATUS
  1105. ZJN PRS23 IF PACK AVAILABLE
  1106.  
  1107. ERROR RSE,CH,IW * RESEX FAILURE.*
  1108. * NON-FATAL ERROR DETECTED WITH
  1109. * NO PACK AVAILABLE AND ERROR
  1110. * PROCESSING SET.
  1111.  
  1112. * CATALOG AVAILABLE - DETERMINE IF REQUEST CAN BE CONTINUED.
  1113.  
  1114. PRS25 LDM PFPN CHECK AUXILIARY DEVICE REQUEST
  1115. NJN PRS26 IF AUXILIARY DEVICE REQUEST
  1116. LJM PRS39 CHECK CATALOG ACCESSABILITY
  1117.  
  1118. * PROCESS AUXILIARY DEVICE REQUEST.
  1119. * DETERMINE IF DEVICE FOUND IS PROPER TYPE.
  1120.  
  1121. PRS26 LDM RQDT+1 PRESET REQUESTED DEVICE TYPE
  1122. STM PRSA+1
  1123. LDM RQDT
  1124. LPN 77
  1125. LMC LMCI
  1126. STM PRSA
  1127. SFA EST,T5 READ EST
  1128. ADK EQDE
  1129. CRD T7
  1130. LDD T7
  1131. SHN 21-10
  1132. PJN PRS27 IF NOT REMOVABLE
  1133. LDD T7+4 GET UNIT COUNT
  1134. SHN 3
  1135. ADN DDLL
  1136. CRD CM+3
  1137. LDD CM+3
  1138. LPN 7
  1139. ADN 1R1
  1140. SHN 14
  1141. LMD T7+3 DEVICE TYPE
  1142. SHN 6
  1143. PRSA LMC * CHECK DEVICE TYPE
  1144. * LMC (RQDT) PRESET TO REQUESTED TYPE
  1145. NJN PRS26.1 IF NOT PROPER TYPE
  1146. LDD T7
  1147. LPN 2
  1148. ZJN PRS27 IF DEVICE *ON* OR *IDLE*
  1149. PRS26.1 ERROR IDR,CH,IW *INCORRECT DEVICE REQUEST.*
  1150.  
  1151. * DETERMINE IF ALTERNATE ACCESS TO PRIVATE DEVICE.
  1152.  
  1153. PRS27 LDD FS
  1154. NJN PRS28 IF PRIVATE DEVICE
  1155. LJM PRS36 CHECK EST OF DEVICE
  1156.  
  1157. PRS28 LDM PFUC DISABLE ALL BUT INDIRECT FILE SIZE LIMITS
  1158. LPN 7
  1159. LMC 7770
  1160. STM PFUC
  1161. LDK STPD SET *PRIVATE DEVICE* FLAG
  1162. RAM STAT
  1163. LDM TCTL,CC CHECK FUNCTION TYPE
  1164. LPN 2
  1165. NJN PRS29 IF NOT ALTERNATE CATALOG ACCESS
  1166. LDM PFOU SET CATALOG FOR ACCESS
  1167. ZJN PRS29 IF NO OPTIONAL USER
  1168. LDC PFOU
  1169. UJN PRS30 SET UP OPTIONAL USER
  1170.  
  1171. PRS29 LDC PFAC GET USER NAME OF CALLER
  1172. PRS30 RJM SFN
  1173. LDN 3
  1174. STD T1
  1175. LDD FS+3 CLEAR LOWER CHARACTER OF USER NAME
  1176. SCN 77
  1177. STD FS+3
  1178. PRS31 LDM FN,T1 COMPARE NEXT BYTE OF USER NAMES
  1179. LMM FS,T1
  1180. NJN PRS31.1 IF NOT CORRECT USER
  1181. SOD T1
  1182. PJN PRS31 IF MORE BYTES TO COMPARE
  1183. UJN PRS34 PROCESS ACCESS BY/SPECIFYING DEVICE OWNER
  1184.  
  1185. PRS31.1 LDM TCTL,CC CHECK FUNCTION TYPE
  1186. LPN 14
  1187. ZJN PRS32 IF NOT FILE CREATION REQUEST
  1188. LJM PRS21 *DEVICE UNAVAILABLE.*
  1189.  
  1190. * ALTERNATE ACCESS TO PRIVATE DEVICE.
  1191.  
  1192. PRS32 LDM TCTL,CC CHECK FUNCTION TYPE
  1193. LPN 2
  1194. NJN PRS35 IF NOT ALTERNATE CATALOG ACCESS
  1195. LDM PFOU CHECK USER NAME
  1196. NJN PRS35 IF OPTIONAL USER CALL
  1197. LDD MA SET DEVICE OWNER AS OPTIONAL USER
  1198. CWD FS COPY ALTERNATE USER NAME
  1199. CRM PFOU,ON
  1200. RJM POA PROCESS OPTIONAL USER NAME
  1201. PJN PRS33 IF USER NAME VALID
  1202. ERROR ILR,CH,IW *PFM INCORRECT REQUEST*
  1203.  
  1204. PRS33 LDM TCTL,CC CHECK FUNCTION TYPE
  1205. LPN 2
  1206. NJN PRS35 IF NOT ALTERNATE CATALOG ACCESS
  1207.  
  1208. * CHECK IF RESOURCE CONTROL NEEDED.
  1209.  
  1210. PRS34 LDC PFPN RESET CATALOG POINTER
  1211. RJM GCA GET CATALOG ADDRESS
  1212. STM MSTA MST ADDRESS/10B
  1213. PJN PRS36 IF CATALOG FOUND
  1214. LJM PRS22 TREAT AS IF CATALOG NOT FOUND
  1215.  
  1216. PRS35 RJM SPN SET PERMANENT FILE NAME
  1217. ERROR FNF,CH,IW * (FILENAM) NOT FOUND.*
  1218.  
  1219. PRS36 SFA EST,T5 READ EST ENTRY
  1220. ADK EQDE
  1221. CRD CM
  1222. LDD CM
  1223. SHN 21-10
  1224. PJN PRS39 IF NOT REMOVABLE
  1225. RJM CRX CHECK RESEX RETURN STATUS
  1226. NJN PRS38 IF *RESEX* HAS BEEN ACTIVATED
  1227. LDM TCTL,CC
  1228. SHN 21-5
  1229. PJN PRS39 IF NOT DA REQUEST
  1230. RJM CRR CHECK IF FIRST AUXILIARY REQUEST ON DEVICE
  1231. NJN PRS39 IF NOT 1ST DA FILE ON THIS PACK
  1232. RJM CCA CHECK FOR ERROR IDLE OR PF UTILITY ACTIVE
  1233. LJM RSX ACTIVATE *RESEX*
  1234.  
  1235. PRS37 EXIT PFN,CH,IW * DEVICE UNAVAILABLE.*
  1236.  
  1237. PRS38 LPN /STATUS/MV CHECK RESEX STATUS
  1238. NJN PRS37 IF PACK NOT AVAILABLE
  1239. LDD CM+2
  1240. LPN /STATUS/OK
  1241. NJN PRS39 IF REQUEST COMPLETE
  1242.  
  1243. ERROR RSE,CH,IW * RESEX FAILURE.*
  1244.  
  1245. * REQUEST CAN BE PROCESSED DETERMINE IF CATALOG CAN BE ACCESSED
  1246.  
  1247. PRS39 RJM CCA CHECK CATALOG ACCESSABILITY
  1248.  
  1249. * CATALOG CAN BE ACCESSED - PROCEED WITH REQUEST.
  1250.  
  1251. LDM TCTL,CC CHECK COMMAND
  1252. SHN 21-4
  1253. PJN PRS40 IF USER CONTROLS NOT NEEDED
  1254. RJM SUC SET USER CONTROLS
  1255. PRS40 RJM SRF SET RESERVE FNT
  1256.  
  1257. * SET UP APPROPRIATE ACCOUNTING MESSAGE.
  1258.  
  1259. PRS41 LDM PWRF RESTART FLAGS
  1260. LPK RFAM
  1261. NJN PRS43 IF ACCOUNTING MESSAGES ISSUED
  1262. LDK RFAM SET ACCOUNTING MESSAGES ISSUED FLAG
  1263. RAM PWRF
  1264. LDD CC
  1265. LMN CCPM
  1266. ZJN PRS42 IF PERMIT FUNCTION
  1267. LDN PFOU&PFAC SPECIFY USER NAME
  1268. PRS42 LMC PFAC SPECIFY REQUESTING USER NAME
  1269. RJM SAM SET UP ACCOUNTING MESSAGE
  1270.  
  1271. * ISSUE DAYFILE MESSAGE(S).
  1272.  
  1273. LDC PRSF+ACFN ISSUE *S* TYPE ACCOUNT LOG MESSAGE
  1274. RJM DFM
  1275. LDM TCTL,CC CHECK IF *A* TYPE MESSAGE NEEDED
  1276. SHN 21-6
  1277. PJN PRS43 IF *A* TYPE MESSAGE NOT NEEDED
  1278. LDC 2RAP PRESET MESSAGE CODE
  1279. STM PRSF
  1280. LDC PRSF+ACFN ISSUE *A* TYPE ACCOUNT LOG MESSAGE
  1281. RJM DFM
  1282.  
  1283. * INCREMENT ACCOUNTING INFORMATION.
  1284.  
  1285. PRS43 LDM TPFI,CC PF INCREMENT FOR REQUESTED FUNCTION
  1286. RAM AIPF+1
  1287. LDM PFPN CHECK AUXILIARY PACK REQUEST
  1288. ZJN PRS44 IF NOT AUXILIARY PACK REQUEST
  1289. LDN IPAD PF INCREMENT FOR AUXILIARY DEVICE
  1290. RAM AIPF+1
  1291. PRS44 LDM PFOU CHECK FOR OPTIONAL USER
  1292. ZJN PRS45 IF NO OPTIONAL USER
  1293. LDN IPVA PF INCREMENT FOR *VALIDUS* ACCESS
  1294. RAM AIPF+1
  1295.  
  1296. PRS45 LDM PRSJ
  1297. STD UI
  1298. LDM PRSJ+1
  1299. STD UI+1
  1300. LDM STAT CHECK *CPUPFM*/*RESEX* STATUS
  1301. LPK STRX
  1302. ZJN PRS46 IF *CPUPFM*/*RESEX* NOT ACTIVATED
  1303. LDN ZERL CLEAR SPCW STATUS
  1304. CRD CM
  1305. LDD CP
  1306. ADC SPCW
  1307. CWD CM
  1308. LDD CC
  1309. LMN CCRS
  1310. NJN PRS46 IF NOT *RPFSTAT* REQUEST
  1311. LDN CAPS CLEAR *CPUPFM* ACTIVE STATUS
  1312. STD CM+1
  1313. MONITOR SJCM
  1314. EXIT NEC,CH,IW,EQ PROCESS ERROR CODE FROM *CPUPFM*, IF ANY
  1315. PRSK EQU *-1 (ERROR CODE)
  1316.  
  1317. * PROCESS RESOURCE FILE CLEAN UP.
  1318.  
  1319. PRS46 LDM TCTL,CC CHECK ACCESS TYPE
  1320. SHN 21-5
  1321. PJN PRS47 IF NOT DIRECT ACCESS OPERATION
  1322. SHN 21-7-21+5+22
  1323. PJN PRS47 IF NO FNT CREATED
  1324. NFA FNTA,R SET EST ORDINAL IN FST
  1325. ADK FNTL
  1326. CRD CN
  1327. ADN FSTL-FNTL
  1328. CRD CM
  1329. LDD EQ
  1330. STD CM
  1331. LDD CN+4
  1332. LPN 77
  1333. LMC PMFT*100B
  1334. STD CN+4
  1335. NFA FNTA,R
  1336. ADK FNTL
  1337. CWD CN
  1338. ADN FSTL-FNTL
  1339. CWD CM
  1340. UJN PRS48 PROCESS REQUEST
  1341.  
  1342. PRS47 RJM CRF *UNLOAD* REMOVABLE PACK RESOURCE
  1343. PRS48 LDN ZERL
  1344. CRD FS
  1345. LDD CC CHECK COMMAND CODE
  1346. LMN CCCT
  1347. NJN PRS49 IF NOT CATLIST COMMAND
  1348. EXECUTE 3PJ EXIT TO CATLIST PROCESSOR
  1349.  
  1350. PRS49 LMN CCPM&CCCT CHECK COMMAND CODE
  1351. ZJN PRS51 IF *PERMIT* COMMAND
  1352. LDM PFOU CHECK USER NAME
  1353. ZJN PRS51 IF NO USER NAME
  1354.  
  1355. * PROCESS USER NAME.
  1356.  
  1357. RJM CUN COMPARE USER NAME
  1358. NJN PRS50 IF NOT A MATCH
  1359. STM PFPT SET MATCH OF MULTI LEVEL USER DETECTED
  1360. PRS50 RJM SWI SWAP INDICES
  1361.  
  1362. * DETERMINE CATALOG ADDRESS AND ACCESSABILITY.
  1363.  
  1364. PRS51 LDC PFPN SET CATALOG ADDRESS
  1365. RJM GCA
  1366. MJP PRS21 IF DEVICE NOT FOUND
  1367.  
  1368. * PRESERVE CATALOG ADDRESS PARAMETERS.
  1369.  
  1370. STM MSTA MST ADDRESS/10B
  1371. SHN 3
  1372. ADK DILL CHECK FOR BUFFERED DEVICE
  1373. CRD T0
  1374. LDD T0+3
  1375. SHN 21-12
  1376. PJN PRS52 IF NOT BUFFERED DEVICE
  1377. LDC STBD SET *BUFFERED DEVICE* FLAG
  1378. RAM STAT
  1379. PRS52 LDD T5 SAVE EST ORDINAL OF MASTER DEVICE
  1380. STD EQ
  1381. STM SDAA
  1382. LDD T6 SAVE CATALOG TRACK
  1383. STM CCIA
  1384.  
  1385. * PROCESS LOCAL FILE AS REQUIRED IN *TCTL*.
  1386.  
  1387. LDM TCTL,CC
  1388. SHN 21-11
  1389. MJN PRS53 IF LOCAL FILE PROCESSING REQUIRED
  1390. RJM SPN SET PERMANENT FILE NAME
  1391. EXECUTE 3PC EXIT TO COMMAND PROCESSOR
  1392.  
  1393. PRS53 EXECUTE 3PA EXIT TO LOCAL FILE PROCESSOR
  1394. SPACE 4,10
  1395. PRSB DATA 2H, MESSAGE SEPARATOR
  1396. CON 0 END OF STRING
  1397. PRSC DATA 1L. MESSAGE TERMINATOR
  1398.  
  1399. * ACCOUNTING MESSAGE ASSEMBLY AREA.
  1400.  
  1401. PRSF DATA 6HSPXX, MESSAGE CODE
  1402.  
  1403. * ACCOUNTING CODES.
  1404.  
  1405. PRSH CON 0 (ZERO WORD REQUIRED FOR *COMPACS* CALL)
  1406. LOC 1
  1407.  
  1408. DATA 2HSV SAVE
  1409. DATA 2HGT GET
  1410. DATA 2HPG PURGE
  1411. DATA 2HCT CATLIST
  1412. DATA 2HPM PERMIT
  1413. DATA 2HRP REPLACE
  1414. DATA 2HAP APPEND
  1415. DATA 2HDF DEFINE
  1416. DATA 2HAT ATTACH
  1417. DATA 2HCG CHANGE
  1418. DATA 2HUA UATTACH
  1419. DATA 2HSA SETASA
  1420. DATA 2HSF SETAF
  1421. DATA 2HSD SETDA
  1422. DATA 2HDD DROPDS
  1423. DATA 2HAS ASSIGNPF
  1424. DATA 2HGT OLD
  1425. DATA 2HAC SETPFAC
  1426. DATA 2HAL SETPFAL
  1427. DATA 2HUG UGET
  1428. DATA 2HUR UREPLACE
  1429. DATA 2HDI DROPIDS
  1430. DATA 2HDP DELPFC
  1431. DATA 2HRS RPFSTAT
  1432. DATA 2HSP STAGEPF
  1433. LOC *O
  1434.  
  1435. .1 MAX *,PRSF+20 DAYFILE MESSAGE AREA
  1436. ORG .1
  1437. PRSJ CON 0,0 USER INDEX
  1438. TCTL SPACE 4,30
  1439. ** TCTL - TABLE OF COMMAND CODE CONTROLS.
  1440. *
  1441. *T 1/L,1/K,1/J,1/I,1/H,1/G,1/F,1/E,1/D,1/C,1/B,1/A
  1442. *
  1443. * A PREVENT ALTERNATE CATALOG ACCESS.
  1444. * B PREVENT SET OF UI FOR ALTERNATE CATALOG
  1445. * C CREATE DA FILE
  1446. * D CREATE IDA FILE
  1447. * E SET USER CONTROLS
  1448. * F DA REQUEST
  1449. * G ISSUE *A* TYPE ACCOUNTING MESSAGE
  1450. * H FNT POTENTIALLY REQUIRED
  1451. * I ALLOW EXPIRATION DATE
  1452. * J LOCAL FILE PROCESSING REQUIRED
  1453. * K SPECIAL REQUEST BLOCK FUNCTIONS.
  1454. * L CALL WITHOUT AUTO RECALL (EP/UP REQUEST)
  1455.  
  1456.  
  1457. TCTL EQU *-1 FWA OF COMMAND CODE CONTROLS
  1458. LOC 1
  1459.  
  1460. CON 1431 SAVE
  1461. CON 1200 GET
  1462. CON 2000 PURGE
  1463. CON 0000 CATLIST
  1464. CON 0402 PERMIT
  1465. CON 1420 REPLACE
  1466. CON 1020 APPEND
  1467. CON 1665 DEFINE
  1468. CON 1260 ATTACH
  1469. CON 0401 CHANGE
  1470. CON 3261 UATTACH
  1471. CON 3000 SETASA
  1472. CON 2000 SETAF
  1473. CON 3060 SETDA
  1474. CON 2001 DROPDS
  1475. CON 3265 ASSIGNPF
  1476. CON 1200 OLD
  1477. CON 0001 SETPFAC
  1478. CON 0001 SETPFAL
  1479. CON 7201 UGET
  1480. CON 7020 UREPLACE
  1481. CON 2001 DROPIDS
  1482. CON 3000 DELPFC
  1483. CON 0000 RPFSTAT
  1484. CON 2000 STAGEPF
  1485.  
  1486. LOC *O
  1487. TPFI SPACE 4,20
  1488. ** TPFI - TABLE OF PF INCREMENT VALUES BY FUNCTION.
  1489.  
  1490.  
  1491. TPFI EQU *-1 FWA OF PF INCREMENT VALUES BY FUNCTION
  1492. LOC 1
  1493.  
  1494. CON IPSV SAVE
  1495. CON IPGT GET
  1496. CON IPPG PURGE
  1497. CON IPCT CATLIST
  1498. CON IPPM PERMIT
  1499. CON IPRP REPLACE
  1500. CON IPAP APPEND
  1501. CON IPDF DEFINE
  1502. CON IPAT ATTACH
  1503. CON IPCG CHANGE
  1504. CON IPUA UATTACH
  1505. CON IPSA SETASA
  1506. CON IPAF SETAF
  1507. CON IPSD SETDA
  1508. CON IPDD DROPDS
  1509. CON IPAN ASSIGNPF
  1510. CON IPGT OLD
  1511. CON IPAC SETPFAC
  1512. CON IPAL SETPFAL
  1513. CON IPUG UGET
  1514. CON IPUR UREPLACE
  1515. CON IPDI DROPIDS
  1516. CON IPDP DELPFC
  1517. CON IPRS RPFSTAT
  1518. CON IPSP STAGEPF
  1519.  
  1520. LOC *O
  1521. TITLE PRESET SUBROUTINES.
  1522. CCA SPACE 4,60
  1523. ** CCA - CHECK CATALOG ACCESSABILITY.
  1524. *
  1525. * CHECK CATALOG TRACK INTERLOCK, PF UTILITY INTERLOCK AND
  1526. * ERROR IDLE STATUS; INCREMENT PF ACTIVITY COUNT. NONE OF
  1527. * THIS IS DONE FOR *ATTACH* WITH *FA* SPECIAL REQUEST. FOR
  1528. * *ATTACH* WITH *MA* SPECIAL REQUEST, OR FOR ANY REQUEST FROM
  1529. * A SUBSYSTEM WITH EP/UP SET, OR FOR ANY REQUEST FROM ANYONE
  1530. * WITH EP/IP SET, CATALOG TRACK INTERLOCK STATUS IS NOT
  1531. * CHECKED. FOR *ASSIGNPF*, *CATLIST*, AND *DELPFC*, CATALOG
  1532. * TRACK INTERLOCK STATUS AND PF UTILITY INTERLOCK STATUS ARE
  1533. * NOT CHECKED AND PF ACTIVITY COUNT IS NOT INCREMENTED.
  1534. * ERROR IDLE IS IGNORED FOR *UATTACH*/*UGET*, AND FOR ANY
  1535. * REQUEST WITH THE *IE* SPECIAL REQUEST SPECIFIED.
  1536. *
  1537. * ENTRY (CC) = COMMAND CODE.
  1538. * (EPOP) = ERROR PROCESSING OPTIONS.
  1539. * (MSTA) = MST ADDRESS/10B.
  1540. * (PFSR) = SPECIAL REQUEST FROM *FET*.
  1541. * (SSJS) = *SSJ=* STATUS.
  1542. * (T5) = MASTER DEVICE EST ORDINAL.
  1543. *
  1544. * EXIT (EPFA) = EST ORDINAL IF PF ACTIVITY COUNT SET.
  1545. * (EQ) = MASTER DEVICE EST ORDINAL.
  1546. *
  1547. * TO *ERR* IF ERROR IDLE SET ON THE DEVICE.
  1548. * TO *ERR* IF PF UTILITY ACTIVE.
  1549. * TO *RCL* IF CATALOG TRACK INTERLOCK NOT AVAILABLE
  1550. * (UNLESS CALLER HAS *EP* AND *IP* SET, OR UNLESS
  1551. * CALLER IS SUBSYSTEM, WITH *EP* AND *UP* SET).
  1552. *
  1553. * THE FOLLOWING CELLS ARE SETUP FOR EXITS WHICH MAY
  1554. * CAUSE THE JOB TO BE ROLLED.
  1555. * (ERRC) = SET FOR ROLLOUT EVENT.
  1556. * (ERRD) = SET FOR EVENT TIME.
  1557. * (ERRE) = SET FOR EVENT TYPE.
  1558. *
  1559. * USES EQ, CM - CM+4.
  1560. *
  1561. * CALLS DTS.
  1562. *
  1563. * MACROS MONITOR, ERROR, EXIT, SFA.
  1564.  
  1565.  
  1566. CCA SUBR ENTRY/EXIT
  1567. LDD T5 SET EST ORDINAL
  1568. STD EQ
  1569. STD CM+1
  1570.  
  1571. * CHECK FOR *ATTACH* WITH *FA* OR *MA* SPECIAL REQUEST.
  1572.  
  1573. LDD CC CHECK COMMAND CODE
  1574. LMN CCAT
  1575. NJN CCA1 IF NOT *ATTACH* REQUEST
  1576. LDM PFSR CHECK FOR SPECIAL REQUEST
  1577. LPN 77
  1578. LMN SRFA
  1579. ZJN CCAX IF *FA* SPECIAL REQUEST
  1580. LMN SRMA&SRFA
  1581. ZJN CCA2.1 IF *MA* SPECIAL REQUEST
  1582.  
  1583. * CHECK CATALOG TRACK INTERLOCK AVAILABILITY.
  1584.  
  1585. CCA1 LDD CC CHECK FOR *ASSIGNPF*
  1586. LMN CCAN
  1587. ZJN CCA2 IF INTERLOCK NOT NEEDED
  1588. LMN CCCT&CCAN CHECK FOR *CATLIST*
  1589. ZJN CCA2 IF INTERLOCK NOT NEEDED
  1590. LMN CCDP&CCCT CHECK FOR *DELPFC*
  1591. ZJN CCA2 IF INTERLOCK NOT NEEDED
  1592. LMN CCSP&CCDP CHECK FOR *STAGEPF*
  1593. CCA2 ZJP CCA6 IF INTERLOCK NOT NEEDED
  1594. RJM DTS DETERMINE TRACK INTERLOCK STATUS
  1595. PJN CCA3.1 IF CATALOG TRACK NOT ALREADY INTERLOCKED
  1596.  
  1597. * PROCESS CATALOG TRACK ALREADY INTERLOCKED. IF THE CALLER
  1598. * HAS EP/IP SET, OR IF CALLER IS A SUBSYSTEM WITH EP/UP SET,
  1599. * CONTINUE TO PROCESS REQUEST. OTHERWISE, RECALL *PFM*
  1600. * IMMEDIATELY.
  1601.  
  1602. LDM EPOP CHECK ERROR PROCESSING OPTIONS
  1603. LPN 5
  1604. LMN 5
  1605. CCA2.1 ZJN CCA4 IF *EP* AND *IP* SET
  1606. LDM EPOP CHECK ERROR PROCESSING OPTION
  1607. LPN 14
  1608. LMN 14
  1609. NJN CCA3 IF EITHER *EP* OR *UP* IS NOT SET
  1610. LDM SSID
  1611. NJN CCA4 IF SUBSYSTEM
  1612. CCA3 LDK /ERRMSG/INA * INTERLOCK NOT AVAILABLE*
  1613. LJM RCL RECALL PFM
  1614.  
  1615. * CHECK DEVICE ACCESSIBILITY.
  1616.  
  1617. CCA3.1 NJN CCA4 IF NOT INACCESSIBLE DEVICE
  1618. ERROR WID,CH,IW,T5,EC6
  1619.  
  1620. * INCREMENT PF ACTIVITY.
  1621.  
  1622. CCA4 LDD T5 EST ORDINAL
  1623. STD CM+1
  1624. LDN IPAS INCREMENT PF ACTIVITY
  1625. STD CM+3
  1626. MONITOR STBM
  1627. LDD CM+1
  1628. ZJN CCA5 IF ACTIVITY INCREMENTED
  1629. LDM MSTA CHECK MST
  1630. SHN 3
  1631. ADK TDGL
  1632. CRD CM
  1633. LDD CM+1
  1634. SHN 21-6
  1635. MJN CCA4.1 IF PF UTILITY INTERLOCK SET
  1636. EXIT PEA,CH,IW,,EC4 * PFM EXCESS ACTIVITY.*
  1637.  
  1638. * PROCESS PF UTILITY INTERLOCK SET.
  1639.  
  1640. CCA4.1 LDN PFUE SET EVENT FOR ROLLOUT
  1641. STM ERRC
  1642. LDC UIRT SET USER INTERLOCK ROLLOUT TIME
  1643. STM ERRD
  1644. EXIT PFA,CH,IW,,EC2 * PF UTILITY ACTIVE.*
  1645.  
  1646. CCA5 LDD T5 SET EST ORDINAL FOR PF ACTIVITY INCREMENT
  1647. STM EPFA
  1648.  
  1649. * CHECK FOR ERROR IDLE.
  1650.  
  1651. CCA6 SFA EST,T5
  1652. ADK EQDE
  1653. CRD CM
  1654. LDD CC
  1655. LMN CCUA
  1656. ZJN CCA7 IF *UATTACH*, IGNORE ERROR IDLE
  1657. LMN CCUG&CCUA
  1658. ZJN CCA7 IF *UGET*, IGNORE ERROR IDLE
  1659. LDD CM+4 CHECK FOR ERROR IDLE
  1660. SHN 3
  1661. ADN ACGL
  1662. CRD CM
  1663. LDD CM+4
  1664. LPN 20
  1665. NJN CCA8 IF ERROR IDLE
  1666. CCA7 LJM CCAX RETURN
  1667.  
  1668. CCA8 LDM SSJS
  1669. ZJN CCA9 IF NOT *SSJ=* JOB
  1670. LDM PFSR
  1671. LPN 77
  1672. LMN SRIE
  1673. ZJN CCA7 IF *IGNORE ERROR IDLE* SPECIAL REQUEST
  1674. LDN VSNE/10000 SET EVENT TYPE
  1675. CCA9 ERROR PFN,CH,IW * DEVICE UNAVAILABLE.*
  1676. CRF SPACE 4,15
  1677. ** CRF - CALL *0RF*.
  1678. *
  1679. * ENTRY (EQ) = REMOVABLE DEVICE EST ORDINAL.
  1680. * = 0, IF DEVICE UNAVAILABLE.
  1681. * (FN - FN+4) = PACK NAME, IF DEVICE UNAVAILABLE.
  1682. *
  1683. * EXIT (FA) = 0.
  1684. *
  1685. * USES FS - FS+4.
  1686. *
  1687. * CALLS PES, *0RF*.
  1688. *
  1689. * MACROS EXECUTE, NFA.
  1690.  
  1691.  
  1692. CRF SUBR ENTRY/EXIT
  1693. LDM STAT CHECK *RESEX* STATUS
  1694. LPN STRX
  1695. ZJN CRF2 IF *RESEX* NOT ACTIVATED
  1696. LDK RFCN+FSTL
  1697. STD FA SET FNT POINTER
  1698. NFA FA,R
  1699. ADN FSTL FETCH RESOURCE FILE STATUS
  1700. CRD FS
  1701. LDD FS+1 CHECK ERROR ON PREVIOUS UPDATE
  1702. SCN 1
  1703. NJN CRF1 IF PROCESSING ERROR
  1704. LDD EQ
  1705. STD FS SET EST ORDINAL
  1706. LDN 5
  1707. STD FS+1 SET *0RF* OPTION
  1708. CRF1 LDN 1
  1709. STM LOCF-1 SET RESOURCE UPDATE CONTROL
  1710. EXECUTE 0RF,LOCF
  1711. LPC 1S17 CLEAR FNT POINTER
  1712. CRF2 STD FA
  1713. PJN CRF3 IF RESOURCE FILE UPDATED
  1714. RJM PES PROCESS ERROR STATUS
  1715. CRF3 LJM CRFX RETURN
  1716. CRR SPACE 4,10
  1717. ** CRR - CHECK AUXILIARY DEVICE REQUEST.
  1718. *
  1719. * ENTRY (T5) = EST ORDINAL OF DEVICE TO BE ACCESSED.
  1720. *
  1721. * EXIT (A) = 0 IF FIRST ACCESS TO PACK.
  1722. *
  1723. * USES T1, T2, CM - CM+4, FN - FN+4.
  1724.  
  1725.  
  1726. CRR3 LCN 1 INDICATE EQUIPMENT ASSIGNED
  1727.  
  1728. CRR SUBR ENTRY/EXIT
  1729.  
  1730. * SEARCH FNT FOR ANOTHER FILE ASSIGNED TO DEVICE.
  1731.  
  1732. LDD CP SET NFL SIZE
  1733. ADN FLSW
  1734. CRD FN
  1735. LDD FN
  1736. SHN 6
  1737. ADN 1
  1738. STD T1
  1739. LDC FNTN SET FIRST FNT ENTRY ADDRESS
  1740. STD T2
  1741. CRR1 NFA T2,R
  1742. ADK FNTL
  1743. CRD FN
  1744. ADN FSTL-FNTL
  1745. CRD CM
  1746. LDD CM CHECK EQUIPMENT ASSIGNMENT
  1747. LMD T5
  1748. NJN CRR2 IF NO MATCH ON EST ORDINAL
  1749. LDD FN+4 CHECK FILE TYPE
  1750. SHN -6
  1751. LMN PMFT
  1752. ZJN CRR3 IF *PMFT* FILE ON CORRECT EQUIPMENT
  1753. CRR2 LDN LENF ADVANCE FNT ADDRESS
  1754. RAD T2
  1755. SBD T1
  1756. MJN CRR1 IF NOT END OF NFL
  1757. LDN 0
  1758. UJN CRRX
  1759. CRX SPACE 4,30
  1760. ** CRX - CHECK *CPUPFM*/*RESEX* RETURN STATUS.
  1761. *
  1762. * ENTRY (CP) = CP ADDRESS.
  1763. *
  1764. * EXIT (A) = (CM+2) = RETURN STATUS.
  1765. *T, 3/ PI,9/ RS
  1766. * PI = PROCESSOR INDEX (0 = *RESEX*, 1 = *CPUPFM*).
  1767. * RS = RETURN STATUS.
  1768. * (CM - CM+4) = CP WORD *SPCW*.
  1769. *
  1770. * *RESEX* RETURN STATUS -
  1771. *T, 3/ 0,3/ ST,2/ 0,1/ P,1/ O,1/ E,1/ C
  1772. * ST = ERROR CODE.
  1773. * 0 = *RESEX* FAILURE - SYSTEM ERROR.
  1774. * 1 = INCORRECT DEVICE REQUEST.
  1775. * 2 = UNRECOGNIZED EQUIPMENT TYPE.
  1776. * 3 = INCORRECT USER REQUEST.
  1777. *
  1778. * P = 0 IF PACK AVAILABLE.
  1779. * E = 1 IF ERROR.
  1780. * O = 1 IF ASSIGNMENT WILL OVERCOMMIT.
  1781. * C = 1 IF OPERATION ALLOWED.
  1782. *
  1783. * TO *ERR* IF *RESEX* ERROR STATUS DETECTED.
  1784. *
  1785. * *CPUPFM* RETURN STATUS -
  1786. *T, 3/ 1,9/ EC
  1787. * EC = *PFM* ERROR CODE.
  1788. * EC = 0 IF NORMAL COMPLETION.
  1789.  
  1790.  
  1791. CRX2 LDN 0 SET *CPUPFM*/*RESEX* NOT ACTIVATED
  1792.  
  1793. CRX SUBR
  1794. LDD CP READ RETURN STATUS
  1795. ADC SPCW
  1796. CRD CM
  1797. LDD CM
  1798. NJN CRX2 IF *DMP=* PROGRAM IN PROGRESS
  1799. LDD CM+2 CHECK RETURN STATUS
  1800. ZJN CRX2 IF *DMP=* PROGRAM NOT ACTIVATED
  1801. SHN -11
  1802. NJN CRX1 IF NOT *RESEX*
  1803. LDD CM+2
  1804. LPN /STATUS/FE CHECK RESEX STATUS
  1805. ZJN CRX1 IF NOT FATAL ERROR
  1806. ERROR NEM,CH,IW ABORT WITH NO MESSAGE
  1807.  
  1808. CRX1 LDM STAT SET *CPUPFM*/*RESEX* ACTIVATED STATUS
  1809. SCN STRX
  1810. LMN STRX
  1811. STM STAT
  1812. LDD CM+2 SET RETURN STATUS
  1813. UJN CRXX RETURN
  1814. CUN SPACE 4,15
  1815. ** CUN - COMPARE USER NAMES.
  1816. *
  1817. * ENTRY (PFOU) = USER NAME SPECIFIED IN FET.
  1818. * (PFAC) = USER NAME OF CALLING JOB.
  1819. *
  1820. * EXIT (A) = 0 IF USER NAMES MATCH.
  1821. * (A) .NE. 0 IF USER NAMES DO NOT MATCH.
  1822. *
  1823. * USES T1, T2, CM - CM+4.
  1824. *
  1825. * CALLS SFN.
  1826.  
  1827.  
  1828. CUN SUBR ENTRY/EXIT
  1829. LDC PFOU SET USER NAME
  1830. RJM SFN
  1831. LDD MA TRANSFER USER NAME
  1832. CWM PFAC,ON
  1833. SBN 1
  1834. CRD CM
  1835. LDD CM+3 CLEAR LOWER CHARACTER OF USER NAME
  1836. SCN 77
  1837. STD CM+3
  1838. LDN 0 INITIALIZE COUNT
  1839. STD T1
  1840.  
  1841. * COMPARE USER NAMES ALLOWING A (*) IN (CM) TO MATCH ANY
  1842. * CORRESPONDING CHARACTER IN THE USER NAME IN (FN).
  1843.  
  1844. CUN1 AOD T1 TEST FOR END OF LOOP
  1845. LMN 5
  1846. ZJN CUNX IF USER NAMES MATCH
  1847. LDM CM-1,T1 USER NAME OF THE REQUESTOR JOB
  1848. STD T2
  1849. LMC 2R**
  1850. ZJN CUN1 IF (**), SKIP CHARACTER COMPARE
  1851. SCN 77
  1852. ZJN CUN3 IF UPPER CHARACTER = (*)
  1853. LDD T2 COMPARE UPPER CHARACTER
  1854. LMM FN-1,T1
  1855. SCN 77
  1856. CUN2 NJN CUNX IF USER NAME DOES NOT MATCH
  1857. LDD T2 CHECK LOWER CHARACTER FOR (*)
  1858. LMN 1R*
  1859. LPN 77
  1860. ZJN CUN1 IF LOWER CHARACTER = (*)
  1861. CUN3 LDD T2 COMPARE LOWER CHARACTER
  1862. LMM FN-1,T1
  1863. LPN 77
  1864. ZJN CUN1 IF LOWER CHARACTER MATCHES
  1865. UJN CUN2 RETURN, USER NAMES DO NOT MATCH
  1866. FIF SPACE 4,10
  1867. ** FIF - FIND INTERLOCK FILES.
  1868. *
  1869. * EXIT (FNTB, FNTC, FNTD) = FNT ADDRESSES, IF FILES PRESENT.
  1870. *
  1871. * CALLS SAF, SFN.
  1872.  
  1873.  
  1874. FIF SUBR ENTRY/EXIT
  1875. LDC FIFA SEARCH FOR /PFM*ILK/
  1876. RJM SFN
  1877. RJM SAF
  1878. ZJN FIF2 IF NOT FOUND
  1879. LDD FA SAVE FNT ADDRESS
  1880. STM FNTC
  1881. FIF2 LDC FIFB SEARCH FOR /PFM*PFN/
  1882. RJM SFN
  1883. RJM SAF
  1884. ZJN FIF3 IF NOT FOUND
  1885. LDD FA SAVE FNT ADDRESS
  1886. STM FNTB
  1887. FIF3 LDC FIFC SEARCH FOR /PFM*APF/
  1888. RJM SFN
  1889. RJM SAF
  1890. ZJN FIF4 IF NOT FOUND
  1891. LDD FA SAVE FNT ADDRESS
  1892. STM FNTD
  1893. FIF4 UJP FIFX RETURN
  1894.  
  1895.  
  1896. FIFA VFD 60/7L"ILK"
  1897. FIFB VFD 60/7L"PFN"
  1898. FIFC VFD 60/7L"APF"
  1899. FMS SPACE 4,15
  1900. ** FMS - FORM MASK FOR FILE RESIDENCE CHECK.
  1901. *
  1902. * ENTRY (UI - UI+1) = USER INDEX.
  1903. * (JORG) = JOB ORIGIN.
  1904. *
  1905. * EXIT (FRSM) = MASK FOR FILE RESIDENCE CHECK.
  1906.  
  1907.  
  1908. FMS SUBR ENTRY/EXIT
  1909. LDD UI+1 FORM MASK FOR ACCESS CHECK
  1910. LPN 7
  1911. LMC SHNI
  1912. STM FMSA
  1913. LDN 1 POSITION MASK
  1914. FMSA PSN 0
  1915. * SHN N N = SHIFT COUNT TO POSITION MASK
  1916. STM FRSM SAVE MASK
  1917. LDD UI CHECK FOR SPECIAL USER INDEX
  1918. SHN 14
  1919. LMD UI+1
  1920. ADC -AUIMX
  1921. MJN FMS1 IF NOT SPECIAL USER INDEX
  1922. LDC 4000 SET SPECIAL USER INDEX
  1923. RAM FRSM
  1924. FMS1 LDM JORG CHECK JOB ORIGIN
  1925. LMK SYOT
  1926. NJN FMS2 IF NOT SYSTEM ORIGIN
  1927. LDM SSJS
  1928. ZJN FMS2 IF NOT SSJ= PROCESS
  1929. LDC 2000 SET *LIFT* FILE ALLOWED FOR DEFINE
  1930. RAM FRSM
  1931. FMS2 LJM FMSX RETURN
  1932. GCA SPACE 4,20
  1933. ** GCA - GET CATALOG ADDRESS.
  1934. *
  1935. * ENTRY (A) = ADDRESS OF PERMANENT FILE DEVICE DESCRIPTION.
  1936. * (UI - UI+1) = USER INDEX.
  1937. * (FERT) = REAL-TIME PROCESSING FLAG.
  1938. * (SSYS) = SUBSYSTEM FLAG.
  1939. *
  1940. * EXIT (A) = ADDRESS OF MST/10B IF DEVICE FOUND.
  1941. * (A) .LT. 0 IF CATALOG NOT AVAILABLE.
  1942. * (T5) = EST ORDINAL.
  1943. * (T6) = CATALOG TRACK.
  1944. *
  1945. * TO *ERR* IF CATALOG NOT AVAILABLE AT THIS TIME
  1946. * AND CALLER HAS REAL-TIME PROCESSING SET IN FET
  1947. * OR IS NOT A SUBSYSTEM.
  1948. *
  1949. * CALLS SCA.
  1950. *
  1951. * MACROS ERROR.
  1952.  
  1953.  
  1954. GCA2 LCN 0 RETURN WITH (A) .LT. 0
  1955.  
  1956. GCA SUBR ENTRY/EXIT
  1957. RJM SCA SET CATALOG ADDRESS
  1958. PJN GCAX IF DEVICE AVAILABLE
  1959. ADN 1
  1960. NJN GCA2 IF DEVICE NOT FOUND
  1961. LDM FERT
  1962. NJN GCA1 IF REAL-TIME PROCESSING SELECTED
  1963. LDM SSYS
  1964. NJN GCA2 IF SUBSYSTEM
  1965. GCA1 ERROR WID,CH,IW,T5,EC6 * WAITING - INACCESSIBLE DEVICE.*
  1966. POA SPACE 4,25
  1967. ** POA - PROCESS OPTIONAL USER NAME.
  1968. *
  1969. * ENTRY (CC) = COMMAND CODE
  1970. * (UI - UI+1) = CALLING USER INDEX.
  1971. * (FERT) = REAL-TIME PROCESSING FLAG.
  1972. * (RDCT) = DRIVER STATUS.
  1973. * (SSYS) = SUBSYSTEM FLAG.
  1974. *
  1975. * EXIT (A) .LT. 0 IF INCORRECT REQUEST.
  1976. * (UI - UI+1) = USER INDEX OF CATALOG TO BE ACCESSED.
  1977. * (PI - PI+1) = USER INDEX OF OPTIONAL USER.
  1978. * (PFUC) = USER CONTROLS.
  1979. *
  1980. * ERROR (STAU) = *STDP* BIT SET TO DROP PP.
  1981. * TO *3PU* IF USER NAME NOT VALID ON *CATLIST* REQUEST
  1982. * AND NO FILE NAME WAS SPECIFIED.
  1983. *
  1984. * TO *ERR* IF UNRECOVERABLE ERROR ON VALIDUS FILE
  1985. * OR DEVICE INACCESSIBLE.
  1986. *
  1987. * USES FN+3, FN+4, T4, T6, T7, CM - CM+4, CN - CN+4.
  1988. *
  1989. * CALLS CPN, SFA, SFN, SLT, SPN, *0AV*.
  1990. *
  1991. * MACROS ERROR, EXECUTE, NFA, SFA.
  1992.  
  1993.  
  1994. POA14 LCN 1 SET INCORRECT REQUEST
  1995.  
  1996. POA SUBR ENTRY/EXIT
  1997. LDN 0
  1998. STD PI CLEAR OPTIONAL USER INDEX
  1999. STD PI+1
  2000. LDD CC
  2001. LMN CCPM
  2002. ZJN POAX IF *PERMIT* REQUEST
  2003. LDM PFOU OPTIONAL USER
  2004. POA0 ZJN POAX IF NO OPTIONAL USER NAME
  2005. LMM PFAC JOB USER NAME
  2006. NJN POA2 IF USER NAMES DO NOT MATCH
  2007. LDM PFOU+1
  2008. LMM PFAC+1
  2009. NJN POA2 IF USER NAMES DO NOT MATCH
  2010. LDM PFOU+2
  2011. LMM PFAC+2
  2012. NJN POA2 IF USER NAMES DO NOT MATCH
  2013. LDM PFOU+3
  2014. LMM PFAC+3
  2015. SHN -6
  2016. NJN POA2 IF USER NAMES DO NOT MATCH
  2017. STM PFOU CLEAR OPTIONAL USER NAME
  2018. POA1 UJN POA0 RETURN
  2019.  
  2020. POA2 LDM PFRB CHECK FOR SPECIAL REQUEST BLOCK
  2021. LPN 37
  2022. ADM PFRB+1
  2023. ZJN POA3 IF NO SPECIAL REQUEST BLOCK
  2024. POA2.1 LDN 0 IGNORE OPTIONAL USER NAME
  2025. UJN POA1 RETURN
  2026.  
  2027. POA3 LDM TCTL,CC CHECK ALTERNATE CATALOG ACCESS LEGAL
  2028. SHN 21-0
  2029. PJN POA3.1 IF ALTERNATE CATALOG ACCESS VALID
  2030. SHN 21-12-21+0+22
  2031. MJN POA2.1 IF SRB-TYPE FUNCTION WITH NO SRB
  2032. AOM POAC INDICATE NONVALID ALTERNATE CATALOG ACCESS
  2033. POA3.1 LDM SSJS
  2034. ZJN POA4 IF NOT *SSJ=*
  2035. LDM JORG CHECK JOB ORIGIN
  2036. LMK SYOT
  2037. ZJN POA6 IF SYSTEM ORIGIN
  2038. POA4 LDN 0
  2039. * LDN 1 (ALTERNATE CATALOG ACCESS NOT VALID)
  2040. POAC EQU *-1
  2041. NJN POA4.1 IF ALTERNATE CATALOG ACCESS NOT ALLOWED
  2042. LDD CC
  2043. LMN CCCT
  2044. NJN POA6 IF NOT *CATLIST* REQUEST
  2045. LDM PFFN+4
  2046. ZJN POA6 IF NOT PERMIT LIST
  2047. LDM PFFN
  2048. NJN POA5 IF FILE NAME SPECIFIED
  2049. POA4.1 LJM POA14 RETURN INCORRECT REQUEST STATUS
  2050.  
  2051. POA5 LDN 2 SET TO BYPASS PRESET OF USER INDEX
  2052. RAM TCTL,CC
  2053.  
  2054. * CHECK USER NAME CACHE IN NFL/CPA.
  2055.  
  2056. POA6 LDC PFOU SET USER NAME
  2057. RJM SFN
  2058. LDD CP CHECK USER NAME CACHE IN CPA
  2059. ADK PFCW
  2060. CRD CN
  2061. NFA PUCN
  2062. CRD CM
  2063. LDN FN
  2064. RJM CPN COMPARE USER NAMES
  2065. NJN POA6.0 IF NO MATCH
  2066. LDD CM+4 SET USER INDEX
  2067. STD T2
  2068. LDD CM+3
  2069. LPN 37
  2070. STD T1
  2071. LDD CN+2 SET VALIDATIONS
  2072. STM PFUC
  2073. LJM POA7 CONTINUE
  2074.  
  2075. * CHECK COMMON LIBRARY TABLE IN CMR.
  2076.  
  2077. POA6.0 SFA EST,PFPN+4 SET FAMILY NAME
  2078. ADK EQDE
  2079. CRD CM
  2080. LDD CM+4 READ FAMILY NAME
  2081. SHN 3
  2082. ADN PFGL
  2083. CRD CN
  2084. RJM SLT CHECK COMMON LIBRARY TABLE
  2085. STM POAA SAVE SEARCH RESULT
  2086. ZJP POA7 IF VALIDATION NOT REQUIRED
  2087.  
  2088. * CALL *0AV* TO VALIDATE USER.
  2089.  
  2090. LDN 0 SET VALIDATION FUNCTION
  2091. STD FN+4
  2092. EXECUTE 0AV,LOCF VALIDATE USER NAME
  2093. PJN POA6.3 IF NO ERROR
  2094. LDM RDCT DRIVER STATUS
  2095. SHN 21-12
  2096. MJN POA6.2 IF UNRECOVERABLE ERROR
  2097. LDM SSYS
  2098. ZJN POA6.1 IF NOT A SUBSYSTEM
  2099. LDM FERT
  2100. ZJN POA6.2 IF REAL-TIME PROCESSING NOT SELECTED
  2101. POA6.1 ERROR WID,CH,IW,T5,EC6 * WAITING - INACCESSIBLE DEVICE.*
  2102.  
  2103. POA6.2 ERROR MSE,CH,IW,T5 *EQXXX,DNYY, MASS STORAGE ERROR.*
  2104.  
  2105. * CHECK FOR VALID USER NAME.
  2106.  
  2107. POA6.3 LDM AHFC*5,T3 SAVE USER LIMIT INDICES
  2108. STM PFUC
  2109. POA7 LDD T1
  2110. STD PI
  2111. RAD FN+3
  2112. LPN 77 SAVE ONLY USER INDEX PORTION OF BYTE
  2113. SHN 14
  2114. ADD T2
  2115. STD PI+1
  2116. STD FN+4
  2117. ZJN POA8 IF USER NAME NOT VALID
  2118. LMC IFUI
  2119. ZJN POA8 IF INDIRECT FLAW USER INDEX SPECIFIED
  2120. LJM POA10 PROCESS VALID USER NAME
  2121.  
  2122. * PROCESS NON-VALID USER NAME.
  2123.  
  2124. POA8 LDD CC CHECK COMMAND CODE
  2125. LMN CCCT
  2126. NJN POA9 IF NOT *CATLIST* REQUEST
  2127. LDM PFFN+4
  2128. NJN POA10 IF PERMIT CATLIST
  2129. LDM PFFN
  2130. NJN POA9 IF FILE NAME SPECIFIED
  2131. RJM SFA SET EOI STATUS TO INDICATE EMPTY CATALOG
  2132. CRD CM
  2133. LDD CM+3
  2134. SCN 77
  2135. STD CM+3
  2136. LDD CM+4
  2137. LPN 2
  2138. ADC 1031
  2139. STD CM+4
  2140. RJM SFA
  2141. CWD CM
  2142. LDK STDP SET *DROP PP* STATUS BIT
  2143. RAM STAU
  2144. EXECUTE 3PU DROP PP
  2145.  
  2146. POA9 RJM SPN SET PERMANENT FILE NAME
  2147. ERROR FNF,CH,IW *(FILENAME) NOT FOUND.*
  2148.  
  2149. * PROCESS VALID USER NAME.
  2150.  
  2151. POA10 LDM TCTL,CC
  2152. LPN 2
  2153. NJN POA11 IF NOT ALTERNATE USER ACCESS
  2154. LDD PI SET CATALOG TO BE ACCESSED
  2155. STD UI
  2156. LDD PI+1
  2157. STD UI+1
  2158. POA11 LDC 7776
  2159. * LDC 7776 (NORMAL USER NAME - NOT IN CLT)
  2160. * LDC 0 (USER NAME AND VALIDATION INFO IN CLT)
  2161. * LDC 1 (USER NAME BUT NOT VALIDATION INFO IN CLT)
  2162. POAA EQU *-1
  2163. ZJN POA12 IF ALL INFORMATION IN CLT
  2164. SBN 1
  2165. ZJN POA13 IF VALIDATION INFORMATION NEEDED IN CLT
  2166.  
  2167. * UPDATE USER NAME CACHE IN NFL/CPA.
  2168.  
  2169. LDD CP
  2170. ADK PFCW
  2171. CRD CN
  2172. LDM PFUC UPDATE USER VALIDATION INFORMATION
  2173. STM CN+2
  2174. LDD CP
  2175. ADK PFCW
  2176. CWD CN
  2177. NFA PUCN SAVE USER NAME AND USER INDEX
  2178. CWD FN
  2179. LDN 0 SET RETURN STATUS
  2180. POA12 LJM POAX RETURN
  2181.  
  2182. * UPDATE COMMON LIBRARY TABLE ENTRY.
  2183.  
  2184. POA13 LDD CN+3 CLEAR DEVICE NUMBER FROM FAMILY NAME
  2185. SCN 77
  2186. STD CN+3
  2187. LDD T5 SAVE NEW EST ORDINAL
  2188. STD CN+4 MERGE EST ORDINAL WITH FAMILY NAME
  2189. STM PFPN+4 CHANGE EST ORDINAL
  2190. LDC 0 GET ENTRY ORDINAL
  2191. POAB EQU *-1
  2192. STD T4
  2193. SFA CLT
  2194. ADK CLTU
  2195. CWD FN WRITE USER INDEX IN TABLE
  2196. ADN CLTF-CLTU
  2197. CWD CN WRITE FAMILY NAME AND EST ORDINAL IN TABLE
  2198. ADN CLTV-CLTF SET PERMANENT FILE VALIDATION INFORMATION
  2199. CRD CM
  2200. LDM PFUC
  2201. STD CM+4
  2202. SFA CLT,T4
  2203. ADN CLTV
  2204. CWD CM
  2205. LJM POAX RETURN
  2206. RCL SPACE 4,15
  2207. ** RCL - RECALL PFM.
  2208. *
  2209. * ENTRY (A) = ERROR CODE.
  2210. * (PWRF) = RESTART FLAGS.
  2211. *
  2212. * EXIT (CN - CN+4) = INPUT REGISTER FOR *PFM* RECALL.
  2213. * (FN - FN+4) = RECALL REQUEST FOR MONITOR.
  2214. * (MP - MP+4) = PARAMETER WORD FOR *PFM* RECALL.
  2215. * (AIPF, AIPF+1) = 0.
  2216. * (STAU) = *STRP* BIT SET TO RECALL *PFM*.
  2217. * TO *3PU* TO RECALL *PFM*.
  2218. *
  2219. * USES P1, CN - CN+4, FN - FN+4, MP - MP+4.
  2220. *
  2221. * MACROS EXECUTE.
  2222.  
  2223.  
  2224. RCL BSS 0 ENTRY
  2225. STD P1 SAVE ERROR CODE
  2226. LDN 0 CLEAR PF ACCUMULATOR INCREMENT
  2227. STM AIPF
  2228. STM AIPF+1
  2229. LDN ZERL
  2230. CRD FN SET RECALL REQUEST
  2231. CRD MP
  2232. LDM PWRF SET RESTART FLAGS FOR RECALL
  2233. STD MP
  2234. LDD P1 SET ERROR CODE
  2235. STD MP+1
  2236. LDD IA READ INPUT REQUEST REGISTER
  2237. CRD CN
  2238. LDC PTMF SET TIMED RECALL
  2239. STD FN+1
  2240. LDC 250D SET DELAY TO 250D MILLISECONDS
  2241. STD FN+4
  2242. LDK STRP SET *RECALL PFM* STATUS BIT
  2243. RAM STAU
  2244. EXECUTE 3PU RECALL *PFM*
  2245. RSX SPACE 4,10
  2246. ** RSX - REQUEST RESOURCE VALIDATION.
  2247. *
  2248. * CALL *RESEX* AS A *DMP=* PROGRAM.
  2249. *
  2250. * EXIT TO *RCL*.
  2251. *
  2252. * USES CM - CM+4, FN - FN+4.
  2253. *
  2254. * MACROS ERROR, MONITOR.
  2255.  
  2256.  
  2257. RSX BSS 0 ENTRY
  2258. LDD CP CHECK FOR *DMP=* IN PROGRESS
  2259. ADC SPCW
  2260. CRD CM
  2261. LDD CM+1
  2262. SHN -6
  2263. ADD CM
  2264. ZJN RSX1 IF NOT *DMP=* IN PROGRESS
  2265. ERROR ILR,CH,IW * PFM INCORRECT REQUEST.*
  2266.  
  2267. RSX1 LDD MA SET INPUT REGISTER
  2268. CWD IR
  2269. CRD FN
  2270. LDD FN+1
  2271. SCN 77
  2272. LMN 20 SET STATUS TO LEAVE RA+1 SET WITH PFM CALL
  2273. STD FN+1
  2274. LDN 0 CLEAR RETURN STATUS
  2275. STD FN+2
  2276. LDD CP WRITE CP REQUEST
  2277. ADC SPCW
  2278. CWD FN
  2279. LDN ROSR REQUEST SCHEDULER ROLLOUT
  2280. STD CM+1
  2281. MONITOR ROCM
  2282. * LDN 0 (NO ERROR CODE)
  2283. LJM RCL RECALL PFM
  2284. SAM SPACE 4,15
  2285. ** SAM - SET UP ACCOUNTING MESSAGE.
  2286. *
  2287. * ENTRY (A) = ADDRESS OF USER NAME.
  2288. * (PFPN) = OPTIONAL PACK NAME.
  2289. * (CC) = COMMAND CODE.
  2290. *
  2291. * EXIT (PRSF) - (PRSH+PRSHL-1) = MESSAGE AREA SET UP.
  2292. *
  2293. * CALLS ACS, SFN, SPN.
  2294. *
  2295. * USES P0, T1, FN - FN+4.
  2296.  
  2297.  
  2298. SAM SUBR ENTRY/EXIT
  2299. STD P0 SAVE ADDRESS OF USER NAME
  2300. LDM PRSH,CC SET PFM FUNCTION IN MESSAGE BUFFER
  2301. STM PRSF+1
  2302. RJM SPN SET PERMANENT FILE NAME
  2303. LDC PRSH INITIALIZE MESSAGE POINTER FOR ACS CALLS
  2304. STD T1
  2305. LDN FN INSERT FILE NAME IN MESSAGE BUFFER
  2306. RJM ACS
  2307. LDC PRSB APPEND COMMA SEPARATOR
  2308. RJM ACS
  2309. LDI P0 CHECK USER NAME
  2310. ZJN SAM1 IF NULL USER NAME
  2311. LDD P0 CLEAR LOWER 3 CHARACTERS OF USER NAME
  2312. RJM SFN
  2313. LDN FN APPEND USER NAME IN MESSAGE BUFFER
  2314. RJM ACS
  2315. SAM1 LDC PRSB APPEND COMMA SEPARATOR
  2316. RJM ACS
  2317. LDM PFPN CHECK FOR OPTIONAL PACK NAME
  2318. ZJN SAM2 IF NO PACK NAME
  2319. LDC PFPN CLEAR LOWER 3 CHARACTERS OF PACK NAME
  2320. RJM SFN
  2321. LDN FN APPEND OPTIONAL PACK NAME
  2322. RJM ACS
  2323. SAM2 LDC PRSC APPEND MESSAGE TERMINATOR
  2324. RJM ACS
  2325. LJM SAMX RETURN
  2326. SRF SPACE 4,15
  2327. ** SRF - SET UP RESERVE FNT.
  2328. *
  2329. * RESERVE AN FNT ENTRY IF STATUS *H* IS SET IN *TCTL*.
  2330. *
  2331. * ENTRY (CC) = COMMAND CODE.
  2332. *
  2333. * EXIT (FNTA) = ADDRESS OF RESERVE FNT ENTRY.
  2334. * (PRSF) = EXIT PROCESSING STATUS.
  2335. *
  2336. * CALLS SFN, *0BF*.
  2337. *
  2338. * USES T4, CM - CM+4, FS - FS+4.
  2339. *
  2340. * MACROS EXECUTE, EXIT.
  2341.  
  2342.  
  2343. SRF SUBR ENTRY/EXIT
  2344. LDM TCTL,CC CHECK FOR FNT NEEDED
  2345. SHN 21-7
  2346. SRF1 PJN SRFX IF FNT NOT NEEDED
  2347. LDC SRFB SET RESERVED FNT NAME
  2348. RJM SFN
  2349. LDN NEEQ ASSIGN NULL EQUIPMENT
  2350. STD FS
  2351. LDN 5 RETURN ON NFL INCREASE, LOCAL FILE LIMIT
  2352. STM LOCF-1
  2353. EXECUTE 0BF,LOCF CREATE PFM*** FILE
  2354. NJN SRF2 IF FILE NOT CREATED
  2355.  
  2356. * USE EXISTING FNT ENTRY (ADVANCE EXIT FROM *0BF*).
  2357.  
  2358. LDD FA SAVE RESERVE FNT POINTER
  2359. STM FNTA
  2360. LDD FN+4 SAVE FILE STATUS
  2361. LPN 77
  2362. RAM SFNB
  2363. LDN 0 CLEAR FST POINTER
  2364. STD FA
  2365. LDD FS CHECK FOR RESERVED SPACE
  2366. NJN SRF1 IF SPACE RESERVED
  2367. EXIT PFN,CH,IW,,EC4 * DEVICE UNAVAILABLE.*
  2368.  
  2369. SRF2 MJN SRF5 IF REJECT ON NFL INCREASE
  2370. LMN 4
  2371. NJN SRF6 IF NOT LOCAL FILE LIMIT
  2372. ERROR LFL,CH,IW * LOCAL FILE LIMIT.*
  2373.  
  2374. SRF5 LDN 0 SET SCHEDULER ROLLOUT
  2375. STM ERRC
  2376. STM ERRD
  2377. EXIT WNF,CH,IW,,EC1 * WAITING FOR NFL.*
  2378.  
  2379. SRF6 EXIT WNF,CH,IW,,EC4 * WAITING FOR NFL.*
  2380.  
  2381.  
  2382. SRFB VFD 60/6LPFM***
  2383. SUC SPACE 4,30
  2384. ** SUC - SET USER CONTROLS.
  2385. * IF INDIVIDUAL CONTROL NOT SET USE
  2386. * SERVICE CLASS SPECIFIED LIMITS.
  2387. *
  2388. * ENTRY (PFUC) = USER CONTROL.
  2389. *T PFUC 3/ DS, 3/ FC, 3/ CS, 3/ FS
  2390. * DS = INDEX FOR DIRECT ACCESS FILE SIZE.
  2391. * FC = INDEX FOR NUMBER OF FILES IN CATALOG.
  2392. * CS = INDEX FOR CUMULATIVE SIZE OF INDIRECT FILES.
  2393. * FS = INDEX FOR INDIRECT FILE SIZE.
  2394. * (JORG) = JOB ORIGIN.
  2395. *
  2396. *
  2397. * EXIT (MXFS) = MAXIMUM INDIRECT FILE SIZE/10B.
  2398. * (IMSK) SET TO DEVICE ACCESS MASK FOR *DEFINE*.
  2399. * (MXNF) = MAXIMUM NUMBER OF FILES/100B.
  2400. * (MXCS - MXCS+1) = MAXIMUM CUMULATIVE SIZE FOR IAPF-S.
  2401. * (MXDS - MXDS+1) = MAXIMUM SIZE OF DIRECT ACCESS FILE.
  2402. *
  2403. * CALLS FMS, RJC.
  2404. *
  2405. * USES FS - FS+4, T1.
  2406.  
  2407.  
  2408. SUC SUBR ENTRY/EXIT
  2409.  
  2410. * SET PERMANENT FILE CONTROLS.
  2411.  
  2412. SUCA LDN 0 (SERVICE CLASS SET IN *PRS*)
  2413. LMN DSSC
  2414. NJN SUC1 IF NOT DEADSTART SEQUENCING
  2415. LDN SSSC&DSSC USE SUBSYSTEM SERVICE CLASS
  2416. SUC1 LMN DSSC READ JOB CONTROL PARAMETERS
  2417. RJM RJC
  2418. ZJN SUCX IF SERVICE CLASS UNDEFINED
  2419. ADN PFCT
  2420. CRD FS
  2421.  
  2422. * SET LIMIT FOR INDIVIDUAL FILE SIZE.
  2423.  
  2424. LDD FS SET SERVICE CLASS CONTROL AS DEFAULT
  2425. LPN 7
  2426. STD T1
  2427. LDM PFUC CHECK INDIVIDUAL *FS* VALUE
  2428. LPN 7
  2429. ZJN SUC2 IF NOT INDIVIDUAL CONTROL SET
  2430. STD T1
  2431. SUC2 LDM TMFS,T1 SET CONTROL VALUE
  2432. STM MXFS
  2433.  
  2434. * SET LIMIT FOR NUMBER OF FILES.
  2435.  
  2436. LDD FS SET SERVICE CLASS CONTROL AS DEFAULT
  2437. SHN -6
  2438. LPN 7
  2439. STD T1
  2440. LDM PFUC CHECK INDIVIDUAL *FC* VALUE
  2441. SHN -6
  2442. LPN 7
  2443. ZJN SUC3 IF NO INDIVIDUAL CONTROL SET
  2444. STD T1
  2445. SUC3 LDM TMNF,T1 SET CONTROL VALUE
  2446. STM MXNF
  2447.  
  2448. * SET LIMIT FOR CUMULATIVE SIZE OF INDIRECT ACCESS FILES.
  2449.  
  2450. LDD FS SET SERVICE CLASS CONTROL AS DEFAULT
  2451. SHN -3
  2452. LPN 7
  2453. SHN 1
  2454. STD T1
  2455. LDM PFUC CHECK INDIVIDUAL *CS* VALUE
  2456. SHN -3
  2457. LPN 7
  2458. ZJN SUC4 IF NO INDIVIDUAL CONTROL SET
  2459. SHN 1
  2460. STD T1
  2461. SUC4 LDM TMCS,T1 SET CONTROL VALUE
  2462. STM MXCS
  2463. LDM TMCS+1,T1
  2464. STM MXCS+1
  2465.  
  2466. * SET DIRECT ACCESS FILE SIZE CONTROLS.
  2467.  
  2468. LDM TCTL,CC
  2469. SHN 21-5
  2470. PJN SUC6 IF NOT DIRECT ACCESS REQUEST
  2471. RJM FMS FORM MASK FOR FILE RESIDENCE CHECK
  2472. LDD FS SET SERVICE CLASS CONTROL AS DEFAULT
  2473. SHN -11
  2474. LPN 7
  2475. SHN 1
  2476. STD T1
  2477. LDM PFUC CHECK INDIVIDUAL *DS* VALUE
  2478. SHN -11
  2479. LPN 7
  2480. ZJN SUC5 IF NO INDIVIDUAL CONTROL SET
  2481. SHN 1
  2482. STD T1
  2483. SUC5 LDM TMDS,T1 SET INDIVIDUAL CONTROL
  2484. STM MXDS
  2485. LDM TMDS+1,T1
  2486. STM MXDS+1
  2487. SUC6 LJM SUCX EXIT
  2488. SWI SPACE 4,15
  2489. ** SWI - SWAP USER INDICES.
  2490. *
  2491. * ENTRY (UI - UI+1) = USER INDEX.
  2492. * (PI - PI+1) = PERMIT INDEX.
  2493. *
  2494. * EXIT (UI - UI+1) = PERMIT INDEX.
  2495. * (PI - PI+1) = USER INDEX.
  2496.  
  2497.  
  2498. SWI SUBR ENTRY/EXIT
  2499. LDD UI SWAP USER AND PERMIT INDICES
  2500. STD T1
  2501. LDD PI
  2502. STD UI
  2503. LDD T1
  2504. STD PI
  2505. LDD UI+1
  2506. STD T1
  2507. LDD PI+1
  2508. STD UI+1
  2509. LDD T1
  2510. STD PI+1
  2511. UJN SWIX RETURN
  2512. TMFS SPACE 4,15
  2513. ** TABLE OF INDIVIDUAL FILE SIZE LIMITS.
  2514.  
  2515.  
  2516. TMFS BSS 0
  2517. LOC 0
  2518. CON 0
  2519. CON FSRNG1
  2520. CON FSRNG2
  2521. CON FSRNG3
  2522. CON FSRNG4
  2523. CON FSRNG5
  2524. CON FSRNG6
  2525. CON FSRNG7
  2526. LOC *O
  2527. TMNF SPACE 4,15
  2528. ** TABLE OF NUMBER OF FILE LIMITS.
  2529.  
  2530.  
  2531. TMNF BSS 0
  2532. LOC 0
  2533. CON 0
  2534. CON NFRNG1
  2535. CON NFRNG2
  2536. CON NFRNG3
  2537. CON NFRNG4
  2538. CON NFRNG5
  2539. CON NFRNG6
  2540. CON NFRNG7
  2541. LOC *O
  2542. TMCS SPACE 4,15
  2543. ** TABLE OF CUMULATIVE FILE SIZE LIMITS.
  2544.  
  2545.  
  2546. TMCS BSS 0
  2547. LOC 0
  2548. CON 0,0
  2549. CSR CSRNG1
  2550. CSR CSRNG2
  2551. CSR CSRNG3
  2552. CSR CSRNG4
  2553. CSR CSRNG5
  2554. CSR CSRNG6
  2555. CSR CSRNG7
  2556. LOC *O
  2557. TMDS SPACE 4,15
  2558. ** TABLE OF DIRECT ACCESS FILE SIZE LIMITS.
  2559.  
  2560.  
  2561. TMDS BSS 0
  2562. LOC 0
  2563. CON 0,0
  2564. CSR DSRNG1
  2565. CSR DSRNG2
  2566. CSR DSRNG3
  2567. CSR DSRNG4
  2568. CSR DSRNG5
  2569. CSR DSRNG6
  2570. CSR DSRNG7
  2571. LOC *O
  2572. SPACE 4,10
  2573. * COMMON DECKS.
  2574.  
  2575.  
  2576. *CALL COMPACS
  2577. DTS$ EQU 0 CHECK FOR INACCESSIBLE DEVICE
  2578. *CALL COMPDTS
  2579. CLT$ EQU 0 DEFINE *COMPGFP* ACCESS TO CLT
  2580. EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT
  2581. *CALL COMPGFP
  2582. *CALL COMPRJC
  2583. *CALL COMPSAF
  2584. *CALL COMPSCA
  2585. SPACE 4,10
  2586. LOCF EQU *+5 OVERLAY ADDRESS FOR ZERO-LEVEL OVERLAYS
  2587.  
  2588. ERRNG EPFW-LOCF-ZAVL CHECK LENGTH OF *0AV*
  2589. ERRNG EPFW-LOCF-ZBFL CHECK LENGTH OF *0BF*
  2590. ERRNG BFMS-LOCF-ZRFL CHECK LENGTH OF *0RF*
  2591.  
  2592.  
  2593. * THE FOLLOWING CODE MAY BE OVERLAID BY ZERO-LEVEL OVERLAYS.
  2594. TITLE OVERLAYABLE PRESET SUBROUTINES.
  2595. CPN SPACE 4,10
  2596. ** CPN - COMPARE NAMES.
  2597. *
  2598. * ENTRY (CM - CM+3) = NAME FROM COMMON LIBRARIES TABLE.
  2599. * (A) = ADDRESS OF SECOND NAME.
  2600. *
  2601. * EXIT (A) = 0 IF MATCH.
  2602. *
  2603. * USES T7.
  2604.  
  2605.  
  2606. CPN SUBR ENTRY/EXIT
  2607. STD T7 SAVE ADDRESS
  2608. LDI T7
  2609. LMD CM
  2610. NJN CPNX IF NO MATCH
  2611. LDM 1,T7
  2612. LMD CM+1
  2613. NJN CPNX IF NO MATCH
  2614. LDM 2,T7
  2615. LMD CM+2
  2616. NJN CPNX IF NO MATCH
  2617. LDM 3,T7
  2618. LMD CM+3
  2619. SCN 77
  2620. UJN CPNX RETURN
  2621. PER SPACE 4,15
  2622. ** PER - PROCESS ERROR REPLY FROM *CPUPFM*.
  2623. *
  2624. * ENTRY (A) = ERROR REPLY FROM *CPUPFM*.
  2625. * (CM - CM+4) = CP WORD *SPCW*.
  2626. * (PWRF) = *PFM* RESTART FLAGS.
  2627. *
  2628. * EXIT (A) = PARAMETER WORD FOR *ERROR* MACRO.
  2629. * (P1) = ERROR CODE.
  2630. * (PWRF) = *RFRR* BIT SET IF REQUEST TO BE RETRIED.
  2631. * TO *3PS* TO REDO *DMP=* CALL IF *CPUPFM* DID NOT
  2632. * COMPLETE.
  2633. *
  2634. * USES T0.
  2635. *
  2636. * MACROS EXECUTE.
  2637.  
  2638.  
  2639. PER SUBR ENTRY/EXIT
  2640. STD T0
  2641. SHN 21-11
  2642. PJN PER3 IF *CPUPFM* DID NOT COMPLETE
  2643. LDD T0
  2644. LPC 177
  2645. STD P1 ERROR CODE
  2646. ZJN PERX IF NO ERROR
  2647. LMK /ERRMSG/RTR
  2648. NJN PER2 IF NOT *RETRY REQUEST*
  2649. LDM PWRF RESTART FLAGS
  2650. LPK RFRR
  2651. NJN PER1 IF REQUEST ALREADY RETRIED
  2652. LDK RFRR SET *RETRY REQUEST* FLAG
  2653. RAM PWRF
  2654. UJN PER2 FORM PARAMETER WORD FOR *ERROR* MACRO
  2655.  
  2656. PER1 LDK /ERRMSG/MSE SET ERROR CODE TO *MASS STORAGE ERROR*
  2657. STD P1
  2658. PER2 LDD T0 FORM PARAMETER WORD FOR *ERROR* MACRO
  2659. SHN 1-10
  2660. LPN 2 ERROR IDLE FLAG
  2661. STD T0
  2662. LDD P1
  2663. SHN 2 ERROR CODE
  2664. ADD T0
  2665. UJN PERX RETURN
  2666.  
  2667. * REDO *DMP=* CALL.
  2668.  
  2669. PER3 LDD CM
  2670. EXECUTE 3PS REDO *DMP=* CALL
  2671. PFP SPACE 4,20
  2672. ** PFP - PROCESS FET PARAMETERS.
  2673. *
  2674. * ENTRY (IR+3 - IR+4) = FET ADDRESS.
  2675. *
  2676. * EXIT (CN - CN+4) = USER NAME/USER INDEX.
  2677. * (FN - FN+4) = ACCESS WORD (*AACW*).
  2678. * (FERT) = REAL-TIME PROCESSING FLAG.
  2679. * (PFUC) = USER CONTROLS.
  2680. * (FETL) = LENGTH OF PF PARAMETERS IN FET.
  2681. * (PRSA - PRSA+1) = AUXILIARY DEVICE TYPE REQUESTED.
  2682. * (RQDT - RQDT+1) = REQUESTED DEVICE TYPE.
  2683. * PARAMETERS FROM FET SET IN PFM PARAMETER BLOCK AREA.
  2684. *
  2685. * USES T1, CM - CM+4, CN - CN+4, FN - FN+4.
  2686. *
  2687. * CALLS CRS, PSR, PXT, SAP, SFA, VRP.
  2688. *
  2689. * MACROS ERROR.
  2690.  
  2691.  
  2692. PFP SUBR ENTRY/EXIT
  2693. RJM SFA READ FET+1
  2694. ADN 1
  2695. CRD CM
  2696. LDD CM SET DEVICE TYPE FOR AUX PACK PROCESSING
  2697. STM PFPB
  2698. LDD CM+1 SAVE RT STATUS
  2699. SHN 0-7
  2700. LPN 1
  2701. STM FERT
  2702. LDD CM+1 SAVE SECURITY PROCESSING BIT
  2703. LPN 10
  2704. STM PFSP
  2705. LDD CM+3
  2706. SHN -6
  2707. ADN 5 COMPUTE FULL LENGTH
  2708. STD T1
  2709.  
  2710. * CHECK RECALL STATUS.
  2711.  
  2712. LDM TCTL,CC
  2713. SHN 21-13
  2714. MJN PFP1.1 IF REQUEST MAY BE MADE WITHOUT AUTO-RECALL
  2715. RJM CRS CHECK RECALL STATUS
  2716. NJN PFP2 IF CALLED WITH AUTO RECALL
  2717. PFP1 ERROR PAE,CH,IW * PFM ARGUMENT ERROR.*
  2718.  
  2719. PFP1.1 LDD CM+1 CHECK ERROR PROCESSING OPTIONS
  2720. SHN 0-10
  2721. LPN 3
  2722. LMN 3
  2723. NJN PFP1 IF EITHER *EP* OR *UP* NOT SPECIFIED
  2724.  
  2725. * SET FET PARAMETERS.
  2726.  
  2727. PFP2 LDD CC
  2728. LMN CCCT
  2729. NJN PFP2.1 IF NOT *CATLIST* COMMAND
  2730. LDD T1
  2731. SBN CFCN+1
  2732. MJN PFP1 IF FET NOT LONG ENOUGH
  2733. PFP2.1 LDD T1 DETERMINE IF FET WILL FIT IN BUFFER AREA
  2734. SBM FETL
  2735. PJN PFP3 IF FET LONGER THAN PF PARAMETERS
  2736. RAM FETL SET FET LENGTH
  2737.  
  2738. PFP3 LDM FETL READ FET PARAMETERS
  2739. SBN CFPN
  2740. STD T1
  2741. MJN PFP4 IF NONE TO READ
  2742. ZJN PFP4 IF NONE TO READ
  2743. RJM SFA
  2744. ADN CFPN
  2745. CRM PFFN,T1
  2746. LDM EMRA CHECK ERROR MESSAGE RETURN ADDRESS
  2747. LPN 37
  2748. SHN 14
  2749. ADM EMRA+1
  2750. ADN 3 CHECK ADDRESS
  2751. SHN -6
  2752. SBD FL
  2753. MJN PFP4 IF ADDRESS IN RANGE
  2754. LDN 0 CLEAR ERROR MESSAGE RETURN ADDRESS
  2755. STM EMRA
  2756. STM EMRA+1
  2757. LJM PFP1 ISSUE ERROR MESSAGE
  2758.  
  2759. PFP4 RJM SAP SAVE ACCESS PARAMETERS
  2760. RJM PXT PROCESS EXPIRATION TERM
  2761. LDD CP READ USER CONTROL FROM CONTROL POINT
  2762. ADN PFCW
  2763. CRD FS
  2764. ADN UIDW-PFCW READ USER INDEX
  2765. CRD CN
  2766. CRM PFAC,ON READ USER NAME
  2767. ADN AACW-UIDW-1
  2768. CRD FN READ USER VALIDATIONS
  2769. LDM SSJS
  2770. ZJN PFP4.1 IF NOT *SSJ=*
  2771. LDD CN+3 CHECK USER INDEX
  2772. LPN 37
  2773. SHN 14
  2774. LMD CN+4
  2775. LMC SYUI
  2776. NJN PFP4.1 IF NOT *SYSTEMX*
  2777. LCN 0 SET UNLIMITED VALIDATIONS
  2778. STD FS+4
  2779. PFP4.1 LDD FS+4 SAVE PF USER CONTROL VALIDATIONS
  2780. STM PFUC
  2781. RJM PSR PROCESS SPECIAL REQUEST BLOCK
  2782. NJN PFP5 IF NOT SPECIAL REQUEST
  2783. LJM PFPX RETURN
  2784.  
  2785. * DETERMINE AUXILIARY PACKNAME AND DEVICE TYPE.
  2786.  
  2787. PFP5 RJM VRP VERIFY PARAMETERS
  2788. LDK PFNL PRESET SYSTEM DEFAULT PACK TYPE
  2789. CRD CM
  2790. LDD CM+1
  2791. SCN 77
  2792. SHN 6
  2793. LMD CM
  2794. SHN 6
  2795. STM RQDT+1
  2796. SHN -14
  2797. STM RQDT
  2798. LDM PFPN+4 SAVE UNIT COUNT
  2799. STM PFPA
  2800. LDD IA READ INPUT REGISTER
  2801. CRD CM
  2802. LDD CM+2
  2803. SCN 77
  2804. NJN PFP6 IF *IP* OR *DF* SPECIFIED
  2805. LDM PFPN
  2806. ZJN PFP8 IF PACKNAME NOT SPECIFIED IN FET
  2807. LMC 1R0*100
  2808. NJP PFP9 IF NOT *PN.EQ.0*
  2809.  
  2810. * CLEAR PACKNAME.
  2811.  
  2812. PFP6 LDN 0 CLEAR PACKNAME
  2813. STM PFPN
  2814. LDD CM+2
  2815. SHN 21-11
  2816. PJN PFP7 IF NOT *DF* (FORCE SYSTEM DEFAULT FAMILY)
  2817. LDM SSJS
  2818. ZJP PFP1 IF NOT *SSJ=* PROGRAM
  2819. LDC PFNL
  2820. CRD FS
  2821. PFP7 UJN PFP9.1 SET FAMILY EQUIPMENT
  2822.  
  2823. * NO PACKNAME IN FET - SET PACKNAME AND DEVICE TYPE FROM CPA.
  2824.  
  2825. PFP8 LDD CP SET PACKNAME AND DEVICE TYPE FROM CPA
  2826. ADC PKNW
  2827. CRM PFPN,ON
  2828. LDM PFPN+4
  2829. ZJN PFP9 IF DEVICE TYPE NOT SPECIFIED IN CPA
  2830. STM RQDT+1 SET DEVICE TYPE
  2831. LDM PFPN+3
  2832. LPN 37
  2833. UJN PFP10.1 SET USER REQUESTED AND FAMILY EQUIPMENT
  2834.  
  2835. * SET DEVICE TYPE FROM FET.
  2836.  
  2837. PFP9 LDN CFPK CHECK FET LENGTH
  2838. SBM FETL
  2839. PFP9.1 PJN PFP11 IF FET TOO SHORT FOR UNIT COUNT
  2840. LDC *
  2841. PFPA EQU *-1 (UNIT COUNT SPECIFIED IN FET)
  2842. NJN PFP10 IF UNIT COUNT SPECIFIED
  2843. LDN 1 SET DEFAULT COUNT
  2844. PFP10 ADN 1R0 CONVERT TO DISPLAY CODE
  2845. STD T1
  2846. LDC *
  2847. PFPB EQU *-1 (DEVICE TYPE SPECIFIED IN FET)
  2848. ZJN PFP11 IF NO DEVICE TYPE SPECIFIED
  2849. LPC 3777 SET REQUESTED DEVICE TYPE
  2850. SHN 6
  2851. LMD T1
  2852. STM RQDT+1
  2853. SHN -14
  2854. PFP10.1 LMD HN SET *USER REQUESTED DEVICE* FLAG
  2855. STM RQDT
  2856.  
  2857. * SET FAMILY EQUIPMENT.
  2858.  
  2859. PFP11 LDD FS+3
  2860. STM PFPN+4
  2861. LJM PFPX RETURN
  2862. PSR SPACE 4,15
  2863. ** PSR - PROCESS SPECIAL REQUEST BLOCK.
  2864. *
  2865. * ENTRY (CC) = COMMAND CODE.
  2866. * (FS - FS+4) = (PFCW) FROM CONTROL POINT AREA.
  2867. * (PFRB - PFRB+1) = SPECIAL REQUEST BLOCK ADDRESS.
  2868. * (SSJS) .NE. 0 IF CALLED BY *SSJ=* PROGRAM.
  2869. *
  2870. * EXIT (A) = 0 IF SPECIAL REQUEST.
  2871. * (CN+3 - CN+4) = USER INDEX.
  2872. * (PFPN - PFPN+4) = 42/ NAME, 6/, 12/ FAMILY EQ.
  2873. * (PFUC) = USER CONTROLS.
  2874. * (PFSB - PFFN) = SPECIAL REQUEST BLOCK SETUP.
  2875. * *STTA* SET IN *STAT* IF TAPE ALTERNATE STORAGE REQUEST.
  2876. *
  2877. * USES T5, T6, CM - CM+4, CN - CN+4, T0 - T0+4, T7 - T7+4.
  2878. *
  2879. * CALLS VCA.
  2880. *
  2881. * MACROS ERROR, SFA.
  2882.  
  2883.  
  2884. PSR12 LDN 1 INDICATE NO SRB
  2885.  
  2886. PSR SUBR ENTRY/EXIT
  2887. LDM TCTL,CC
  2888. SHN 21-12
  2889. PSR1 PJN PSR12 IF NO SPECIAL REQUEST BLOCK ALLOWED
  2890.  
  2891. * READ SPECIAL REQUEST BLOCK (SRB).
  2892.  
  2893. PSR2 LDM PFRB CHECK LOCATION OF SPECIAL REQUEST BLOCK
  2894. LPN 37
  2895. SHN 14
  2896. ADM PFRB+1
  2897. NJN PSR3 IF ADDRESS SPECIFIED
  2898.  
  2899. * NO SRB SPECIFIED ON FUNCTION WHICH ALLOWS SRB. FOR *DROPDS*,
  2900. * *DROPIDS* AND *PURGE* - ALLOW EVEN WITH NO *SSJ=*.
  2901. * FOR *ASSIGNPF*, *UATTACH* AND *UGET* - ALLOW WITH *SSJ=*.
  2902. * FOR ALL OTHER SRB-TYPE FUNCTIONS - DO NOT ALLOW.
  2903.  
  2904. LDD CC
  2905. LMN CCPG
  2906. ZJN PSR1 IF *PURGE*
  2907. LMN CCDD&CCPG
  2908. ZJN PSR1 IF *DROPDS*
  2909. LMN CCDI&CCDD
  2910. ZJN PSR1 IF *DROPIDS*
  2911. LMN CCUA&CCDI
  2912. ZJN PSR2.1 IF *UATTACH*
  2913. LMN CCUG&CCUA
  2914. ZJN PSR2.1 IF *UGET*
  2915. LMN CCAN&CCUG
  2916. NJN PSR4 IF NOT *ASSIGNPF*
  2917. PSR2.1 LDM SSJS
  2918. NJN PSR1 IF *SSJ=*
  2919. PSR2.2 ERROR ILR,CH,IW * PFM INCORRECT REQUEST.*
  2920.  
  2921. PSR3 ADN SFBL-1
  2922. SHN -6
  2923. SBD FL
  2924. MJN PSR5 IF IN RANGE OF FIELD LENGTH
  2925. PSR4 ERROR PAE,CH,IW * PFM ARGUMENT ERROR.*
  2926.  
  2927. PSR5 LDM SSJS ALWAYS REQUIRE *SSJ=* IF SRB SPECIFIED
  2928. ZJN PSR2.2 IF NOT *SSJ=*
  2929. LDN SFBL READ SPECIAL REQUEST BLOCK
  2930. STD T1
  2931. LDM PFRB
  2932. LPN 37
  2933. SHN 6
  2934. ADD RA
  2935. SHN 6
  2936. ADM PFRB+1
  2937. CRM PFSB,T1
  2938. LDM PFSB+5+1
  2939. SHN 21-6
  2940. PJN PSR5.1 IF NOT TAPE ALTERNATE STORAGE REQUEST
  2941. LDN STTA SET TAPE FLAG
  2942. RAM STAT
  2943. PSR5.1 LDN ZERL INITIALIZE FOR USER INDEX
  2944. CRD CN
  2945. LDM PFSU SET USER INDEX
  2946. LPN 77
  2947. STD CN+3
  2948. LDM PFSU+1
  2949. STD CN+4
  2950.  
  2951. * FIND THE FAMILY EST ORDINAL BASED ON THE FAMILY NAME AND
  2952. * DEVICE NUMBER.
  2953.  
  2954. LDN ESTP READ EST SEARCH POINTERS
  2955. CRD T0
  2956. LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
  2957. STD T5
  2958. LDD T0+3 SAVE LAST MASS STORAGE ORDINAL + 1
  2959. STD T6
  2960. PSR6 AOD T5 ADVANCE EST ORDINAL
  2961. LMD T6
  2962. NJN PSR7 IF NOT END OF MASS STORAGE DEVICES
  2963. ERROR IPA,CH,IW * INCORRECT PFC ADDRESS.*
  2964.  
  2965. PSR7 SFA EST,T5
  2966. ADK EQDE
  2967. CRD CM
  2968. LDD CM CHECK FOR MASS STORAGE DEVICE
  2969. SHN -6
  2970. LPN 41
  2971. LMN 40
  2972. NJN PSR6 IF UNAVAILABLE OR NON-MS DEVICE
  2973. LDD CM+3 SAVE DEVICE TYPE
  2974. STM PSRB
  2975. LDD CM+4 READ MST
  2976. STM PSRA SAVE MST ADDRESS
  2977. SHN 3
  2978. ADN STLL
  2979. CRD T0
  2980. LDD T0
  2981. LPC MLFPR+MLIAL+MLIHD+MLIFD+MLIPF+MLUNL+MLDUL
  2982. PSR7.1 NJN PSR6 IF INITIALIZE PENDING OR UNLOADED
  2983. LDM PSRA
  2984. SHN 3
  2985. ADN PFGL
  2986. CRD T0
  2987. LDM PFFM COMPARE FAMILY NAME
  2988. LMD T0
  2989. PSR8 NJN PSR7.1 IF FAMILY NAME DOES NOT MATCH
  2990. LDM PFFM+1
  2991. LMD T0+1
  2992. NJN PSR8 IF FAMILY NAME DOES NOT MATCH
  2993. LDM PFFM+2
  2994. LMD T0+2
  2995. NJN PSR8 IF FAMILY NAME DOES NOT MATCH
  2996. LDM PFFM+3
  2997. LMD T0+3
  2998. SCN 77
  2999. NJN PSR8 IF FAMILY NAME DOES NOT MATCH
  3000. LDD CC CHECK COMMAND CODE
  3001. LMN CCAN
  3002. ZJN PSR9 IF *ASSIGNPF* COMMAND
  3003. LDM PFID COMPARE DEVICE NUMBER
  3004. LMD T0+3
  3005. LPN 77
  3006. NJN PSR8 IF DEVICE NUMBER DOES NOT MATCH
  3007.  
  3008. * THE EST ORDINAL HAS BEEN IDENTIFIED.
  3009.  
  3010. RJM VCA VERIFY THE CATALOG ADDRESS *PFID*
  3011. PSR9 LDD FS+4 SET USER CONTROL BIT
  3012. STM PFUC
  3013. LDM PFPN CHECK FET FIELDS
  3014. ADM PFOU
  3015. NJP PSR4 IF *PN* OR *UN* SPECIFIED
  3016. LDC * CHECK IF DEVICE IS AUXILIARY PACK
  3017. PSRA EQU *-1 (MST ADDRESS/10)
  3018. SHN 3
  3019. ADN MDGL
  3020. CRD T0
  3021. ADN DDLL-MDGL
  3022. CRD T7
  3023. LDD T0+0
  3024. SHN 21-12
  3025. MJN PSR10 IF AUXILIARY PACK
  3026. LDD T5 SET EST ORDINAL OF SPECIFIED DEVICE
  3027. UJN PSR11 SET FAMILY EST ORDINAL
  3028.  
  3029. PSR10 LDD MA SET PACKNAME INTO *PFPN*
  3030. CWM PFFM,ON
  3031. SBN 1
  3032. CRM PFPN,ON
  3033. LDD T7+0 GET UNIT COUNT
  3034. LPN 7
  3035. ADN 1R1
  3036. SHN 14
  3037. LMC *
  3038. PSRB EQU *-1 (DEVICE TYPE)
  3039. SHN 6
  3040. STM RQDT+1 SET REQUESTED DEVICE TYPE
  3041. SHN -14
  3042. STM RQDT
  3043. LDD FS+3 SET FAMILY EST ORDINAL FROM CPA
  3044. PSR11 STM PFPN+4 SET FAMILY EST ORDINAL
  3045. LDN 0 INDICATE SPECIAL REQUEST BLOCK PRESENT
  3046. LJM PSRX RETURN
  3047. PXT SPACE 4,20
  3048. ** PXT - PROCESS EXPIRATION TERM.
  3049. *
  3050. * CONVERT EXPIRATION TERM INTO PACKED DATE, AND CHECK AGAINST
  3051. * MAXIMUM ALLOWED BY SYSTEM.
  3052. *
  3053. * ENTRY (PFXT - PFXT+1) = USER SPECIFIED EXPIRATION DATE/TERM.
  3054. * (CC) = COMMAND CODE.
  3055. * (SVAL) = SECURITY VALIDATION BITS.
  3056. *
  3057. * EXIT (PXDT - PXDT+1) = VALIDATED EXPIRATION DATE.
  3058. * (PXDT - PXDT+1) = 0 IF NONEXPIRING PASSWORD/PERMIT.
  3059. *
  3060. * USES T1, T2, CM - CM+4, CN - CN+4.
  3061. *
  3062. * MACROS ERROR, MONITOR.
  3063.  
  3064.  
  3065. PXT SUBR ENTRY/EXIT
  3066. LDM TCTL,CC
  3067. SHN 21-10
  3068. PJN PXTX IF COMMAND DOES NOT ALLOW *XT*
  3069. LDN ZERL
  3070. CRD CM
  3071. LDN RIDS SET UP *RDCM* PARAMETERS
  3072. STD CM+1
  3073. LDM PFXT CHECK *XD/XT*
  3074. LPN 77
  3075. STD T1
  3076. SHN 14
  3077. LMM PFXT+1
  3078. STD T2
  3079. NJN PXT1 IF *XD/XT* SPECIFIED
  3080. LDK FPXT USE SYSTEM DEFAULT *XT*
  3081. STD T2
  3082. LJM PXT8 SET DEFAULT *XT*
  3083.  
  3084. PXT1 LDN STXD INDICATE THAT DATE WAS SPECIFIED
  3085. RAM STAT
  3086. LDM SVAL CHECK PASSWORD EXPIRATION VALIDATION
  3087. SHN 21-10
  3088. MJN PXT2 IF USER VALIDATED TO SET EXPIRATION DATE
  3089. ERROR NVX,CH,IW *NOT VALIDATED TO SET XD/XT.*
  3090.  
  3091. PXT2 LDD T1
  3092. ZJP PXT7 IF *XT* SPECIFIED RATHER THAN *XD*
  3093.  
  3094. * VALIDATE SPECIFIED EXPIRATION DATE.
  3095.  
  3096. PXT3 LDK FPXL READ MAXIMUM *XT* ALLOWED
  3097. LMC 7777
  3098. ZJN PXT4 IF MAXIMUM IS UNLIMITED
  3099. LDK FPXL CONVERT MAXIMUM *XT* TO *XD*
  3100. STD CM+4
  3101. MONITOR RDCM
  3102. LDD MA
  3103. CRD CN COMPARE *XD* SPECIFIED WITH MAXIMUM *XD*
  3104. LDD CN+3
  3105. SBD T1
  3106. MJN PXT6 IF DATE BEYOND MAXIMUM
  3107. SHN 14
  3108. ADD CN+4
  3109. SBD T2
  3110. MJN PXT6 IF DATE BEYOND MAXIMUM
  3111.  
  3112. * SAVE PASSWORD/PERMIT EXPIRATION DATE.
  3113.  
  3114. PXT4 LDD T1
  3115. SHN 14
  3116. LMD T2
  3117. PXT5 STM PXDT+1
  3118. SHN -14
  3119. STM PXDT
  3120. LJM PXTX RETURN
  3121.  
  3122. PXT6 ERROR DEM,CH,IW *XD/XT EXCEEDS MAXIMUM.*
  3123.  
  3124. * PROCESS EXPIRATION TERM.
  3125.  
  3126. PXT7 LDK FPXL COMPARE TO MAXIMUM *XT*
  3127. SBD T2
  3128. MJN PXT6 IF MAXIMUM *XT* EXCEEDED
  3129. PXT8 LDD T2
  3130. LMC 7777
  3131. ZJN PXT5 IF NON-EXPIRING TERM SPECIFIED
  3132. LDD T2 CONVERT *XT* INTO *XD*
  3133. STD CM+4
  3134. MONITOR RDCM
  3135. LDD MA READ RESULT
  3136. CRD CN
  3137. LDD CN+3
  3138. SHN 14
  3139. LMD CN+4
  3140. UJN PXT5 STORE DATE
  3141. SAP SPACE 4,15
  3142. ** SAP - SAVE ACCESS PARAMETERS.
  3143. *
  3144. * ENTRY (CC) = COMMAND CODE.
  3145. *
  3146. * EXIT (PFFC - PFFC+2) = SPECIFIED ACCESS CATEGORY SET.
  3147. * (PFAL) = JOB ACCESS LEVEL.
  3148. * (LFAL) = SPECIFIED ACCESS LEVEL(IF ANY),DEFAULT PFAL.
  3149. * (SVAL) = SECURITY VALIDATION BITS.
  3150. *
  3151. * USES CN - CN+4, CM - CM+4, T0 - T4.
  3152. *
  3153. * MACROS ERROR, MONITOR.
  3154.  
  3155.  
  3156. SAP SUBR ENTRY/EXIT
  3157. LDD CP GET JOB DEFAULT VALUES AND VALIDATION
  3158. ADK JSCW
  3159. CRM SVAL,ON
  3160. LDM SVAL+1 SAVE JOB ACCESS LEVEL
  3161. SHN -11
  3162. STM PFAL
  3163. STM LFAL
  3164. LDM SVAL+2 SAVE JOB ACCESS CATEGORY SET
  3165. LPC 377
  3166. STM PFFC
  3167. ERRNZ SVAL+2-PFFC CODE DEPENDS ON VALUE
  3168. LDN ZERL SET UP FOR *VSAM*
  3169. CRD CN
  3170. CRD CM
  3171. LDN VAJS
  3172. STD CM+1
  3173. LDD CC
  3174. LMN CCAC
  3175. ZJP SAP4 IF *SETPFAC* REQUEST
  3176. LMN CCAL&CCAC
  3177. ZJN SAP2 IF *SETPFAL* REQUEST
  3178.  
  3179. * PROCESS ACCESS LEVEL FROM FET FOR *SAVE*, *DEFINE*, AND
  3180. * *ASSIGNPF*, IF *SP* BIT SET.
  3181.  
  3182. LMN CCSV&CCAL
  3183. ZJN SAP1 IF *SAVE* REQUEST
  3184. LMN CCDF&CCSV
  3185. ZJN SAP1 IF *DEFINE* REQUEST
  3186. LMN CCAN&CCDF
  3187. NJP SAPX IF NOT *ASSIGNPF* REQUEST
  3188. SAP1 LDM PFSP
  3189. ZJP SAPX IF SECURITY PROCESSING BIT NOT SET
  3190.  
  3191. * VALIDATE SPECIFIED ACCESS LEVEL.
  3192.  
  3193. SAP2 RJM SFA GET SPECIFIED ACCESS LEVEL
  3194. ADN CFAL
  3195. CRD T0
  3196. LDD T0+1 SAVE ACCESS LEVEL
  3197. LPN 7
  3198. STM LFAL
  3199. STD CN+1
  3200. LDN 1 VALIDATE ACCESS LEVEL ONLY
  3201. STD CM+4
  3202. LDD MA
  3203. CWD CN
  3204. MONITOR VSAM
  3205. LDD CM+1
  3206. ZJP SAPX IF SPECIFIED ACCESSES VALID
  3207. ERROR LNJ,CH,IW,,SVE * ACCESS LEVEL NOT VALID FOR JOB.*
  3208.  
  3209. * VALIDATE SPECIFIED ACCESS CATEGORY SET.
  3210.  
  3211. SAP4 LDN CFFC
  3212. SBM FETL
  3213. MJN SAP5 IF FET LONG ENOUGH FOR FUNCTION
  3214. ERROR ILR,CH,IW * PFM INCORRECT REQUEST.*
  3215.  
  3216. SAP5 RJM SFA GET SPECIFIED ACCESS CATEGORY SET
  3217. ADN CFFC
  3218. CRD CN
  3219. LDD CN+2
  3220. LPC 377
  3221. STD CN+2
  3222. STM PFFC SAVE ACCESS CATEGORY SET
  3223. LDD CN+3
  3224. STM PFFC+1
  3225. LDD CN+4
  3226. STM PFFC+2
  3227. LDN 2 VALIDATE ACCESS CATEGORY SET ONLY
  3228. STD CM+4
  3229. LDD MA
  3230. CWD CN
  3231. MONITOR VSAM
  3232. LDD CM+1
  3233. ZJP SAPX IF SPECIFIED ACCESS CATEGORY SET VALID
  3234. ERROR CNJ,CH,IW,,SVE * ACCESS CATEGORIES NOT VALID FOR JOB*
  3235. SEP SPACE 4,10
  3236. ** SEP - SET ERROR PROCESSING OPTIONS.
  3237. *
  3238. * EXIT (EPOP) = ERROR PROCESSING OPTIONS.
  3239. *
  3240. * USES CM - CM+4.
  3241. *
  3242. * CALLS SFA.
  3243.  
  3244.  
  3245. SEP SUBR ENTRY/EXIT
  3246. RJM SFA READ FET+1
  3247. ADN 1
  3248. CRD CM
  3249. LDD CM+1 SAVE ERROR PROCESSING OPTIONS
  3250. SHN 0-6
  3251. LPN 37
  3252. STM EPOP
  3253. UJN SEPX RETURN
  3254. SLT SPACE 4,20
  3255. ** SLT - SEARCH COMMON LIBRARY TABLE FOR ALTERNATE USER NAME.
  3256. *
  3257. * ENTRY (FN - FN+3) = USER NAME FOR ALTERNATE ACCESS.
  3258. *
  3259. * EXIT (A) = -1 IF USER NAME NOT FOUND.
  3260. * (A) = 0 IF MATCH AND USER INDEX AND EQ AVAILABLE.
  3261. * (A) = 1 IF MATCH BUT VALIDATION NEEDED.
  3262. * (CN - CN+3) = FAMILY IF USER NAME FOUND.
  3263. * (T1 - T2) = USER INDEX IF FOUND IN THE TABLE.
  3264. * (POAB) = TABLE OFFSET IF ENTRY FOUND.
  3265. * (PFPN+4) = (T5) = EST ORDINAL IF TAKEN FROM THE TABLE.
  3266. * (PFUC) = PERMANENT FILE VALIDATION.
  3267. *
  3268. * USES T1 - T7, CM - CM+4.
  3269. *
  3270. * CALLS CPN.
  3271. *
  3272. * MACROS SFA.
  3273.  
  3274.  
  3275. SLT6 LCN 1 VALUE
  3276.  
  3277. SLT SUBR ENTRY/EXIT
  3278. LDC CLTP PICK UP COMMON LIBRARIES POINTER
  3279. CRD T3
  3280. LDD T5
  3281. ZJN SLT6 IF NO CLT
  3282. LDN 0 INITIALIZE CLT OFFSET
  3283. STD T4
  3284. SLT1 AOD T4 CHECK NEXT CLT ENTRY
  3285. LMD T5
  3286. ZJN SLT6 IF END OF CLT
  3287. SFA CLT,T4
  3288. CRD CM READ COMMON LIBRARIES USER NAME
  3289. LDN FN PASS ALTERNATE USER NAME ADDRESS
  3290. RJM CPN COMPARE USER NAMES
  3291. NJN SLT1 IF NO MATCH
  3292. SLT2 LDD T4
  3293. STM POAB SAVE TABLE OFFSET FOR ENTRY
  3294. LDD CM+3 PICK UP USER INDEX
  3295. LPN 37
  3296. STD T1
  3297. LDD CM+4
  3298. STD T2
  3299. SFA CLT,T4 CHECK FOR EST ORDINAL
  3300. ADN CLTF-CLTU
  3301. CRD CN PICK UP FAMILY NAME AND EST ORDINAL
  3302. LDD CN+4
  3303. NJN SLT5 IF EST ORDINAL IN THE TABLE
  3304. SLT3 LDN 1 SET VALIDATION REQUIRED
  3305. SLT4 LJM SLTX RETURN
  3306.  
  3307. SLT5 STD T5 SAVE EST ORDINAL
  3308. SFA EST
  3309. ADK EQDE
  3310. CRD CM READ EST ENTRY
  3311. LDD CM+4 GET MST ADDRESS
  3312. SHN 3
  3313. ADN PFGL
  3314. CRD CM READ FAMILY OR PACK NAME
  3315. LDN CN
  3316. RJM CPN COMPARE FAMILY NAMES
  3317. NJN SLT3 IF NO MATCH
  3318. LDD T5 CHANGE EST ORDINAL
  3319. STM PFPN+4
  3320. SFA CLT,T4 GET PF VALIDATION
  3321. ADN CLTV-CLTU
  3322. CRD CM
  3323. LDD CM+4
  3324. STM PFUC
  3325. LDN 0 USER NAME AND INDEX FOUND
  3326. UJN SLT4 RETURN
  3327. VCA SPACE 4,15
  3328. ** VCA - VERIFY CATALOG ADDRESS.
  3329. *
  3330. * ENTRY (CM - CM+4) = EST ENTRY OF THE FAMILY AND DEVICE.
  3331. * (T5) = EST ORDINAL FOR THE FAMILY AND DEVICE NUMBER.
  3332. * (PFID - PFID+2) = 4/,2/PEO,6/DN,12/TRACK,12/SECTOR.
  3333. *
  3334. * EXIT THE CATALOG ADDRESS IS VERIFIED TO DEFINE A LEGAL
  3335. * PERMANENT FILE CATALOG ADDRESS.
  3336. *
  3337. * USES CM - CM+4, T0 - T0+4, T6 - T6+4.
  3338. *
  3339. * CALLS CTA.
  3340. *
  3341. * MACROS ERROR.
  3342.  
  3343.  
  3344. VCA SUBR ENTRY/EXIT
  3345. LDD CM+4 DETERMINE MST ADDRESS
  3346. SHN 3
  3347. ADN ALGL READ THE DEVICE ALLOCATION WORD
  3348. CRD T6
  3349. ADN PUGL-ALGL READ DEVICE MASK
  3350. CRD T0
  3351. ADN TRLL-PUGL
  3352. RJM CTA CALCULATE FWA OF TRT
  3353. SBD TH BIAS FOR LINK INDICATOR BIT
  3354. STM VCAA+1
  3355. SHN -14
  3356. LMC ADCI
  3357. STM VCAA
  3358. LDD T6+1 SET FIRST TRACK IN CATALOG CHAIN (LABEL)
  3359. STD T6
  3360. LDM PFSU+1 CHECK USER INDEX AGAINST DEVICE MASK
  3361. LPN 7
  3362. RAM VCAB
  3363. LDN 1
  3364. VCAB SHN ** (LAST DIGIT OF USER INDEX)
  3365. STM VCAC
  3366. LDD T0+4
  3367. LPC 377
  3368. LPC * (MASK FOR SPECIFIED USER INDEX)
  3369. VCAC EQU *-1
  3370. ZJN VCA2 IF USER INDEX NOT LEGAL FOR DEVICE
  3371.  
  3372. * LOOP THROUGH THE CHAIN OF CATALOG TRACKS AND VERIFY THAT
  3373. * THE SPECIFIED TRACK IS IN THE CHAIN.
  3374.  
  3375. VCA1 LDD T6 CHECK TRACK LINKAGE
  3376. SHN 21-13
  3377. PJN VCA2 IF NOT A VALID LINKAGE
  3378. ZJN VCA2 IF END OF CHAIN
  3379. SHN 13-21-2 CALCULATE NEXT TRT WORD OFFSET
  3380. VCAA ADC TRTS
  3381. CRD CM READ THE LINKED TO WORD
  3382. LDD T6 BIAS INTO THIS TRT WORD
  3383. LPN 3
  3384. STD CM+4
  3385. LDM CM,CM+4
  3386. STD T6 SET THE NEXT TRACK
  3387. LMM PFID+1
  3388. ZJN VCA3 IF THE SPECIFIED TRACK IS IN THE CHAIN
  3389. UJN VCA1 CONTINUE EXAMINING CATALOG TRACKS
  3390.  
  3391. VCA2 ERROR IPA,CH,IW * INCORRECT PFC ADDRESS.*
  3392.  
  3393. * THE TRACK IS A MEMBER OF THE CATALOG CHAIN.
  3394.  
  3395. VCA3 SETMS STATUS VERIFY THE SECTOR SPECIFIED
  3396. LDM PFID+2
  3397. SBM SLM
  3398. PJN VCA2 IF SECTOR OUT OF RANGE
  3399. LJM VCAX RETURN
  3400. VFA SPACE 4,15
  3401. ** VFA - VERIFY FET ADDRESS.
  3402. *
  3403. * EXIT (A) .LT. 0, IF FET NOT WITHIN CALLER-S FIELD LENGTH.
  3404. * (SFAB) = *LDD RA*, IF FET IN RANGE.
  3405. * (SFAA - SFAA+1) = FET ADDRESS, IF IN RANGE.
  3406. *
  3407. * USES T1, CN - CN+4.
  3408. *
  3409. * CALLS SFA.
  3410. *
  3411. * MACROS ISTORE.
  3412.  
  3413.  
  3414. VFA SUBR ENTRY/EXIT
  3415. LDD IR+3
  3416. LPN 77
  3417. SHN 14
  3418. MJN VFA1 IF ADDRESS OUT OF RANGE
  3419. LMD IR+4
  3420. ADN 1
  3421. SHN -6
  3422. SBD FL
  3423. MJN VFA2 IF ADDRESS IN RANGE
  3424. VFA1 LCN 0 SET ERROR RETURN
  3425. UJN VFAX RETURN
  3426.  
  3427. VFA2 LDD IR+3 SAVE FET ADDRESS
  3428. LPN 37
  3429. LMC ADCI
  3430. STM SFAA
  3431. LDD IR+4
  3432. STM SFAA+1
  3433. ISTORE SFAB,(LDD RA) FLAG FET ADDRESS VALID
  3434. RJM SFA READ FET LENGTH/RANDOM BIT
  3435. ADN 1
  3436. CRD CN
  3437. LDD CN+3 SAVE FET LENGTH
  3438. SHN -6
  3439. ADN 4
  3440. STD T1
  3441. LDD CN+1
  3442. SHN 21-13
  3443. PJN VFA4 IF NOT RANDOM FET
  3444. LDD T1
  3445. SBN CFCN
  3446. PJN VFA4 IF FET NOT TOO SHORT
  3447. VFA3 UJN VFA1 SET ERROR RETURN
  3448.  
  3449. VFA4 LDD IR+3 CHECK FET WITHIN FIELD LENGTH
  3450. LPN 77
  3451. SHN 14
  3452. LMD IR+4
  3453. ADD T1
  3454. SHN -6
  3455. SBD FL
  3456. PJN VFA3 IF FET OUT OF RANGE
  3457. LDN 0 SET NO ERROR
  3458. UJP VFAX RETURN
  3459. VRP SPACE 4,15
  3460. ** VRP - VERIFY PARAMETERS.
  3461. *
  3462. * ENTRY (CC) = COMMAND CODE.
  3463. * (FN - FN+4) = ACCESS WORD.
  3464. * (PFBR) = BACKUP REQUIREMENT VALUE.
  3465. * (PFRS) = PREFERRED RESIDENCE VALUE.
  3466. * (PFSS) = SUBSYSTEM VALUE.
  3467. * (PFAP) = ALTERNATE CATLIST PERMISSION VALUE.
  3468. *
  3469. * EXIT PARAMETERS VERIFIED TO BE IN RANGE.
  3470. * DEFAULT VALUES SET IF NEEDED (FILE CREATION).
  3471. *
  3472. * MACROS ERROR.
  3473.  
  3474.  
  3475. VRP SUBR ENTRY/EXIT
  3476. LDD CC CHECK FOR *CHANGE* REQUEST
  3477. LMN CCCG
  3478. ZJN VRP3 IF *CHANGE* REQUEST
  3479.  
  3480.  
  3481. * SET DEFAULT VALUES ON FILE CREATION.
  3482.  
  3483.  
  3484. LDM PFSS CLEAR *CHANGE* FLAG ON FILE CREATION
  3485. SCN 40
  3486. STM PFSS
  3487. LDM PFBR INSURE VALID *BR* VALUE
  3488. LPC 0700
  3489. NJN VRP1 IF *BR* PARAMETER SPECIFIED
  3490. LDC BRDE*100 SET DEFAULT *BR* VALUE
  3491. RAM PFBR
  3492. VRP1 LDM PFRS INSURE VALID *PR* VALUE
  3493. SHN 0-11
  3494. NJN VRP2 IF *PR* PARAMETER SPECIFIED
  3495. LDC RSDE*1000 SET DEFAULT *PR* VALUE
  3496. RAM PFRS
  3497. VRP2 LDM PFAP CHECK FOR NULL *AC* VALUE
  3498. SHN -12
  3499. NJN VRP3 IF *AC* PARAMETER SPECIFIED
  3500. LDC ACDF*2000 SET DEFAULT *AC* VALUE
  3501. RAM PFAP
  3502.  
  3503. * ENSURE VALID PARAMETER VALUES.
  3504.  
  3505. VRP3 LDM PFBR VERIFY RANGE OF *BR* VALUE
  3506. SHN 0-6
  3507. LPN 7
  3508. SBN BRMX+1
  3509. PJN VRP4 IF *BR* NOT IN RANGE
  3510. LDM PFRS VERIFY RANGE OF *PR* VALUE
  3511. SHN 0-11
  3512. SBN RSMX+1
  3513. PJN VRP4 IF *PR* OUT OF RANGE
  3514. ADN RSMX+1-RSLK
  3515. NJN VRP5 IF *DISK LOCKED* NOT REQUESTED
  3516. LDD FN+2 CHECK FOR *CLTD* VALIDATION
  3517. SHN 21-0
  3518. MJN VRP5 IF USER VALIDATED TO SPECIFY DISK LOCKED
  3519. VRP4 ERROR ILR,CH,IW * PFM INCORRECT REQUEST.*
  3520.  
  3521. VRP5 LDM PFSS VERIFY SUBSYSTEM VALUE
  3522. LPN 37
  3523. SBN MSYS+1
  3524. PJN VRP4 IF *SS* NOT VALID
  3525. LDM PFAP VERIFY *AC* PARAMETER
  3526. SHN -12
  3527. SBN ACMX+1
  3528. PJN VRP4 IF *AC* NOT VALID
  3529. LJM VRPX RETURN
  3530. VUA SPACE 4,15
  3531. ** VUA - VALIDATE USER ACCESS.
  3532. *
  3533. * EXIT (SSJS) = 1 IF *SSJ=* JOB.
  3534. *
  3535. * USES CM - CM+4.
  3536.  
  3537.  
  3538. VUA SUBR ENTRY/EXIT
  3539. LDD CP CHECK FOR SSJ= JOB
  3540. ADC SEPW
  3541. CRD CM
  3542. LDD CM
  3543. SHN 0-2
  3544. LPN 1
  3545. STM SSJS SAVE *SSJ=* STATUS
  3546. UJN VUAX RETURN
  3547. SPACE 4,10
  3548. * COMMON DECKS.
  3549.  
  3550.  
  3551. *CALL COMPCRS
  3552. *CALL COMPVFN
  3553. SPACE 4,10
  3554. * CHECK FOR OVERFLOW.
  3555.  
  3556.  
  3557. OVERFLOW PPFW,EPFW OVERFLOW INTO DISK ERROR PROCESSING AREA
  3558. OVERLAY (LOCAL FILE PROCESSING.),OVLD
  3559. SPACE 4,15
  3560. ** THIS OVERLAY PERFORMS INITIAL LOCAL FILE PROCESSING FOR
  3561. * REQUESTS WHICH ARE SENSITIVE TO THE EXISTENCE OF LOCAL FILES.
  3562.  
  3563.  
  3564. OVL BSS 0 ENTRY
  3565. * LJM PLF PROCESS LOCAL FILE
  3566. PLF SPACE 4,15
  3567. ** PLF - PROCESS LOCAL FILE.
  3568. *
  3569. * ENTRY (CC) = COMMAND CODE.
  3570. *
  3571. * EXIT (FN - FN+4) = PERMANENT FILE NAME.
  3572.  
  3573.  
  3574. PLF BSS 0 ENTRY
  3575. LDM PLFT,CC
  3576. STM PLFA
  3577. PLFT LJM PLF7 *SAVE*
  3578. PLFA EQU *-1 (LOCAL FILE PROCESSOR ADDRESS)
  3579. CON PLF4 *GET*
  3580. CON 0 *PURGE* (NO LOCAL FILE PROCESSING)
  3581. CON 0 *CATLIST* (NO LOCAL FILE PROCESSING)
  3582. CON 0 *PERMIT* (NO LOCAL FILE PROCESSING)
  3583. CON PLF7 *REPLACE*
  3584. CON PLF8 *APPEND*
  3585. CON PLF1 *DEFINE*
  3586. CON PLF5 *ATTACH*
  3587. CON 0 *CHANGE* (NO LOCAL FILE PROCESSING)
  3588. CON PLF11 *UATTACH*
  3589. CON PLF12 *SETASA*
  3590. CON 0 *SETAF* (NO LOCAL FILE PROCESSING)
  3591. CON PLF3 *SETDA*
  3592. CON 0 *DROPDS* (NO LOCAL FILE PROCESSING)
  3593. CON PLF1 *ASSIGNPF*
  3594. CON PLF4 *OLD*
  3595. CON 0 *SETPFAC* (NO LOCAL FILE PROCESSING)
  3596. CON 0 *SETPFAL* (NO LOCAL FILE PROCESSING)
  3597. CON PLF4 *UGET*
  3598. CON PLF7 *UREPLACE*
  3599. CON 0 *DROPIDS* (NO LOCAL FILE PROCESSING)
  3600. CON PLF13 *DELPFC*
  3601. CON 0 *RPFSTAT* (NO LOCAL FILE PROCESSING)
  3602. CON 0 *STAGEPF* (NO LOCAL FILE PROCESSING)
  3603.  
  3604. * *ASSIGNPF*/*DEFINE* PROCESSING.
  3605.  
  3606. PLF1 RJM PEF PROCESS EXISTING FILE
  3607. LDM MXNF
  3608. ZJN PLF2 IF NO FILE LIMIT SPECIFIED
  3609. LDK STAC TURN ON STATISTICAL ACCUMULATION
  3610. RAM STAT
  3611. PLF2 EXECUTE 3PB FILE RESIDENCE PROCESSOR
  3612.  
  3613. * *SETDA* PROCESSING.
  3614.  
  3615. PLF3 RJM SSF SEARCH FOR SYSTEM FILE
  3616. UJN PLF2 PROCESS FILE RESIDENCE
  3617.  
  3618. * *GET*/*OLD*/*UGET* PROCESSING.
  3619.  
  3620. PLF4 RJM PEF PROCESS EXISTING FILE
  3621.  
  3622. * EXIT TO COMMAND PREPROCESSING OVERLAY.
  3623.  
  3624. PLFX RJM SPN SET PERMANENT FILE NAME
  3625. EXECUTE 3PC EXIT TO COMMAND PROCESSING OVERLAY
  3626.  
  3627. * *ATTACH* PROCESSING.
  3628.  
  3629. PLF5 RJM PEF PROCESS EXISTING FILE
  3630. LDM MODE SET UP FNT STATUS MODE EQUIVALENCE
  3631. LPN 37
  3632. STD T1
  3633. LDM TFNS,T1
  3634. STM FNMD
  3635. RJM CFA CHECK FAST ATTACH FILE
  3636. PJN PLF6 IF NOT FAST ATTACH FILE
  3637. RJM EFN ESTABLISH *FNT/FST* FOR *FA* FILE
  3638. EXECUTE 3PU TERMINATE PROGRAM
  3639.  
  3640. PLF6 RJM CAA CHECK FOR APPLICATION ACCOUNTING
  3641. UJN PLF10 EXIT
  3642.  
  3643. * *SAVE*/*REPLACE*/*APPEND*/*UREPLAC* PROCESSING.
  3644.  
  3645. PLF7 LDM MXNF
  3646. NJN PLF8 IF FILE LIMIT SPECIFIED
  3647. LDM MXCS
  3648. NJN PLF8 IF SIZE LIMIT SPECIFIED
  3649. LDM MXCS+1
  3650. ZJN PLF9 IF NO SIZE LIMIT SPECIFIED
  3651. PLF8 LDK STAC TURN ON STATISTICAL ACCUMULATION
  3652. RAM STAT
  3653. PLF9 RJM SSF SEARCH FOR SYSTEM FILE
  3654. RJM CFS CHECK FILE SIZE
  3655. PLF10 LJM PLFX COMPLETE
  3656.  
  3657. * *UATTACH* PROCESSING.
  3658.  
  3659. PLF11 RJM PEF
  3660. LDM MODE SET UP FNT STATUS MODE EQUIVALENCE
  3661. LPN 37
  3662. STD T1
  3663. LDM TFNS,T1
  3664. STM FNMD
  3665. UJN PLF10 EXIT
  3666.  
  3667. * *SETASA* PROCESSING.
  3668.  
  3669. PLF12 LDM STAT
  3670. LPK STTA
  3671. NJN PLF10 IF SETTING TAPE ASA
  3672. LDM PFAT
  3673. LPN 77
  3674. LMN ATOD
  3675. ZJN PLF10 IF SETTING OPTICAL DISK ASA
  3676. RJM SSF SEARCH FOR SYSTEM FILE
  3677. UJN PLF10 EXIT
  3678.  
  3679. * *DELPFC* PROCESSING.
  3680.  
  3681. PLF13 RJM PIF PROCESS INTERLOCK FILES
  3682. UJN PLF10 EXIT
  3683. TFNS SPACE 4,15
  3684. ** FNT STATUS VALUES FOR SPECIFIED ACCESS MODE.
  3685.  
  3686.  
  3687. TFNS BSS 0
  3688. LOC 0
  3689. CON 2 WRITE
  3690. CON 1 READ
  3691. CON 22 APPEND/EXTEND
  3692. CON 5 EXECUTE
  3693. CON 0 NULL
  3694. CON 32 MODIFY
  3695. CON 31 READ AND ALLOW MODIFY
  3696. CON 21 READ AND ALLOW APPEND
  3697. CON 12 UPDATE
  3698. CON 11 READ AND ALLOW UPDATE
  3699. LOC *O
  3700. TFNSL EQU *-TFNS
  3701. TITLE SUBROUTINES.
  3702. CAA SPACE 4,15
  3703. ** CAA - CHECK FOR APPLICATION ACCOUNTING.
  3704. *
  3705. * ENTRY (FNTA) = *FST* ADDRESS OF FILE.
  3706. *
  3707. * EXIT IF THE FILE IS FROM THE APPLICATION LIBRARY
  3708. * AND THE MODE OF ACCESS IS EXECUTE, THE
  3709. * APPLICATION ACCOUNTING FILE STATUS IS SET.
  3710.  
  3711.  
  3712. CAA SUBR ENTRY/EXIT
  3713. LDD UI CHECK FOR APPLICATION LIBRARY
  3714. SHN 14
  3715. ADD UI+1
  3716. LMC AAUI
  3717. NJN CAAX IF NOT FROM APPLICATION LIBRARY
  3718. LDM FNMD CHECK FOR MODE OF ATTACH FUNCTION
  3719. LMN 5
  3720. NJN CAAX IF NOT EXECUTE-ONLY FILE
  3721. LDM SFNB SET APPLICATION ACCOUNTING FILE STATUS
  3722. SCN 77
  3723. LMN AAST
  3724. STM SFNB
  3725. UJN CAAX EXIT
  3726. CFA SPACE 4,25
  3727. ** CFA - CHECK FOR FAST ATTACH FILE.
  3728. *
  3729. * IF THE *FA* OR *MA* SPECIAL REQUEST WAS SPECIFIED AND THE
  3730. * CALLER IS *SSJ=*, CHECK THE SYSTEM FNT FOR THE SPECIFIED
  3731. * FAST ATTACH FILE, AND ATTACH THE FILE IF IT EXISTS AND IS
  3732. * NOT BUSY. IF THE FILE DOES NOT EXIST AND THE *FA* (FORCED
  3733. * FAST ATTACH) SPECIAL REQUEST WAS SPECIFIED, RETURN AN
  3734. * ERROR. IF THE FILE DOES NOT EXIST AND THE *MA* (MIXED
  3735. * FAST ATTACH) SPECIAL REQUEST WAS SPECIFIED, EXIT AND ALLOW
  3736. * NORMAL ATTACH PROCESSING TO PROCEED.
  3737. *
  3738. * ENTRY (PFSR) = SPECIAL REQUEST SUBFUNCTION.
  3739. * (SSJS) = SPECIAL SYSTEM JOB STATUS.
  3740. *
  3741. * EXIT (A) .LT. 0 IF FAST ATTACH FILE FOUND.
  3742. *
  3743. * USES T5, T6, CM - CM+4, CN - CN+4, FN - FN+4, FS - FS+4.
  3744. *
  3745. * CALLS FAT, SFN, SPN.
  3746. *
  3747. * MACROS ERROR, MONITOR, SFA.
  3748.  
  3749.  
  3750. CFA6 LDM PFSR CHECK FOR SPECIAL REQUEST
  3751. LPN 77
  3752. LMN SRMA
  3753. ZJN CFAX IF MIXED FAST ATTACH SPECIAL REQUEST
  3754. ERROR FNF,CH,IW * (FILE NAME) NOT FOUND.*
  3755.  
  3756. CFA7 ERROR IUA,CH,IW * USER ACCESS NOT VALID.*
  3757.  
  3758.  
  3759. CFA SUBR ENTRY/EXIT
  3760. LDM PFSR CHECK FOR SPECIAL REQUEST
  3761. LPN 77
  3762. LMN SRFA
  3763. ZJN CFA0 IF FORCED FAST ATTACH SPECIAL REQUEST
  3764. LMN SRMA&SRFA
  3765. NJN CFAX IF NOT MIXED FAST ATTACH SPECIAL REQUEST
  3766. CFA0 LDM SSJS
  3767. ZJN CFA7 IF CALLER IS NOT *SSJ=*
  3768. RJM SPN SET FILE NAME
  3769. SFA EST,PFPN+4 SET FAMILY EST ORDINAL
  3770. ADK EQDE
  3771. CRD CN READ EST ENTRY
  3772. LDD CN+4
  3773. SHN 3
  3774. ADN PFGL READ FAMILY NAME
  3775. CRD CN
  3776. LDD MA
  3777. CWD FN
  3778. CRD CM SET FILE NAME
  3779. RJM FAT CHECK IF FAST ATTACH
  3780. ZJN CFA1 IF FAST ATTACH FILE FOUND
  3781. LJM CFA6 PROCESS FILE NOT FOUND
  3782.  
  3783. * FAST ATTACH FILE FOUND.
  3784.  
  3785. CFA1 SFA FNT,T1 READ FNT/FST ENTRY
  3786. CRD FN
  3787. ADN FSTL
  3788. CRD FS
  3789. LDD FS SET FILE TRACK AND EST ORDINAL
  3790. STD T5
  3791. STM PFEQ
  3792. STM ERRE SET EST ORDINAL FOR EVENT
  3793. LDD FS+1
  3794. STD T6
  3795. STM ERRC SET TRACK FOR EVENT
  3796. STM PFFT
  3797. LDM MODE CHECK FOR LEGAL MODE
  3798. LPN 37
  3799. STD CM+2 SET MODE IN MONITOR REQUEST
  3800. LDM TFNS,CM+2
  3801. STM CFAA
  3802. NJN CFA2 IF LEGAL MODE
  3803. ERROR ILR,CH,IW,FS *PFM INCORRECT REQUEST.*
  3804.  
  3805. CFA2 LDN AFAS SET REQUEST FOR FAFT FILE
  3806. STD CM+3
  3807. LDD T1
  3808. STD CM+4
  3809. LDD FN+3
  3810. LPN 77
  3811. ZJN CFA3 IF LOCAL FAST ATTACH FILE
  3812. LDD T5 SET EST ORDINAL IF GLOBAL FILE
  3813. CFA3 STD CM+1
  3814. MONITOR AFAM
  3815. LDD CM+1 CHECK RETURN STATUS
  3816. ZJN CFA4 IF NO ERROR
  3817. LDN FRT SET TIME FOR EVENT
  3818. STM ERRD
  3819. ERROR FBS,CH,IW,FS *(FILE NAME) BUSY.*
  3820.  
  3821. CFA4 LDC *
  3822. CFAA EQU *-1 (*TFNS* TABLE ENTRY FOR SPECIFIED MODE)
  3823. SHN 21-4
  3824. MJN CFA5 IF M, RM, A OR RA MODE
  3825. LDD T5 REQUEST TRT UPDATE
  3826. STD CM+1
  3827. LDN UTRS
  3828. STD CM+3
  3829. MONITOR STBM
  3830. CFA5 LDC PFSN SET FILE NAME
  3831. RJM SFN
  3832. LCN 1 SET FAST ATTACH FILE FOUND
  3833. LJM CFAX EXIT
  3834. CSA SPACE 4,10
  3835. ** CSA - CHECK SPECIFIED ACCESS LEVEL.
  3836. *
  3837. * ENTRY (FA) = FNT ADDRESS IN NFL.
  3838. * (LFAL) = REQESTED ACCESS LEVEL, IF *PFSP* NONZERO.
  3839. *
  3840. * EXIT ACCESS LEVEL SET IN FNT ENTRY BY *CPUMTR*, IF VALID.
  3841. * *MFFI* ACCOUNT MESSAGE ISSUED.
  3842. *
  3843. * CALLS IAM.
  3844. *
  3845. * USES CM - CM+4.
  3846. *
  3847. * MACROS ERROR, MONITOR.
  3848.  
  3849.  
  3850. CSA SUBR ENTRY/EXIT
  3851. LDM PFSP
  3852. ZJN CSAX IF SECURITY PROCESSING BIT NOT SET IN FET
  3853. LDN VSFS VALIDATE AND SET ACCESS LEVEL FOR FILE
  3854. STD CM+1
  3855. LDD FA
  3856. STD CM+3
  3857. LDM LFAL
  3858. STD CM+4
  3859. MONITOR VSAM
  3860. LDD CM+1
  3861. ZJN CSAX IF ACCESS LEVEL VALID
  3862. RJM IAM ISSUE ACCOUNT FILE MESSAGE
  3863. ERROR LNF,CH,IW,,SVE * ACCESS LEVEL NOT VALID FOR FILE.*
  3864. CFS SPACE 4,10
  3865. ** CFS - CHECK FILE SIZE FOR THE CATALOG SEARCH.
  3866. *
  3867. * ENTRY (MXFS) = MAXIMUM FILE SIZE ALLOWED FOR INDIRECT
  3868. * ACCESS FILES/ 10B.
  3869. * (LF - LF+1) = LENGTH OF LOCAL FILE.
  3870. *
  3871. * EXIT (LF - LF+1) CHECKED FOR SIZE LIMITS.
  3872. *
  3873. * MACROS ERROR.
  3874.  
  3875.  
  3876. CFS3 ERROR EFL,CH,IW *(FILE NAME) EMPTY.*
  3877.  
  3878. CFS SUBR ENTRY/EXIT
  3879. LDD LF
  3880. SHN -5
  3881. ZJN CFS2 IF FILE LENGTH .LT. 131072D SECTORS
  3882. CFS1 ERROR FTL,CH,IW *FILE TOO LONG.*
  3883.  
  3884. CFS2 LDD LF CHECK FOR EMPTY FILE
  3885. SHN 14
  3886. ADD LF+1
  3887. ZJN CFS3 IF FILE EMPTY
  3888. ADN 2 ADD SYSTEM AND EOI SECTORS
  3889. MJN CFS1 IF FILE .GT. 131069D SECTORS
  3890. LDM MXFS
  3891. ZJN CFSX IF NO FILE SIZE LIMITS
  3892. LDD LF
  3893. SHN -3
  3894. NJN CFS1 IF FILE SIZE .GT. MAXIMUM FILE SIZE LIMIT
  3895. LDD LF
  3896. SHN 14
  3897. ADD LF+1
  3898. ADN 7
  3899. SHN -3
  3900. SBM MXFS
  3901. MJN CFSX IF LIMIT NOT EXCEEDED
  3902. NJN CFS1 IF FILE LIMIT EXCEEDED
  3903. UJN CFSX RETURN
  3904. EFN SPACE 4,20
  3905. ** EFN - ESTABLISH FNT ENTRY FOR FAST ATTACH FILE.
  3906. *
  3907. * ENTRY (FN - FN+4) = LOCAL FILE NAME.
  3908. * (FNTA) = FNT ADDRESS OF LOCAL FILE.
  3909. * (PFEQ) = EST ORDINAL FOR FILE.
  3910. * (PFFT) = FIRST TRACK FOR FILE.
  3911. * (PFSN) = LOCAL FILE NAME.
  3912. * (FNMD) = FNT STATUS MODE EQUIVALENCE.
  3913. *
  3914. * EXIT FNT ENTRY ESTABLISHED IN CENTRAL MEMORY.
  3915. * (FA) = FNT ADDRESS.
  3916. * (FN - FN+4) = FNT.
  3917. * (FS - FS+4) = FST.
  3918. * PERMANENT FILE USER COUNT INCREMENTED.
  3919. *
  3920. * USES T1, CM - CM+4.
  3921. *
  3922. * MACROS MONITOR.
  3923.  
  3924.  
  3925. EFN SUBR ENTRY/EXIT
  3926. LDM FNTA SET FNT/FST
  3927. STD FA
  3928. LDM PFEQ SET EST ORDINAL
  3929. STD FS
  3930. LDM PFFT SET FIRST TRACK
  3931. STD FS+1
  3932. STD FS+2
  3933. LDN FSMS SET SECTOR
  3934. STD FS+3
  3935. LDC 2004 SET FST STATUS
  3936. STD FS+4
  3937. LDC PMFT*100 SET FILE TYPE
  3938. RAD FN+4
  3939. STM PFSN+4
  3940. LDM FNMD SET FNT STATUS MODE
  3941. SCN 2 CLEAR WRITEABLE MODE BIT
  3942. RAM PFSN+3
  3943. STD FN+3
  3944. LDN ZERL SET FILE SIZE LIMIT TO INFINITE
  3945. CRD CM
  3946. LDC 700
  3947. STD CM+2
  3948. NFA FA,R RESTORE FNT ENTRY
  3949. ADK FNTL
  3950. CWD FN
  3951. ADN FSTL-FNTL
  3952. CWD FS
  3953. ADN FUTL-FSTL
  3954. CWD CM
  3955. LDM PFEQ INCREMENT PF USER COUNT
  3956. STD CM+1
  3957. LDN IUCS
  3958. STD CM+3
  3959. MONITOR SMDM
  3960. LJM EFNX RETURN
  3961. IAM SPACE 4,10
  3962. ** IAM - ISSUE ACCOUNT FILE MESSAGE.
  3963. *
  3964. * ISSUES AN *MFFI* ACCOUNT FILE MESSAGE TO INDICATE THAT THE
  3965. * LOCAL FILE ACCESS LEVEL CHANGE ATTEMPT WAS INVALID.
  3966. *
  3967. * ENTRY (LFAL) = LOCAL FILES NEW ACCESS LEVEL.
  3968. *
  3969. * EXIT ACCOUNT FILE MESSAGE ISSUED.
  3970. *
  3971. * USES T1.
  3972. *
  3973. * CALLS ACS, DFM.
  3974.  
  3975.  
  3976. IAM SUBR ENTRY/EXIT
  3977. LDC IAMB+3 INITIALIZE POINTER FOR *ACS* CALLS
  3978. STD T1
  3979. LDN FN INSERT FILE NAME IN BUFFER
  3980. RJM ACS
  3981. LDC IAMC APPEND COMMA
  3982. RJM ACS
  3983. LDM LFAL DETERMINE MNEMONIC OF ACCESS LEVEL
  3984. SHN 2
  3985. ADC TALV APPEND NEW ACCESS LEVEL
  3986. RJM ACS
  3987. LDC IAMD APPEND TERMINATOR
  3988. RJM ACS
  3989. LDC IAMB+ACFN ISSUE DAYFILE MESSAGE
  3990. RJM DFM
  3991. UJN IAMX RETURN
  3992.  
  3993. * ACCOUNT FILE MESSAGE BUFFER.
  3994.  
  3995. IAMB DATA C*MFFI, *
  3996. BSSZ 12
  3997. IAMC DATA 2H, MESSAGE SEPARATOR
  3998. CON 0 END OF STRING
  3999. IAMD DATA 2H. MESSAGE TERMINATOR
  4000. CON 0
  4001. PDS SPACE 4,15
  4002. ** PDS - PROCESS DEVICE STATUS.
  4003. *
  4004. * ENTRY (A) = 0 IF DEVICE AVAILABLE.
  4005. * (A) .NE. 0 IF DEVICE INACCESSIBLE.
  4006. * (T5) = EST ORDINAL OF DEVICE.
  4007. * (FERT) = REAL-TIME PROCESSING FLAG.
  4008. * (SSYS) = SUBSYSTEM FLAG.
  4009. *
  4010. * EXIT RETURN IF PROCESSING IS TO CONTINUE.
  4011. *
  4012. * TO *ERR* IF DEVICE IS INACCESSIBLE AND CALLER HAS
  4013. * REAL-TIME PROCESSING SET IN FET OR IS NOT A SUBSYSTEM.
  4014. *
  4015. * MACROS ERROR.
  4016.  
  4017.  
  4018. PDS SUBR ENTRY/EXIT
  4019. ZJN PDSX IF DEVICE AVAILABLE, RETURN
  4020. LDM SSYS
  4021. ZJN PDS1 IF NOT A SUBSYSTEM
  4022. LDM FERT
  4023. ZJN PDSX IF NO REAL-TIME PROCESSING, RETURN
  4024. PDS1 ERROR WID,CH,IW,T5,EC6 * WAITING - INACCESSIBLE DEVICE.*
  4025. PEF SPACE 4,25
  4026. ** PEF - PROCESS EXISTING FILE.
  4027. *
  4028. * DETERMINE IF A LOCAL FILE WITH THE SPECIFIED NAME IS ALREADY
  4029. * ASSIGNED TO THE JOB. FOR ALL REQUESTS EXCEPT *DEFINE*,
  4030. * RETURN THE EXISTING LOCAL FILE. FOR *DEFINE*, RETURN THE
  4031. * RESERVED FNT ENTRY AND KEEP THE EXISTING LOCAL FILE.
  4032. *
  4033. * ENTRY (CC) = COMMAND CODE.
  4034. * (PFSN) = LOCAL FILE NAME.
  4035. *
  4036. * EXIT (FA) = (FNTA) = FNT ADDRESS OF THE LOCAL FILE.
  4037. * (FA) = 0 IF THE FILE WAS RETURNED OR DID NOT EXIST.
  4038. * (FN - FN+4) = FNT ENTRY FOR FILE (*DEFINE*).
  4039. * (FS - FS+4) = FST ENTRY FOR FILE (ZERO IF NOT FOUND).
  4040. * (ERRB) = NONZERO IF LOCAL FILE EXISTS.
  4041. * (LFAL) = LOCAL FILE ACCESS LEVEL.
  4042. *
  4043. * USES FA, T1, CM - CM+4, FN - FN+4.
  4044. *
  4045. * CALLS CSA, PDS, SAF, SFB, SFN, *0DF*.
  4046. *
  4047. * MACROS ERROR, EXECUTE, NFA, SETMS, SFA.
  4048.  
  4049.  
  4050. PEF10 LDC ** RESTORE DIRECT CELL
  4051. PEFA EQU *-1
  4052. STD UI+1
  4053. PEF11 LDN ZERL CLEAR FS - FS+4
  4054. CRD FS
  4055.  
  4056. PEF SUBR ENTRY/EXIT
  4057. LDC PFSN SET SYSTEM FILE NAME
  4058. RJM SFN
  4059. RJM SAF SEARCH FOR ASSIGNED FILE
  4060. ZJN PEF11 IF FILE NOT FOUND
  4061. RJM SFB SET FILE BUSY
  4062. ZJN PEF1 IF NO REJECT ON FILE INTERLOCK
  4063. ERROR IOE,CH,IW *I/O SEQUENCE ERROR.*
  4064.  
  4065. PEF1 LDD CC
  4066. LMN CCDF
  4067. ZJN PEF6 IF A *DEFINE* REQUEST
  4068.  
  4069. * *UNLOAD* OR *RETURN* THE EXISTING FILE.
  4070.  
  4071. PEF2 LDN 1 *UNLOAD* PREVIOUS FILE
  4072. PEF3 STM LOCF-1
  4073. LDD UI+1 SAVE DIRECT CELL USED BY *0DQ*
  4074. STM PEFA
  4075. EXECUTE 0DF,LOCF
  4076. PJP PEF10 IF FILE PROCESSED
  4077. LDD FS SET EST ORDINAL OF INACCESSIBLE DEVICE
  4078. STD T5
  4079. LDD FA SET FNT ADDRESS
  4080. STM FNTA
  4081. AOM ERRB SET FILE NOT CREATED BY *PFM*
  4082. RJM PDS PROCESS DEVICE STATUS
  4083. ERROR PFN,CH,IW * DEVICE UNAVAILABLE.*
  4084.  
  4085. * PROCESS *DEFINE* REQUEST (USE EXISTING FILE IF POSSIBLE).
  4086.  
  4087. PEF6 LDD FS
  4088. ZJN PEF3 IF EQUIPMENT NOT ASSIGNED
  4089. LDD FS+1
  4090. ZJN PEF2 IF FILE EMPTY
  4091.  
  4092. * *DEFINE* - RETURN RESERVED FNT ENTRY (NOT NEEDED).
  4093.  
  4094. LDM FNTA SWITCH FNT ADDRESSES
  4095. STD T1
  4096. LDD FA
  4097. STM FNTA
  4098. LDD T1
  4099. STD FA
  4100. LDN 1 *UNLOAD FILE*
  4101. STM LOCF-1
  4102. EXECUTE 0DF,LOCF
  4103. LDM FNTA RESET FNT ADDRESS
  4104. STD FA
  4105. AOM ERRB SET FILE NOT CREATED BY *PFM*
  4106.  
  4107. * CHECK IF EXISTING LOCAL FILE CAN BE USED.
  4108.  
  4109. RJM CSA CHECK SPECIFIED ACCESS LEVEL
  4110. NFA FA,R
  4111. ADK FNTL
  4112. CRD FN
  4113. ADK FSTL-FNTL
  4114. CRD FS
  4115. ADK FUTL-FSTL GET LOCAL FILE ACCESS LEVEL
  4116. CRD CM
  4117. LDD CM+2 SAVE LOCAL FILE ACCESS LEVEL
  4118. LPN 7
  4119. STM LFAL
  4120. SBM PFAL
  4121. PJN PEF7 IF LOCAL FILE HAS VALID ACCESS LEVEL
  4122. LDM SVAL CHECK FOR WRITE DOWN VALIDATION
  4123. SHN 21-5
  4124. MJN PEF7 IF WRITE DOWN ALLOWED
  4125. LDM SSID CHECK SUBSYSTEM ID
  4126. SBK LSSI+1
  4127. PJN PEF7 IF SUBSYSTEM
  4128. ERROR WDP,CH,IW,,SVE * WRITE-DOWN OF DATA PROHIBITED.*
  4129.  
  4130. PEF7 LDD FN+3
  4131. LPN 4
  4132. ZJN PEF8 IF NOT EXECUTE ONLY FILE
  4133. ERROR FEO,CH,IW * FILE IS EXECUTE ONLY.*
  4134.  
  4135. PEF8 SFA EST,FS READ EST ENTRY
  4136. ADK EQDE
  4137. CRD CM
  4138. LDD CM
  4139. SHN 21-13
  4140. MJN PEF9 IF MASS STORAGE EQUIPMENT
  4141. ERROR NMS,CH,IW *(FILE NAME) NOT MASS STORAGE.*
  4142.  
  4143. PEF9 LDD FS
  4144. STD T5
  4145. SETMS STATUS
  4146. LDM MSD
  4147. LPC 100
  4148. RJM PDS PROCESS DEVICE STATUS
  4149. LJM PEFX RETURN
  4150. PIF SPACE 4,15
  4151. ** PIF - PROCESS INTERLOCK FILES.
  4152. *
  4153. * EXIT (FNTA) = 0.
  4154. * (CCIB) UPDATED IF /PFM*ILK/ INTERLOCK BIT WAS SET.
  4155. * (IAIF) = NONZERO IF /PFM*PFN/ INTERLOCK BIT WAS SET.
  4156. * INTERLOCK BITS CLEARED IN /PFM*ILK/ AND /PFM*PFN/.
  4157. * TO *ERR* IF FILES DO NOT MATCH FAMILY/USER INDEX.
  4158. *
  4159. * USES FS+4.
  4160. *
  4161. * CALLS SSF.
  4162. *
  4163. * MACROS ERROR.
  4164.  
  4165.  
  4166. PIF SUBR ENTRY/EXIT
  4167.  
  4168. * PROCESS CATALOG TRACK INTERLOCK (FILE /PFM*ILK/).
  4169.  
  4170. LDC =C/"ILK"/
  4171. STM SSFA+1
  4172. RJM SSF SEARCH FOR LOCAL FILE /PFM*ILK/
  4173. LDD FS
  4174. LMD EQ
  4175. NJN PIF1 IF INCORRECT EST ORDINAL
  4176. LDD FS+1
  4177. LMM CCIA
  4178. ZJN PIF2 IF CORRECT CATALOG TRACK
  4179. PIF1 ERROR FNF,CH,IW * FILE NOT FOUND.*
  4180.  
  4181. PIF2 LDD FS+4 CHECK CATALOG TRACK INTERLOCK BIT
  4182. SHN 21-11
  4183. PJN PIF2.1 IF INTERLOCK BIT NOT SET
  4184. AOM CCIB SET CATALOG TRACK INTERLOCK FLAG
  4185. PIF2.1 LDD FS+4 CLEAR CATALOG TRACK INTERLOCK BIT
  4186. LPC 6776
  4187. LMN 1 SET COMPLETE BIT
  4188. STD FS+4
  4189. NFA FA,R REWRITE FST
  4190. ADK FSTL
  4191. CWD FS
  4192.  
  4193. * CHECK FOR ALLOCATION INTERLOCK (FILE /PFM*PFN/).
  4194.  
  4195. LDC =C/"PFN"/
  4196. STM SSFA+1
  4197. RJM SSF SEARCH FOR LOCAL FILE /PFM*PFN/
  4198. LDD FS
  4199. LMD EQ
  4200. ZJN PIF3 IF CORRECT EST ORDINAL
  4201. ERROR FNF,CH * FILE NOT FOUND.*
  4202.  
  4203. PIF3 LDD FS+4
  4204. SHN 21-11
  4205. PJN PIF4 IF ALLOCATION INTERLOCK NOT SET
  4206. AOM IAIF SET *INDIRECT ALLOCATION INTERLOCK* FLAG
  4207. PIF4 LDD FS+4 CLEAR ALLOCATION INTERLOCK BIT
  4208. LPC 6776
  4209. LMN 1 SET COMPLETE BIT
  4210. STD FS+4
  4211. NFA FA,R REWRITE FST
  4212. ADK FSTL
  4213. CWD FS
  4214. LDN 0 CLEAR LOCAL FILE FNT ADDRESS
  4215. STM FNTA
  4216. UJP PIFX RETURN
  4217. SSF SPACE 4,20
  4218. ** SSF - SEARCH FOR SYSTEM FILE.
  4219. *
  4220. * ENTRY (PFSN) = LOCAL FILE NAME.
  4221. *
  4222. * EXIT (LF - LF+1) = LENGTH OF LOCAL FILE.
  4223. * (FS - FS+4) = FST ENTRY FOR FILE (REWOUND).
  4224. * (ERRB) = NON ZERO IF FILE PRESENT AND SET BUSY.
  4225. * (FNTA) = FNT ADDRESS OF LOCAL FILE.
  4226. * (FNTB) = FNT ADDRESS OF /PFM*PFN/ FILE (*DELPFC*).
  4227. * (FNTC) = FNT ADDRESS OF /PFM*ILK/ FILE (*DELPFC*).
  4228. * (LFAL) = LOCAL FILE ACCESS LEVEL.
  4229. * FST REWRITTEN.
  4230. *
  4231. * USES FA, T5, T6, CM - CM+4, FN - FN+4, FS - FS+4,
  4232. * LF - LF+1.
  4233. *
  4234. * CALLS CSA, CTA, PDS, SAF, SEI, SFB, SFN.
  4235. *
  4236. * MACROS ERROR, NFA, SETMS, SFA.
  4237.  
  4238.  
  4239. SSF SUBR ENTRY/EXIT
  4240. SSFA LDC PFSN SET FILE NAME
  4241. * LDC =C/"ILK"/ (*DELPFC* REQUEST)
  4242. * LDC =C/"PFN"/ (*DELPFC* REQUEST)
  4243. RJM SFN
  4244. RJM SAF SEARCH FOR ASSIGNED FILE
  4245. ZJN SSF1 IF NOT FOUND
  4246. RJM SFB SET FILE BUSY
  4247. ZJN SSF3 IF NO REJECT ON FILE INTERLOCK
  4248. ERROR IOE,CH,IW *I/O SEQUENCE ERROR.*
  4249.  
  4250. SSF1 ERROR FNF,CH,IW * FILE NOT FOUND.*
  4251.  
  4252. SSF2 ERROR FEO,CH,IW * FILE IS EXECUTE ONLY.*
  4253.  
  4254. SSF2.1 ERROR IFT,CH,IW * INCORRECT FILE TYPE.*
  4255.  
  4256. SSF3 AOM ERRB INDICATE FILE NOT CREATED BY *PFM*
  4257. LDD FA SAVE FNT ADDRESS
  4258. STM FNTA
  4259. LDD CC
  4260. LMN CCSV
  4261. NJN SSF4 IF NOT *SAVE* REQUEST
  4262. RJM CSA CHECK SPECIFIED ACCESS LEVEL
  4263. SSF4 NFA FA,R
  4264. ADK FNTL
  4265. CRD FN
  4266. ADN FSTL-FNTL
  4267. CRD FS
  4268. ADN FUTL-FSTL READ LOCAL FILE ACCESS LEVEL
  4269. CRD CN
  4270. LDD CN+2 SAVE LOCAL FILE ACCESS LEVEL
  4271. LPN 7
  4272. STM LFAL
  4273. LDD FN+3 CHECK FILE MODE
  4274. LPN 4
  4275. NJP SSF2 IF EXECUTE ONLY FILE
  4276. LDD FN+3 CHECK FILE MODE
  4277. LPN 21 EXTEND-ONLY AND WRITE LOCKOUT
  4278. LMN 21
  4279. ZJP SSF2.1 IF READ/ALLOW MODIFY OR READ/ALLOW APPEND
  4280. LDD FS CHECK IF EQUIPMENT IS MASS STORAGE
  4281. ZJN SSF5 IF NO EQUIPMENT ASSIGNED TO FILE
  4282. STD T5
  4283. SFA EST
  4284. ADK EQDE
  4285. CRD CM READ EST ENTRY
  4286. LDD CM
  4287. SHN 21-13 MASS STORAGE BIT
  4288. MJN SSF6 IF MASS STORAGE
  4289. ERROR NMS,CH,IW *(FILENAME) NOT ON MASS STORAGE.*
  4290.  
  4291. SSF5 ERROR EFL,CH,IW *(FILE NAME) EMPTY.*
  4292.  
  4293. SSF6 LDD CC
  4294. LMN CCDP
  4295. ZJP SSFX IF *DELPFC* REQUEST
  4296. SETMS STATUS
  4297. LDM MSD
  4298. LPC 100
  4299. RJM PDS PROCESS DEVICE STATUS
  4300. LDD CM+4 SET FWA OF TRT - TRACK BIT
  4301. SHN 3
  4302. ADN TRLL
  4303. RJM CTA CALCULATE FWA OF TRT
  4304. SBD TH
  4305. STM SEIA+1
  4306. SHN -14
  4307. LMC ADCI
  4308. STM SEIA
  4309. LDD FS+2
  4310. ZJN SSF7 IF FILE NEVER WRITTEN
  4311. LDD FS+1 DETERMINE FILE LENGTH
  4312. STD T6
  4313. RJM SEI
  4314. LDD T2
  4315. STD LF
  4316. LDD T3
  4317. SBN 1 DISCOUNT EOI
  4318. STD LF+1
  4319. PJN SSF8 IF NO 12 BIT OVERFLOW
  4320. AOD LF+1
  4321. SOD LF
  4322. UJN SSF8 UPDATE FST
  4323.  
  4324. SSF7 LDN 0 SET FILE LENGTH FOR EMPTY FILE
  4325. STD LF
  4326. STD LF+1
  4327. LDD CC
  4328. LMN CCSD
  4329. ZJN SSF9 IF *SETDA*
  4330. LJM SSF5 * (FILE NAME) EMPTY.*
  4331.  
  4332. * UPDATE FST.
  4333.  
  4334. SSF8 LDD FS+1 SET CURRENT TRACK = FIRST TRACK
  4335. STD FS+2
  4336. LDN FSMS SET CURRENT SECTOR = FIRST SECTOR
  4337. STD FS+3
  4338. SSF9 LDD FS+4 SET STATUS
  4339. SCN 77
  4340. LMN 4
  4341. STD FS+4
  4342. NFA FA,R UPDATE FST
  4343. ADK FSTL
  4344. CWD FS
  4345. LJM SSFX RETURN
  4346. SPACE 4,10
  4347. * COMMON DECKS.
  4348.  
  4349.  
  4350. *CALL COMPACS
  4351. VAL$ SET 0
  4352. *CALL COMPVLC
  4353. *CALL COMPFAT
  4354. QUAL GFP
  4355. FNT$ EQU 0 DEFINE *COMPGFP* ACCESS TO FNT
  4356. *CALL COMPGFP
  4357. QUAL *
  4358. .FNT EQU /GFP/.FNT
  4359. *CALL COMPSAF
  4360. *CALL COMPSFB
  4361. SPACE 4,15
  4362. LOCF EQU *+5 ZERO LEVEL OVERLAY LOAD ADDRESS
  4363. SPACE 4,10
  4364. * CHECK FOR OVERFLOW.
  4365.  
  4366.  
  4367. ERRNG BFMS-LOCF-ZDFL *0DF* OVERFLOW
  4368.  
  4369.  
  4370. OVERFLOW OVLD,EPFW OVERFLOW INTO ERROR PROCESSING AREA
  4371. OVERLAY (ASSIGNPF/FILE RESIDENCE PROCESSING.),OVLD
  4372. FRP SPACE 4,30
  4373. ** THIS OVERLAY DETERMINES THE PROPER RESIDENCE FOR
  4374. * DIRECT ACCESS FILES, ACCORDING TO THE FOLLOWING RULES -
  4375. *
  4376. * LOCAL FILE IN EXISTENCE
  4377. * FILE MADE PERMANENT IF LOCAL FILE ON LEGAL PF DEVICE.
  4378. * ABORTED IF FILE NOT ON PF DEVICE.
  4379. * *DT* IS IGNORED.
  4380. * IF REMOVABLE DEVICE REQUEST FILE MUST RESIDE ON THAT
  4381. * REMOVABLE DEVICE.
  4382. *
  4383. * NO LOCAL FILE.
  4384. * *DT* = 0.
  4385. * PLACE FILE ON DEVICE WITH MOST AVAILABLE SPACE, AND
  4386. * SUFFICIENT ACCESS LEVEL.
  4387. * *DT* .NE. 0.
  4388. * FILE IS PLACED ON MATCHING DEVICE TYPE WITH SUFFICIENT
  4389. * ACCESS LEVEL AND MOST AVAILABLE SPACE IN FAMILY,
  4390. * OTHERWISE REQUEST IS ABORTED.
  4391. * *PRU* .NE. 0.
  4392. * PLACE FILE ON DEVICE (TYPE *DT* IF SPECIFIED) WITH
  4393. * MOST AVAILABLE SPACE PROVIDED *PRU* SECTORS
  4394. * ARE AVAILABLE. IF THEY ARE NOT REQUEST IS ABORTED.
  4395. *
  4396. * IF THE SPECIAL REQUEST *SRMR* IS SPECIFIED, THE FILE MUST
  4397. * RESIDE ON THE MASTER DEVICE (AS DETERMINED BY THE PRIMARY
  4398. * DEVICE MASK), RATHER THAN ON THE DEVICE(S) SPECIFIED IN THE
  4399. * SECONDARY DEVICE MASK(S).
  4400.  
  4401.  
  4402. FRP BSS 0 ENTRY
  4403. LDD CC
  4404. LMN CCAN
  4405. ZJN APF IF *ASSIGNPF* REQUEST
  4406. LDM LFAL
  4407. STD CM+4
  4408. LDD EQ CHECK *LFAL* WITH MASTER DEVICE *AL*
  4409. STD CM+2
  4410. LDN VAES
  4411. STD CM+1
  4412. MONITOR VSAM
  4413. LDD CM+1
  4414. NJN FRP2 IF FILE ACCESS NOT VALID FOR DEVICE
  4415.  
  4416. * PROCESS *DEFINE*, *SETDA*.
  4417.  
  4418. RJM DFR DETERMINE FILE RESIDENCE
  4419. RJM SPN SET PERMANENT FILE NAME
  4420. EXECUTE 3PC PROCESS REQUEST
  4421.  
  4422. FRP2 ERROR LNP,CH,IW,,SVE * ACCESS LEVEL NOT VALID ON PF DEVICE*
  4423. APF SPACE 4,10
  4424. *** PROCESS *ASSIGNPF* REQUEST.
  4425. *
  4426. * ASSIGN LOCAL FILE TO PROPER PERMANENT FILE DEVICE.
  4427. *
  4428. * IF THE SPECIAL REQUEST *SRSY* IS SPECIFIED, WRITE
  4429. * A SYSTEM SECTOR ON THE FILE.
  4430.  
  4431.  
  4432. APF BSS 0 ENTRY
  4433. LDM PFSR CHECK SPECIAL REQUEST
  4434. LPN 77
  4435. LMN SRSY
  4436. ZJN APF2 IF SYSTEM SECTOR IS TO BE PREWRITTEN
  4437. RJM DFR DETERMINE FILE RESIDENCE
  4438. LDN 0 SET UP FST FOR SYSTEM SECTOR ACCESS
  4439. STD FS+2
  4440. STD FS+3
  4441. LDC 4004 SET FILE STATUS
  4442. STD FS+4
  4443. NFA FA,R
  4444. ADN FSTL
  4445. CWD FS
  4446. LJM APF5 TERMINATE PROGRAM
  4447.  
  4448. * CLEAR SYSTEM SECTOR.
  4449.  
  4450. APF2 LDC PMFT*100-LOFT*100 FORCE *PMFT* FILE TYPE
  4451. RAM SFTA
  4452. RJM DFR DETERMINE FILE RESIDENCE
  4453. LDC 77*5-1 SET WORD COUNT TO CLEAR
  4454. STD T1
  4455. APF3 LDN 0
  4456. STM BFMS+2,T1 CLEAR NEXT WORD
  4457. SOD T1
  4458. PJN APF3 IF MORE TO CLEAR
  4459. LDN 72 CURRENT ACCESS MODE (WRITE MODE/PURGED)
  4460. STM CASS
  4461.  
  4462. * WRITE SYSTEM AND EOI SECTORS.
  4463.  
  4464. LDD FS+1 SET TRACK AND SECTOR
  4465. STD T6
  4466. STD FS+2
  4467. LDN FSMS
  4468. STD FS+3
  4469. LDN 4 SET FILE STATUS
  4470. STD FS+4
  4471. NFA FA,R PREWRITE FST FOR *COMPWEI*
  4472. ADN FSTL
  4473. CWD FS
  4474. SETMS IO,,BFMS
  4475. RJM PDV PROCESS DEVICE STATUS
  4476. RJM WSS WRITE SYSTEM SECTOR
  4477. MJN APF3.1 IF WRITE ERROR
  4478. RJM WEI WRITE EOI SECTOR
  4479. PJN APF4 IF NO MASS STORAGE ERROR
  4480. APF3.1 ERROR MSE,CH,IW,FS *EQXXX,DNYY, MASS STORAGE ERROR.*
  4481.  
  4482. APF4 ENDMS
  4483. LDD FS INCREMENT USER COUNT FOR DEVICE
  4484. STD CM+1
  4485. LDN IUCS INCREMENT USER COUNT
  4486. STD CM+3
  4487. MONITOR SMDM
  4488. LDN FSMS SET EOI IN TRT
  4489. STD CM+3
  4490. LDD T6
  4491. LPC 3777
  4492. STD CM+2
  4493. LDD FS
  4494. STD CM+1
  4495. MONITOR DTKM
  4496. APF5 EXECUTE 3PU TERMINATE PROGRAM
  4497. TITLE SUBROUTINES.
  4498. CDA SPACE 4,15
  4499. ** CDA - CHECK DEVICE ACCESSIBILITY.
  4500. *
  4501. * ENTRY (T2) = EST ORDINAL FOR DEVICE.
  4502. * (T3 - T3+4) = EST ENTRY FOR DEVICE.
  4503. *
  4504. * EXIT (A) = 0 IF DEVICE CAN BE ACCESSED.
  4505. * (A) = 1 IF NEW ACTIVITY RESTRICTED ON DEVICE.
  4506. * (A) = 2 IF PF UTILITY ACTIVE.
  4507. * (A) = 3 IF ACCESS DENIED BY *SETMS*.
  4508. * (A) = 4 IF *ERROR IDLE* SET FOR DEVICE.
  4509. *
  4510. * USES T5, CM - CM+4.
  4511. *
  4512. * MACROS SETMS.
  4513.  
  4514.  
  4515. CDA SUBR ENTRY/EXIT
  4516.  
  4517. * CHECK IF *ERROR IDLE* SET FOR DEVICE.
  4518.  
  4519. LDD T3+4 MST ADDRESS/10B
  4520. SHN 3
  4521. ADN ACGL
  4522. CRD CM
  4523. LDD CM+4
  4524. LPN 20
  4525. ZJN CDA2 IF NOT *ERROR IDLE*
  4526. LDM SSJS
  4527. ZJN CDA1 IF NOT *SSJ=* JOB
  4528. LDM PFSR
  4529. LPN 77
  4530. LMN SRIE
  4531. ZJN CDA2 IF *IGNORE ERROR IDLE* SPECIAL REQUEST
  4532. CDA1 LDN 4 RETURN WITH (A) = 4
  4533. UJN CDAX RETURN
  4534.  
  4535. * CHECK *SUSPECT*, *OFF*, AND *DOWN* STATUS.
  4536.  
  4537. CDA2 LDD T2 EST ORDINAL
  4538. STD T5
  4539. SETMS STATUS
  4540. LDM MSD
  4541. SHN 21-6
  4542. PJN CDA4 IF DEVICE CAN BE ACCESSED
  4543. LDN 3 RETURN WITH (A) = 3
  4544. CDA3 UJN CDAX RETURN
  4545.  
  4546. * CHECK IF PF UTILITY ACTIVE.
  4547.  
  4548. CDA4 LDD T3+4 MST ADDRESS/10B
  4549. SHN 3
  4550. ADK TDGL
  4551. CRD CM
  4552. LDD CM+1
  4553. SHN 21-6
  4554. PJN CDA5 IF DEVICE NOT INTERLOCKED
  4555. LDN 2 RETURN WITH (A) = 2
  4556. UJN CDA3 RETURN
  4557.  
  4558. * CHECK NEW ACTIVITY RESTRICTIONS.
  4559.  
  4560. CDA5 LDD T3+4 MST ADDRESS/10B
  4561. SHN 3
  4562. ADN DALL
  4563. CRD CM
  4564. LDD CM
  4565. SHN 21-6
  4566. MJN CDA6 IF *RESTRICT NEW ACTIVITY* FLAG SET
  4567. SHN 0-10-21+6+22
  4568. LPN 3
  4569. SBN 1
  4570. NJN CDA7 IF *IDLE* FLAG NOT SET
  4571. CDA6 LDN 1 RETURN WITH (A) = 1
  4572. UJN CDA3 RETURN
  4573.  
  4574. CDA7 LDN 0 RETURN WITH (A) = 0
  4575. UJN CDA3 RETURN
  4576. CML SPACE 4,15
  4577. ** CML - CHECK MASS STORAGE LIMIT.
  4578. *
  4579. * ENTRY (CMLA - CMLA+1) = VALUE OF DECREMENT.
  4580. *
  4581. * EXIT TO ERR IF ERROR IN PRU LIMITS.
  4582. *
  4583. * USES CM - CM+4.
  4584.  
  4585.  
  4586. CML SUBR
  4587. LDD CP READ PRU VALUE FOR CONTROL POINT
  4588. ADK ACLW
  4589. CRD CM
  4590. LDD CM+3 CHECK FOR LIMIT EXCEEDED
  4591. LPN 77
  4592. SBM CMLA
  4593. MJN CML1 IF LIMIT EXCEEDED
  4594. NJN CMLX IF LIMIT NOT EXCEEDED
  4595. LDD CM+4
  4596. SBM CMLA+1
  4597. PJN CMLX IF LIMIT NOT EXCEEDED
  4598. CML1 ERROR PRL,CH,IW *PRU LIMIT.*
  4599.  
  4600. CMLA CON 0,0 VALUE OF PRU DECREMENT
  4601. CPF SPACE 4,10
  4602. ** CPF - CHECK FOR PRESERVED FILE.
  4603. *
  4604. * ENTRY (P3) = MST ADDRESS.
  4605. *
  4606. * EXIT (A) .LT. 0 IF PRESERVED FILE BIT SET.
  4607. *
  4608. * USES T1, CM - CM+4.
  4609. *
  4610. * CALLS CTA.
  4611.  
  4612.  
  4613. CPF SUBR ENTRY/EXIT
  4614. LDD P3 SET *TRT* ADDRESS
  4615. SHN 3
  4616. ADN TRLL
  4617. RJM CTA CALCULATE FWA OF TRT
  4618. SBD TH
  4619. SHN 2
  4620. ADD FS+1
  4621. STD T1 SAVE REMAINDER FOR POSITION IN WORD
  4622. SHN -2 4 TRACK ASSIGNMENTS FOR EACH WORD
  4623. CRD CM READ *TRT* WORD FOR TRACK
  4624. LDD T1 SET PRESERVED BIT POSITION
  4625. LPN 3
  4626. ADC SHNI+6
  4627. STM CPFA SET SHIFT INSTRUCTION
  4628. LDD CM+4 CHECK FOR PRESERVED STATUS
  4629. CPFA SHN ** (21-13+TRACK INDEX)
  4630. UJN CPFX RETURN
  4631. CPR SPACE 4,20
  4632. ** CPR - CHECK PROPER PERMANENT FILE RESIDENCE.
  4633. *
  4634. * ENTRY (T2) = EST ORDINAL FOR DEVICE.
  4635. * (T3 - T7) = EST ENTRY FOR DEVICE.
  4636. * (FN - FN+4) = USERS FAMILY OR PACK NAME.
  4637. * (FRSM) = MASK BITS FOR DIRECT ACCESS FILE.
  4638. * RESIDENCE ALLOWED.
  4639. *
  4640. * EXIT (A) = 0 IF PROPER DEVICE.
  4641. * (A) .GT. 0 IF INCORRECT DEVICE.
  4642. * (A) = -1 IF DEVICE UNAVAILABLE.
  4643. * (A) = -2 IF DEVICE ACCESS ERROR.
  4644. *
  4645. * USES T4, CM - CM+4.
  4646. *
  4647. * MACROS MONITOR.
  4648.  
  4649.  
  4650. CPR9 LDN 1
  4651.  
  4652. CPR SUBR ENTRY/EXIT
  4653. LDD T3
  4654. SHN -6
  4655. LPN 41
  4656. LMN 40
  4657. NJN CPRX IF NOT AVAILABLE MASS STORAGE
  4658. LDD T3+4 READ *MDGL*
  4659. SHN 3
  4660. ADN MDGL
  4661. CRD CM
  4662. LDM PFPN
  4663. ZJN CPR1 IF NOT AUXILIARY DEVICE REQUEST
  4664. LDD CM
  4665. SHN 21-12
  4666. PJN CPR9 IF NOT AUXILIARY DEVICE
  4667. CPR1 LDD T3+4 SET MST ADDRESS
  4668. SHN 3
  4669. ADN STLL
  4670. CRD CM
  4671. LDD CM
  4672. LPC MLFPR+MLIAL+MLIHD+MLIFD+MLIPF
  4673. ZJN CPR2 IF NO INITIALIZATION PENDING
  4674. LCN 1 FLAG *DEVICE UNAVAILABLE*
  4675. UJP CPRX RETURN
  4676.  
  4677. CPR2 LDD T3+4 READ PF DESCRIPTION
  4678. SHN 3
  4679. ADN PFGL
  4680. CRD CM
  4681. LDM RQDT CHECK FOR USER REQUESTED DEVICE TYPE
  4682. SHN -6
  4683. ZJN CPR5 IF NOT USER REQUESTED DEVICE TYPE
  4684. LDM RQDT+1 CHECK UNIT COUNT
  4685. LPN 77
  4686. SBN 1R0+1 CONVERT FROM DISPLAY CODE
  4687. LMD CM+4
  4688. LPN 77
  4689. ZJN CPR5 IF RIGHT UNIT COUNT AND FIRST UNIT
  4690. CPR4 LJM CPRX RETURN
  4691.  
  4692. CPR5 LDD CM COMPARE DEVICE NAMES
  4693. LMD FN
  4694. NJN CPR4 IF NO MATCH
  4695. LDD CM+1
  4696. LMD FN+1
  4697. NJN CPR4 IF NO MATCH
  4698. LDD CM+2
  4699. LMD FN+2
  4700. NJN CPR4 IF NO MATCH
  4701. LDD CM+3
  4702. LMD FN+3
  4703. SCN 77
  4704. NJN CPR4 IF NO MATCH
  4705. LDD T3+4 READ DEVICE MASKS
  4706. SHN 3
  4707. ADN PUGL
  4708. CRD CM
  4709. LDM SSJS
  4710. ZJN CPR6 IF NOT *SSJ=* JOB
  4711. LDM PFSR CHECK SPECIAL REQUEST
  4712. LPN 77
  4713. LMN SRMR
  4714. NJN CPR6 IF MASTER DEVICE RESIDENCE NOT REQUIRED
  4715. LDD CM+4 CHECK PRIMARY MASK
  4716. UJN CPR7 CHECK MASK
  4717.  
  4718. CPR6 LDD CM+3 CHECK SECONDARY MASK
  4719. SHN 14
  4720. LMD CM+4
  4721. SHN -10
  4722. CPR7 STM CPRB
  4723. LDM FRSM
  4724. LPC * (DEVICE MASK)
  4725. CPRB EQU *-1
  4726. LMM FRSM
  4727. LPC 377
  4728. NJN CPR8 IF NOT CORRECT DEVICE
  4729. LDM LFAL CHECK DEVICE ACCESS LEVEL
  4730. STD CM+4
  4731. LDD T2
  4732. STD CM+2
  4733. LDN VAES
  4734. STD CM+1
  4735. MONITOR VSAM
  4736. LDD CM+1
  4737. ZJN CPR8 IF FILE ACCESS VALID FOR DEVICE
  4738. LCN 2
  4739. CPR8 LJM CPRX RETURN
  4740. DDN SPACE 4,10
  4741. ** DDN - DETERMINE DEVICE NAME.
  4742. *
  4743. * ENTRY (PFPN - PFPN+3) = PACK NAME.
  4744. * (PFPN+4) = FAMILY EST ORDINAL.
  4745. *
  4746. * EXIT (FN - FN+3) = PACK OR FAMILY NAME FOR REQUEST.
  4747. *
  4748. * USES CM - CM+4, FN - FN+4.
  4749. *
  4750. * MACROS SFA.
  4751.  
  4752.  
  4753. DDN1 LDD MA SET PACK NAME
  4754. CWM PFPN,ON
  4755. SBN 1
  4756. CRD FN
  4757.  
  4758. DDN SUBR ENTRY/EXIT
  4759. LDM PFPN
  4760. NJN DDN1 IF REMOVABLE DEVICE REQUEST
  4761.  
  4762. * SET FAMILY NAME.
  4763.  
  4764. SFA EST,PFPN+4 READ FAMILY EST ENTRY
  4765. ADK EQDE
  4766. CRD CM
  4767. LDD CM+4 READ FAMILY NAME
  4768. SHN 3
  4769. ADN PFGL
  4770. CRD FN
  4771. UJN DDNX RETURN
  4772. DFR SPACE 4,20
  4773. ** DFR - DETERMINE FILE RESIDENCY.
  4774. *
  4775. * ENTRY (FN - FN+4) = FILE NAME SET AS LOCAL FILE.
  4776. * (FS - FS+4) = FST ENTRY FOR EXISTING FILE.
  4777. *
  4778. * EXIT (FS - FS+4) = FST ENTRY (STATUS SET BUSY).
  4779. * (ERRB) .NE. 0 IF FILE PREVIOUSLY EXISTED.
  4780. * (LFEF) = 0 IF FILE IS NOT EMPTY.
  4781. * (PFDN) = DEVICE NUMBER OF DEVICE LOCAL FILE IS ON.
  4782. * (SDAB) = FIRST TRACK OF FILE.
  4783. * (SDAC) = 4XXX WHERE XXX IS *DT* IF REQUESTED
  4784. * OTHERWISE XXX = 000.
  4785. *
  4786. * USES LF - LF+1, P0 - P3, SA - SA+1, T1 - T7.
  4787. *
  4788. * CALLS CDA, CML, CPF, CPR, DDN, DSA, PDS, SFA, SFN, SFT.
  4789. *
  4790. * MACROS ERROR, SETMS, SFA.
  4791.  
  4792.  
  4793. * FILE EXISTS OR HAS BEEN CREATED - PROCEED WITH REQUEST.
  4794.  
  4795. DFR20 LDC 4000 SET DA FILE INDICATION + *DT* IF REQUESTED
  4796. DFRA EQU *-1
  4797. STM SDAC
  4798. LDD FS+1 SET FIRST TRACK
  4799. STM SDAB
  4800. LDD P3 SAVE FILE MST ADDRESS
  4801. SHN 3 SET DEVICE NUMBER
  4802. ADN PFGL
  4803. CRD CM
  4804. LDD CM+3
  4805. LPN 77
  4806. STM PFDN
  4807. LDD FS
  4808. LMM SDAA
  4809. NJN DFRX IF FILE NOT ON MASTER DEVICE
  4810. STM PFDN SET DEVICE NUMBER TO ZERO
  4811.  
  4812. DFR SUBR ENTRY/EXIT
  4813. LDD FS+1 CHECK TRACK ASSIGNMENT
  4814. NJN DFR1 IF NOT NULL FILE
  4815. LJM DFR10 DETERMINE CORRECT DEVICE
  4816.  
  4817. * PROCESS EXISTING FILE.
  4818.  
  4819. DFR1 LDM FRSM CHECK FOR SPECIAL USER INDEX
  4820. SHN 21-13
  4821. PJN DFR2 IF NOT SPECIAL USER INDEX
  4822. SHN 13+21-20 RESTORE ORIGINAL VALUE
  4823. LPC -377 CLEAR DEVICE ACCESS MASK
  4824. STM FRSM
  4825. DFR2 LDD FS+2
  4826. NJN DFR3 IF NOT EMPTY FILE
  4827. AOM LFEF
  4828. DFR3 LDD FN+4 CHECK FILE TYPE
  4829. SHN -6
  4830. LMN PMFT
  4831. STM DFRB SAVE *PMFT* TEST
  4832. ZJN DFR6 IF *PMFT* FILE TYPE
  4833. LMN LIFT&PMFT
  4834. ZJN DFR5 IF *LIFT* FILE TYPE
  4835. LMN LOFT&LIFT
  4836. ZJN DFR6 IF *LOFT* FILE TYPE
  4837. DFR4 ERROR IFT,CH,IW *(FILE NAME) INCORRECT FILE TYPE*
  4838.  
  4839. DFR5 LDM FRSM CHECK IF *LIFT* FILES LEGAL
  4840. SHN 21-12
  4841. PJN DFR4 IF *LIFT* FILES INVALID
  4842. DFR6 LDD FN+3
  4843. LPN 4
  4844. NJN DFR4 IF EXECUTE ONLY FILE
  4845.  
  4846. * DETERMINE IF FILE IS ON PROPER DEVICE.
  4847.  
  4848. LDD FS READ EST ENTRY
  4849. STD T2
  4850. SFA EST
  4851. ADK EQDE
  4852. CRD T3
  4853. RJM DDN DETERMINE DEVICE NAME
  4854. RJM CPR CHECK FOR PROPER RESIDENCE
  4855. NJN DFR8 IF RESIDENCE CHECK FAILED
  4856. RJM CDA CHECK DEVICE ACCESSIBILITY
  4857. RJM PDS PROCESS DEVICE STATUS
  4858. LDD T3+4 SAVE MST ADDRESS
  4859. STD P3
  4860. LDC * CHECK IF *PMFT* FILE
  4861. DFRB EQU *-1
  4862. NJN DFR7 IF NOT *PMFT* FILE
  4863. RJM CPF CHECK FOR PRESERVED FILE
  4864. PJN DFR7 IF FILE NOT PRESERVED
  4865. NFA FA,R READ FILE NAME FOR MESSAGE
  4866. ADK FNTL
  4867. CRD FN
  4868. LJM DFR4 RETURN FILE TYPE ERROR
  4869.  
  4870. DFR7 LJM DFR20 COMPLETE PROCESSING
  4871.  
  4872.  
  4873. DFR8 MJN DFR8.1 IF NOT DIRECT ACCESS DEVICE ERROR
  4874. ERROR DAD,CH,IW * DIRECT ACCESS DEVICE ERROR.*
  4875.  
  4876. DFR8.1 ADN 1
  4877. ZJN DFR9 IF DEVICE UNAVAILABLE
  4878. ERROR LNP,CH,IW,,SVE * ACCESS LEVEL NOT VALID ON PF DEVICE*
  4879.  
  4880. DFR9 ERROR PFN,CH,IW * DEVICE UNAVAILABLE.*
  4881.  
  4882. * IF NO ACCESSIBLE DEVICE WITH SUFFICIENT SPACE IS FOUND,
  4883. * *DFRC* WILL BE THE STATUS FOR THE MOST ACCESSIBLE DEVICE
  4884. * WHICH WAS ALMOST (BUT NOT QUITE) SELECTED.
  4885.  
  4886. DFR9.1 LDC 77 DEVICE STATUS FOR NO DEVICE FOUND
  4887. * LDC (STATUS) (STATUS FOR DEVICE WITH NO SPACE)
  4888. DFRC EQU *-1
  4889. SBN 3
  4890. PJN DFR9 IF DEVICE INACCESSIBLE OR NO DEVICE FOUND
  4891. ERROR SPN,CH,IW *REQUESTED SPACE UNAVAILABLE.*
  4892.  
  4893. * FILE DOES NOT EXIST - DETERMINE PROPER DEVICE FOR FILE.
  4894.  
  4895. DFR10 AOM LFEF SET EMPTY FILE
  4896. RJM SFA
  4897. ADN 1
  4898. CRD CM
  4899. LDD CM SET DEVICE TYPE REQUESTED
  4900. STD P0
  4901. LPC 3777 SET TYPE REQUESTED IN CATALOG
  4902. RAM DFRA
  4903. LDM FETL CHECK FET LENGTH
  4904. SBN CFOU+1
  4905. MJN DFR10.1 IF NOT LONG ENOUGH TO REQUEST SPACE
  4906. RJM SFA
  4907. ADN CFOU
  4908. CRD CM
  4909. LDD CM+3
  4910. STD LF
  4911. ADD CM+4
  4912. ZJN DFR10.1 IF SPACE NOT SPECIFIED
  4913. AOM DFRD SET SPACE REQUIRED CHECK
  4914. LDD CM+4
  4915. STD LF+1
  4916. DFR10.1 LDN 0
  4917. STD SA
  4918. STD SA+1
  4919. STD FS
  4920. LDN 77 INITIALIZE DEVICE STATUS
  4921. STD P2
  4922. RJM DDN DETERMINE DEVICE NAME
  4923. LDN ESTP READ EST POINTER
  4924. CRD T1
  4925. LDD T1+3 SET LAST MASS STORAGE ORDINAL + 1
  4926. STD T1
  4927. LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
  4928. STD T2
  4929.  
  4930. * CHECK NEXT DEVICE.
  4931.  
  4932. DFR11 AOD T2 ADVANCE EST ORDINAL
  4933. LMD T1
  4934. NJN DFR12 IF MORE DEVICES TO CHECK
  4935. LDD FS
  4936. ZJP DFR9.1 IF NO DEVICE FOUND
  4937. LDD P2
  4938. RJM PDS PROCESS DEVICE STATUS
  4939. LJM DFR14 SET UP FNT AND EXIT
  4940.  
  4941. DFR12 SFA EST,T2 READ EST ENTRY
  4942. ADK EQDE
  4943. CRD T3
  4944. LDD P0
  4945. ZJN DFR13 IF DEVICE TYPE NOT REQUESTED
  4946. LMD T3+3
  4947. NJN DFR11 IF NOT PROPER DEVICE TYPE
  4948. DFR13 RJM CPR CHECK FOR PROPER RESIDENCE
  4949. NJN DFR11 IF NOT PROPER DEVICE
  4950. RJM CDA CHECK DEVICE ACCESSIBILITY
  4951. STD P1 SAVE STATUS OF CURRENT DEVICE
  4952.  
  4953. * SELECT MOST ACCESSIBLE DEVICE WITH MOST AVAILABLE SPACE.
  4954.  
  4955. RJM DSA DETERMINE SPACE AVAILABLE
  4956. LDD P2 COMPARE STATUS OF DEVICES
  4957. SBD P1
  4958. ZJN DFR13.2 IF STATUS THE SAME
  4959. PJN DFR13.3 IF CURRENT DEVICE MORE ACCESSIBLE
  4960. DFR13.1 UJP DFR11 CHECK NEXT DEVICE
  4961.  
  4962. DFR13.2 LDD CM COMPARE SECTORS AVAILABLE
  4963. SBD SA
  4964. MJN DFR13.1 IF LESS AVAILABLE
  4965. NJN DFR13.5 IF MORE AVAILABLE
  4966. LDD SA+1
  4967. SBD CM+1
  4968. MJN DFR13.5 IF MORE AVAILABLE
  4969. UJN DFR13.1 CHECK NEXT DEVICE
  4970.  
  4971. DFR13.3 LDN 0 SPACE REQUIRED NOT SPECIFIED
  4972. * LDN 1 (SPACE REQUIRED SPECIFIED)
  4973. DFRD EQU *-1
  4974. ZJN DFR13.5 IF SPACE REQUIRED NOT SPECIFIED
  4975. LDD P1 COMPARE CURRENT DEVICE STATUS
  4976. SBM DFRC
  4977. PJN DFR13.4 IF SAVED STATUS BETTER
  4978. RAM DFRC
  4979. DFR13.4 LDD CM
  4980. SBD LF
  4981. MJN DFR13.1 IF NOT ENOUGH SPACE
  4982. NJN DFR13.5 IF ENOUGH SPACE
  4983. LDD CM+1
  4984. SBD LF+1
  4985. MJN DFR13.1 IF NOT ENOUGH SPACE
  4986. DFR13.5 LDD CM SELECT THIS DEVICE
  4987. STD SA
  4988. LDD CM+1
  4989. STD SA+1
  4990. LDD T2 SET EST ORDINAL
  4991. STD FS
  4992. LDD P1 SAVE DEVICE STATUS
  4993. STD P2
  4994. LDD T3+4 SAVE MST ADDRESS
  4995. STD P3
  4996. LDM PFPN
  4997. NJN DFR14 IF AUXILIARY DEVICE REQUEST
  4998. LJM DFR11 CHECK FOR MORE DEVICES
  4999.  
  5000. DFR14 LDD FS SET DRIVER FOR PF EQUIPMENT
  5001. STD T5
  5002. SETMS STATUS
  5003. DFR18 LDM SLM PRE-CHECK PRU LIMIT
  5004. STM CMLA+1
  5005. LDN 0 SHOW REQUEST PRESET
  5006. RJM CML
  5007. LDC PFSN
  5008. RJM SFN
  5009. RJM SFT SET FNT/FST INFORMATION
  5010. LDD FS+1
  5011. ZJN DFR19 IF NO TRACK ASSIGNED
  5012. LDM SLM DECREMENT PRU COUNT FOR TRACK ASSIGNED
  5013. STM AIPR+1
  5014. LJM DFR20 COMPLETE
  5015.  
  5016. DFR19 ERROR TKL,CH,IW,FS *EQXXX,DNYY, TRACK LIMIT.*
  5017. DSA SPACE 4,10
  5018. ** DSA - DETERMINE SPACE AVAILABLE ON A DEVICE.
  5019. *
  5020. * ENTRY (T3+4) = MST ADDRESS/10.
  5021. *
  5022. * EXIT (CM - CM+1) = SPACE AVAILABLE.
  5023. *
  5024. * USES CM - CM+4.
  5025.  
  5026.  
  5027. DSA SUBR ENTRY/EXIT
  5028. LDD T3+4 ADDRESS OF MST
  5029. SHN 3
  5030. ADK MDGL GET SECTORS PER TRACK
  5031. CRD CM
  5032. LDD CM+4
  5033. STD T0
  5034. LDD T3+4 ADDRESS OF MST
  5035. SHN 3
  5036. ADK TDGL GET TRACKS AVAILABLE
  5037. CRD CM
  5038. LDN 0
  5039. STD CM CLEAR RESULT
  5040. STD CM+1
  5041. STD CM+3 CLEAR UPPER HALF OF MULTIPLIER
  5042.  
  5043. * MULTIPLY NUMBER OF TRACKS AVAILABLE BY NUMBER OF SECTORS
  5044. * PER TRACK USING SHIFTS AND ADDS.
  5045.  
  5046. DSA1 LDD T0 CHECK MULTIPLIER (SECTORS PER TRACK)
  5047. ZJN DSAX IF DONE
  5048. SHN 21-0 RIGHT SHIFT MULTIPLIER 1 BIT
  5049. STD T0
  5050. PJN DSA2 IF NO ADDITION
  5051. LDD CM+4 ADD SHIFTED NUMBER OF TRACKS TO RESULT
  5052. RAD CM+1
  5053. SHN -14
  5054. ADD CM+3
  5055. RAD CM
  5056. DSA2 LDD CM+3 SHIFT NUMBER OF TRACKS TO THE LEFT
  5057. RAD CM+3
  5058. LDD CM+4
  5059. RAD CM+4
  5060. SHN -14
  5061. RAD CM+3
  5062. UJN DSA1 DO NEXT ITERATION OF MULTIPLY
  5063. PDS SPACE 4,25
  5064. ** PDS - PROCESS DEVICE STATUS.
  5065. *
  5066. * ENTRY (A) = 0 IF DEVICE CAN BE ACCESSED.
  5067. * (A) = 1 IF NEW ACTIVITY RESTRICTED ON DEVICE.
  5068. * (A) = 2 IF PF UTILITY ACTIVE.
  5069. * (A) = 3 IF ACCESS DENIED BY *SETMS*.
  5070. * (A) = 4 IF *ERROR IDLE* SET FOR DEVICE.
  5071. * (FS) = EST ORDINAL OF DEVICE.
  5072. * (FERT) = REAL-TIME PROCESSING FLAG.
  5073. * (SSYS) = SUBSYSTEM FLAG.
  5074. *
  5075. * EXIT RETURN IF DEVICE CAN BE ACCESSED.
  5076. *
  5077. * TO *ERR* IF PF UTILITY ACTIVE.
  5078. * TO *ERR* IF DEVICE IS INACCESSIBLE.
  5079. * TO *ERR* IF *ERROR IDLE* IS SET.
  5080. *
  5081. * THE FOLLOWING LOCATIONS ARE SET FOR ERROR EXITS WHICH
  5082. * MAY CAUSE THE JOB TO BE ROLLED OUT.
  5083. * (ERRC) = ROLLOUT EVENT.
  5084. * (ERRD) = ROLLOUT TIME.
  5085. *
  5086. * USES T0.
  5087. *
  5088. * MACROS ERROR.
  5089.  
  5090.  
  5091. PDS4 LDN 0 RETURN WITH (A) = 0
  5092.  
  5093. PDS SUBR ENTRY/EXIT
  5094. STD T0 SAVE DEVICE STATUS
  5095. SBN 2
  5096. MJN PDS4 IF DEVICE CAN BE ACCESSED, RETURN
  5097. NJN PDS1 IF PF UTILITY NOT ACTIVE
  5098. LDN PFUE SET ROLLOUT EVENT
  5099. STM ERRC
  5100. LDK UIRT SET ROLLOUT TIME
  5101. STM ERRD
  5102. ERROR PFA,CH,IW,,EC2 * PF UTILITY ACTIVE.*
  5103.  
  5104. PDS1 LDM FERT
  5105. NJN PDS2 IF REAL-TIME PROCESSING SET
  5106. LDM SSYS
  5107. NJN PDS3 IF A SUBSYSTEM
  5108.  
  5109. * SUSPEND THE JOB OR RETURN STATUS INDICATING DELAY TO CALLER.
  5110.  
  5111. PDS2 LDD T0
  5112. SBN 4
  5113. ZJN PDS3 IF *ERROR IDLE* IS SET
  5114. ERROR WID,CH,IW,FS,EC6 * WAITING - INACCESSIBLE DEVICE.*
  5115.  
  5116. * TERMINATE THE REQUEST.
  5117.  
  5118. PDS3 ERROR PFN,CH,IW * DEVICE UNAVAILABLE.*
  5119. SFT SPACE 4,20
  5120. ** SFT - SET FNT/FST INFORMATION.
  5121. *
  5122. * ENTRY (FNTA) = FNT ADDRESS IN NFL.
  5123. * (LFAL) = LOCAL FILE ACCESS LEVEL.
  5124. * (FN - FN+4) = LOCAL FILE NAME.
  5125. * (FS) = FILE EST ORDINAL.
  5126. *
  5127. * EXIT (FA) = FNT ADDRESS.
  5128. * (FS - FS+4) = FST ENTRY.
  5129. * (FN - FN+4) = FNT ENTRY.
  5130. * (RTKE) = RESERVED TRACK EST ORDINAL.
  5131. * (RTKT) = RESERVED TRACK.
  5132. * FNT/FST REWRITTEN TO CENTRAL MEMORY.
  5133. *
  5134. * USES FA, CM - CM+4, FN - FN+4, FS - FS+4.
  5135. *
  5136. * MACROS MONITOR, NFA.
  5137.  
  5138.  
  5139. SFT SUBR ENTRY/EXIT
  5140. LDC LOFT*100 SET FILE TYPE
  5141. * LDC PMFT*100 (*ASSIGNPF* WITH *SRSY* SPECIAL REQUEST)
  5142. SFTA EQU *-1
  5143. RAD FN+4
  5144. LDM FNTA SET FST ADDRESS
  5145. STD FA
  5146. NFA FA,R SET FILE ACCESS LEVEL
  5147. ADN FUTL
  5148. CRD CM
  5149. LDM LFAL
  5150. STD CM+2
  5151. NFA FA,R UPDATE FNT INFORMATION
  5152. ADK FNTL
  5153. CWD FN
  5154. ADN FUTL-FNTL
  5155. CWD CM
  5156. LDN ZERL REQUEST TRACK FOR FILE
  5157. CRD CM
  5158. LDD FS SET EST ORDINAL
  5159. STD CM+1
  5160. STM RTKE SET RESERVED TRACK EST ORDINAL
  5161. MONITOR RTCM
  5162. LDD CM+4 SET FST
  5163. STM RTKT SET RESERVED TRACK
  5164. STD FS+1
  5165. STD FS+2
  5166. LDN FSMS
  5167. STD FS+3
  5168. LDN 4
  5169. STD FS+4
  5170. NFA FA,R REWRITE FNT/FST
  5171. ADK FNTL
  5172. CWD FN
  5173. ADN FSTL-FNTL
  5174. CWD FS
  5175. LJM SFTX RETURN
  5176. SPACE 4,10
  5177. WCS$ EQU 0 SELECT CONSECUTIVE SECTOR WRITE
  5178. SPACE 4,10
  5179. * COMMON DECKS.
  5180.  
  5181.  
  5182. *CALL COMPWEI
  5183. *CALL COMPWSS
  5184. SPACE 4,10
  5185. * CHECK FOR OVERFLOW.
  5186.  
  5187.  
  5188. OVERFLOW OVLD,EPFW OVERFLOW INTO ERROR PROCESSING AREA
  5189. OVERLAY (CATALOG/PERMIT SEARCH AND RESIDENT.),OVLA
  5190. SPACE 4,25
  5191. ** THIS OVERLAY CONTAINS PRELIMINARY PROCESSING FOR
  5192. * MOST REQUESTS, INCLUDING CATALOG AND PERMIT SEARCH.
  5193. * IT ALSO CONTAINS RESIDENT SUBROUTINES.
  5194. *
  5195. * ENTRY (CC) = COMMAND CODE.
  5196.  
  5197.  
  5198. OVL BSS 0 ENTRY
  5199. LJM IRP INITIAL REQUEST PROCESSING
  5200. MSR SPACE 4,10
  5201. ** MSR - *COMPRNS* MASS STORAGE READ ERROR PROCESSOR.
  5202. *
  5203. * ENTRY FROM *RNS*.
  5204. * (MSRA) = ADDRESS OF ERROR PROCESSOR IN CALLER
  5205. * OF *RNS*.
  5206. *
  5207. * CALLS PCC, PCE, PTE.
  5208.  
  5209.  
  5210. MSR SUBR ENTRY/EXIT
  5211. RJM PCE PROCESS CATALOG READ ERROR
  5212. * RJM PCC (CATALOG READ ERROR FOR *CHANGE* REQUEST)
  5213. * RJM PTE (READ ERROR FOR DEVICE TO DEVICE TRANSFER)
  5214. MSRA EQU *-1 ERROR PROCESSOR ADDRESS
  5215. UJN MSRX RETURN
  5216. SPACE 4,10
  5217. * RESIDENT COMMON DECKS.
  5218.  
  5219.  
  5220. *CALL COMPSNT
  5221. *CALL COMPRNS
  5222. SPACE 4,10
  5223. LOCG EQU *+5 LOAD ADDRESS FOR DEVICE/DEVICE TRANSFER
  5224. TITLE RESIDENT SUBROUTINES.
  5225. CAI SPACE 4,15
  5226. ** CAI - CLEAR ALLOCATION INTERLOCK.
  5227. *
  5228. * ENTRY (T5)= PERMANENT FILE EST ORDINAL.
  5229. * (AILK) = TRACK FOR ALLOCATION INTERLOCK.
  5230. *
  5231. * EXIT ALLOCATION INTERLOCK CLEARED.
  5232. *
  5233. * USES T5.
  5234. *
  5235. * CALLS CTI.
  5236.  
  5237.  
  5238. CAI SUBR ENTRY/EXIT
  5239. LDC 4000 SET CHECKPOINT VIA *STBM*
  5240. RAD T5
  5241. LDM AILK
  5242. RJM CTI CLEAR TRACK INTERLOCK
  5243. LDD T5 RESTORE EST ORDINAL
  5244. LPC 777
  5245. STD T5
  5246. LDN 0 CLEAR INTERLOCK FLAG
  5247. STM AILK
  5248. UJN CAIX RETURN
  5249. CSA SPACE 4,15
  5250. ** CSA - COMPUTE SECTOR ADDRESS.
  5251. *
  5252. * ENTRY (RI - RI+1) = RANDOM INDEX OF PERMIT SECTOR.
  5253. * (DVLW - DVLW+4) = DEVICE LAYOUT WORD OF MST.
  5254. * PROPER DRIVER LOADED.
  5255. *
  5256. * EXIT (T6) = TRACK OF RANDOM SECTOR.
  5257. * (T7) = SECTOR OF RANDOM SECTOR.
  5258. *
  5259. * USES T6 - T7, RI - RI+1.
  5260. *
  5261. * CALLS CRA.
  5262. *
  5263. * MACROS ERROR.
  5264.  
  5265.  
  5266. CSA SUBR ENTRY/EXIT
  5267. LDM DVLW+2 SET FIRST TRACK
  5268. STD T6
  5269. RJM CRA CONVERT RANDOM ADDRESS
  5270. PJN CSAX IF RANDOM ADDRESS OK
  5271. ERROR RIN,,,EQ *EQXXX,DNYY, RANDOM INDEX ERROR.*
  5272. DPR SPACE 4,15
  5273. ** DPR - DELAY PRIOR TO RETRY.
  5274. *
  5275. * DELAY 100 MILLISECONDS.
  5276. *
  5277. * EXIT TO *ERR* IF *ORET* SET.
  5278. *
  5279. * USES T0.
  5280. *
  5281. * MACROS DELAY, ERROR, PAUSE.
  5282.  
  5283.  
  5284. DPR SUBR ENTRY/EXIT
  5285. LDC 1400
  5286. STD T0
  5287. DPR1 DELAY
  5288. PAUSE
  5289. LDD CM+1
  5290. LMN ORET
  5291. ZJN DPR2 IF *ORET* SET
  5292. SOD T0
  5293. PJN DPR1 IF MORE DELAY REQUIRED
  5294. UJN DPRX RETURN
  5295.  
  5296. DPR2 ERROR ABT,,,T5 *EQXXX,DNYY, PFM ABORTED.*
  5297. DTK SPACE 4,15
  5298. ** DTK - DROP TRACKS.
  5299. *
  5300. * ENTRY (A) = LAST SECTOR WRITTEN.
  5301. * (T6) = ADDRESS OF LAST TRACK (NOT RELEASED).
  5302. * (T5) = EST ORDINAL.
  5303. *
  5304. * EXIT LAST SECTOR WRITTEN UPDATED IN TRT.
  5305. *
  5306. * USES CM - CM+4.
  5307.  
  5308.  
  5309. DTK SUBR ENTRY/EXIT
  5310. STD CM+3
  5311. LDD T6
  5312. LPC 3777
  5313. STD CM+2
  5314. LDD T5
  5315. STD CM+1
  5316. MONITOR DTKM
  5317. UJN DTKX RETURN
  5318. ITC SPACE 4,15
  5319. ** ITC - INTERLOCK TRACK CHAIN.
  5320. *
  5321. * ENTRY (A) = TRACK CHAIN TO BE INTERLOCKED.
  5322. * (T5) = EST ORDINAL.
  5323. *
  5324. * EXIT (A) = 0 IF TRACK INTERLOCKED.
  5325. * (A) = 2 IF TRACK NOT RESERVED.
  5326. * (T6) = TRACK.
  5327. *
  5328. * CALLS DPR, STI.
  5329.  
  5330.  
  5331. ITC2 LMN 1 RETURN STATUS VALUE
  5332.  
  5333. ITC SUBR ENTRY/EXIT
  5334. STD T6
  5335. ITC1 RJM STI TRY TO INTERLOCK TRACK
  5336. LMN 1
  5337. NJN ITC2 IF INTERLOCK WORKED OR TRACK NOT RESERVED
  5338. RJM DPR DELAY PRIOR TO RETRY
  5339. UJN ITC1 TRY AGAIN
  5340. RMD SPACE 4,15
  5341. ** RMD - RESET TO MASTER DEVICE.
  5342. *
  5343. * ENTRY (EQ) = MASTER DEVICE EST ORDINAL.
  5344. *
  5345. * EXIT (T5) = MASTER DEVICE EST ORDINAL.
  5346. *
  5347. * USES T5.
  5348. *
  5349. * CALLS PDV.
  5350. *
  5351. * MACROS SETMS.
  5352.  
  5353.  
  5354. RMD SUBR ENTRY/EXIT
  5355. LDD EQ
  5356. STD T5
  5357. SETMS IO,NS
  5358. RJM PDV PROCESS DEVICE STATUS
  5359. UJN RMDX RETURN
  5360. UCE SPACE 4,20
  5361. ** UCE - UPDATE CATALOG ENTRY.
  5362. *
  5363. * ENTRY (CB) = POINTER TO BUFFER LOCATION.
  5364. * (CI) = POINTER TO CATALOG ENTRY IN BUFFER.
  5365. * MASTER DEVICE CHANNEL RESERVED.
  5366. * (PWRF) = *PFM* RESTART FLAGS FOR RECALL.
  5367. * (UCEA) SET WITH *STMI+CI* IF FCMD, FCUD
  5368. * ARE TO BE UPDATED.
  5369. *
  5370. * EXIT (PWRF) = FLAGS SET FOR ACCESS AND PERMIT COUNTS
  5371. * UPDATED.
  5372. * FCAC, FCAD, FCMD, FCUD UPDATED.
  5373. * CATALOG ENTRY REWRITTEN.
  5374. *
  5375. * USES CM - CM+4.
  5376. *
  5377. * CALLS WBI.
  5378.  
  5379.  
  5380. UCE SUBR ENTRY/EXIT
  5381.  
  5382. * UPDATE DATES.
  5383.  
  5384. LDN PDTL READ PACKED DATE AND TIME
  5385. CRD CM
  5386. LDN 3
  5387. STD CM
  5388. RAD CI
  5389. UCE1 LDM CM+2-1,CM
  5390. UCEA UJN UCE2 READ ACCESS - BYPASS FCMD, FCUD UPDATES
  5391. * UJN UCE3 (*UATTACH*/M=R - BYPASS DATE/TIME UPDATE)
  5392. * STM FCUD-1,CI (UPDATE UTILITY CONTROL DATE/TIME)
  5393. CON FCUD-1
  5394. UCEB STM FCMD-1,CI UPDATE MODIFICATION DATE
  5395. * UJN UCE3 (*UATTACH* - BYPASS FCMD, FCAD UPDATE)
  5396. UCE2 STM FCAD-1,CI UPDATE ACCESS DATE
  5397. UCE3 SOD CI
  5398. SOD CM
  5399. NJN UCE1 IF UPDATE NOT COMPLETE
  5400.  
  5401. * UPDATE ACCESS COUNT.
  5402.  
  5403. LDM PWRF RESTART FLAGS
  5404. LPK RFAC
  5405. NJN UCE4 IF ACCESS COUNT UPDATED
  5406. UCEC AOM FCAC+1,CI ADVANCE ACCESS COUNT
  5407. * UJN UCE4 (*UATTACH* - BYPASS ACCESS COUNT UPDATE)
  5408. SHN -14
  5409. RAM FCAC,CI
  5410.  
  5411. * REWRITE CATALOG ENTRY.
  5412.  
  5413. UCE4 LDD CB REWRITE CATALOG
  5414. RJM WBI
  5415. LDM PWRF RESTART FLAGS
  5416. SCN RFAC+RFPC
  5417. ADK RFAC+RFPC SET ACCESS AND PERMIT COUNTS UPDATED
  5418. STM PWRF
  5419. UJP UCEX RETURN
  5420.  
  5421. * CHECK RANGE ON GENERATED JUMPS.
  5422.  
  5423. ERRNG 37-UCE3+UCEB
  5424. ERRNG 37-UCE4+UCEC
  5425. WBI SPACE 4,20
  5426. ** WBI - WRITE BUFFER IN PLACE.
  5427. *
  5428. * ENTRY (A) = BUFFER LOCATION.
  5429. * (T5) = MASTER DEVICE EST ORDINAL.
  5430. * (STAT) = *STNS* BIT SET IF NO JOB SUSPENSION ALLOWED.
  5431. * ADDRESS SET IN 2 LOCATIONS PRECEEDING BUFFER.
  5432. * LINKAGE SET IN BUFFER.
  5433. *
  5434. * EXIT SECTOR WRITTEN.
  5435. * TO *ERR* TO PROCESS MASS STORAGE ERROR.
  5436. *
  5437. * USES T3, T6, T7.
  5438. *
  5439. * CALLS PDV, PES, WDS.
  5440. *
  5441. * MACROS ERROR, SETMS.
  5442.  
  5443.  
  5444. WBI SUBR ENTRY/EXIT
  5445. STD T3 SAVE BUFFER ADRRESS
  5446. LDM -2,T3
  5447. STD T6
  5448. LDM -1,T3
  5449. STD T7
  5450. SETMS IO,(RW,NS)
  5451. RJM PDV PROCESS DEVICE STATUS
  5452. LDD T3
  5453. LMK WLSF WRITE LAST SECTOR
  5454. RJM WDS
  5455. PJN WBIX IF NO ERRORS
  5456. RJM PES PROCESS ERROR STATUS
  5457. LDM STAT
  5458. LPK STNS
  5459. NJN WBI1 IF JOB SUSPENSION INHIBITED
  5460. LDM RDCT DRIVER STATUS
  5461. SHN 21-13
  5462. PJN WBI1 IF DATA TRANSFERRED
  5463. ERROR MSE,CH,,T5 *EQXXX,DNYY, MASS STORAGE ERROR.*
  5464.  
  5465. * REQUEST ERROR IDLE BE SET WHEN CATALOG OR PERMIT FILE
  5466. * IS NOT INTACT.
  5467.  
  5468. WBI1 ERROR MSE,CH,,T5,,EI *EQXXX,DNYY, MASS STORAGE ERROR.*
  5469. SPACE 4,10
  5470. * RESIDENT COMMON DECKS.
  5471.  
  5472.  
  5473. *CALL COMPCRA
  5474. *CALL COMPCTI
  5475. *CALL COMPIRA
  5476. STI$ SET 0 RETURN CONTROL ON TRACK INTERLOCK REJECT
  5477. TNR$ SET 0 DO NOT HANG ON *TRACK NOT RESERVED*
  5478. *CALL COMPSTI
  5479. SPACE 4,10
  5480. OVLU EQU *+5 CATALOG/PERMIT UPDATE OVERLAY LOAD ADDRESS
  5481. SPACE 4,10
  5482. * DEFINE THE MAXIMUM LENGTH OF OVERLAYS *3PD*
  5483. * (CATALOG UPDATE ROUTINES) AND *3PE* (PERMIT
  5484. * UPDATE ROUTINES) IN SECTORS.
  5485.  
  5486.  
  5487. OVLL EQU 3*500B OVERLAY LENGTH IN SECTORS
  5488. SPACE 4,10
  5489. * DEFINE THE LOAD ADDRESS FOR THE COMMAND OVERLAYS.
  5490.  
  5491.  
  5492. OVLC EQU OVLU+OVLL-5 COMMAND CODE LOAD ADDRESS
  5493. TITLE PERMIT SEARCH ROUTINES.
  5494. CPI SPACE 4,25
  5495. ** CPI - CHECK PERMISSION INFORMATION.
  5496. *
  5497. * *BFMS* IS USED TO READ PERMITS.
  5498. *
  5499. * ENTRY (A) = PERMISSION MODE REQUIRED FOR COMMAND.
  5500. * (CI) = INDEX TO CATALOG ENTRY.
  5501. * MASTER DEVICE CHANNEL RESERVED.
  5502. * (PP) = 0.
  5503. * (PB) = 0.
  5504. *
  5505. * EXIT (A) = ACCESS MODE ALLOWED.
  5506. * TO ERR IF NOT PERMITTED ACCESS.
  5507. * BUFFER LOADED WITH PERMITS.
  5508. * (PP) = POINTER TO PERMIT ENTRY.
  5509. * (PP) = 0 IF PERMIT ENTRY NOT AVAILABLE.
  5510. * (PB) = ADDRESS OF PERMIT BUFFER.
  5511. * (PB) = 0 IF NO PERMIT SEARCH POSSIBLE.
  5512. *
  5513. * USES P1, PB, PP, T0, T1, RI - RI+1.
  5514. *
  5515. * CALLS SPI.
  5516. *
  5517. * MACROS MONITOR.
  5518.  
  5519.  
  5520. CPI SUBR ENTRY/EXIT
  5521. LPN 37 SET MODE REQUIRED
  5522. STD T1
  5523. STM CPIC
  5524. LDC SHNI+21 SET SHIFT COUNT FOR MODE REQUIRED
  5525. SBD T1
  5526. STM CPID
  5527. LDD PI
  5528. ADD PI+1
  5529. ZJN CPIX IF NOT ALTERNATE CATALOG ACCESS
  5530.  
  5531. * READ PERMISSION INFORMATION.
  5532.  
  5533. LDC BFMS SET PERMIT BUFFER
  5534. STD PB
  5535. LDM FCRI,CI SET PERMIT ADDRESS
  5536. STD RI
  5537. LDM FCRI+1,CI
  5538. STD RI+1
  5539. ADD RI
  5540. ZJN CPI1 IF NO PERMISSION INFORMATION AVAILABLE
  5541. LDN IPPA PF INCREMENT OF PERMIT FILE ACCESS
  5542. RAM AIPF+1
  5543. RJM SPI SEARCH PERMISSION INFORMATION
  5544.  
  5545. * CHECK FILE CATEGORY.
  5546.  
  5547. CPI1 LDM FCAM,CI SET ACCESS MODE FOR FILE
  5548. LPN 77
  5549. STD P1
  5550. LDM FCCT,CI
  5551. SHN -6
  5552. LMK FCPR
  5553. NJN CPI3 IF NOT PRIVATE FILE
  5554.  
  5555. * PRIVATE FILE.
  5556.  
  5557. LDD PP
  5558. NJN CPI5 IF PERMIT FOUND
  5559. CPI2 LDN PTNU PROHIBIT ACCESS TO FILE
  5560. STD P1
  5561. UJN CPI8 PROCESS PERMIT NOT FOUND
  5562.  
  5563. * SEMI-PRIVATE OR PUBLIC FILE.
  5564.  
  5565. CPI3 LDM PFAC
  5566. NJN CPI4 IF CALLER HAS USER NAME IN CPA
  5567. STD PB PREVENT UPDATE OF PERMIT ENTRY
  5568. UJN CPI6 TREAT AS NONPERMITTED PUBLIC FILE
  5569.  
  5570. CPI4 LDC MJNI+CPI6-CPIB SET SEMI-PRIVATE OR PUBLIC FILE
  5571. STM CPIB
  5572. LDD PP CHECK PERMIT INDEX
  5573. ZJN CPI6 IF NO PERMIT FOUND
  5574.  
  5575. * CHECK PERMIT TYPE.
  5576.  
  5577. CPI5 LDM FPMD,PP CHECK PERMIT TYPE
  5578. SHN 21-4
  5579. CPIB MJN CPI2 IF ACCOUNTING PERMIT
  5580. * MJN CPI6 IF ACCOUNTING PERMIT (SEMI-PRIVATE/PUBLIC)
  5581. SHN -21+4 SET PERMIT MODE
  5582. STD P1
  5583.  
  5584. * CHECK ACCESS MODE.
  5585.  
  5586. CPI6 LDD P1 PERMITTED MODE
  5587. SBN PTLM
  5588. MJN CPI8 IF LEGAL MODE
  5589. CPI7 ERROR FNF *(FILENAME) NOT FOUND.*
  5590.  
  5591. * CHECK FOR MULTI-LEVEL USER NAME ACCESS.
  5592.  
  5593. CPI8 LDM PFPT
  5594. NJN CPI10 IF NOT MULTI-LEVEL USER
  5595. LDC * (REQUESTED MODE)
  5596. CPIC EQU *-1
  5597. LMN PTRD
  5598. ZJN CPI9 IF READ MODE REQUESTED
  5599. LMN PTEX&PTRD
  5600. NJN CPI10 IF MODE OTHER THAN EXECUTE REQUESTED
  5601. CPI9 LDN PTRD ALLOW READ MODE ACCESS
  5602. LJM CPIX RETURN
  5603.  
  5604. * CHECK EXPIRATION DATE.
  5605.  
  5606. CPI10 LDD PP
  5607. ZJN CPI12 IF NO PERMIT ENTRY
  5608. LDM FPMD,PP
  5609. SHN 21-5
  5610. PJN CPI12 IF EXPIRATION DATE NOT PRESENT
  5611. LDM FPXD,PP
  5612. LPN 77
  5613. STD CM+3
  5614. SHN 14
  5615. LMM FPXD+1,PP
  5616. ZJN CPI12 IF NONEXPIRING PERMIT
  5617. STD CM+4
  5618. LDN VEDS VALIDATE EXPIRATION DATE
  5619. STD CM+1
  5620. MONITOR VSAM
  5621. LDD CM+1
  5622. ZJN CPI12 IF PERMIT NOT EXPIRED
  5623. CPI11 LJM CPI7 *(FILENAME) NOT FOUND.*
  5624.  
  5625. * CHECK IF ACCESS MODE PERMITTED.
  5626.  
  5627. CPI12 LDM TMPE,P1
  5628. CPID SHN ** (21 - REQUESTED MODE)
  5629. PJN CPI11 IF REQUESTED MODE NOT ALLOWED
  5630. LDD P1 ALLOW PERMITTED MODE
  5631. LJM CPIX RETURN
  5632.  
  5633. * TEST RANGE OF GENERATED RELATIVE JUMPS.
  5634.  
  5635. ERRNG 37+CPIB-CPI6
  5636.  
  5637.  
  5638. TMPE BSS 0 TABLE OF MODE PERMISSION EQUIVALENCES.
  5639. LOC 0
  5640.  
  5641. CON MDWR WRITE
  5642. CON MDRD READ
  5643. CON MDAP APPEND
  5644. CON MDEX EXECUTE
  5645. CON MDNU NEGATE
  5646. CON MDMD MODIFY
  5647. CON MDRM READ/ALLOW MODIFY
  5648. CON MDRA READ/ALLOW EXTEND
  5649. CON MDUP UPDATE
  5650. CON MDRU READ/ALLOW UPDATE
  5651.  
  5652. LOC *O
  5653. SPI SPACE 4,25
  5654. ** SPI - SEARCH PERMISSION INFORMATION.
  5655. *
  5656. * ENTRY (PB) = BUFFER TO BE SEARCHED.
  5657. * (PP) = 0.
  5658. * (EBTK) = END BUFFER TRACK, IF BUFFER IS IN *BFMS*.
  5659. *
  5660. * EXIT (PP) = INDEX TO PERMIT ENTRY IF FOUND.
  5661. * (PP) = 0 IF PERMIT ENTRY NOT FOUND.
  5662. * (T1) = NEXT AVAILABLE ENTRY IF NOT FOUND AND SHORT PRU.
  5663. * (EXPC) = NUMBER OF EXPLICIT PERMIT ENTRIES (IF PERMIT
  5664. * NOT FOUND).
  5665. * (RI - RI+1) = RANDOM INDEX OF PERMIT SECTOR.
  5666. * (ADVANCED IF SECTOR OVERFLOW)
  5667. * (STAT) FLAG SET IF *BFMS* REUSED.
  5668. * BUFFER LOADED WITH PERMITS.
  5669. *
  5670. * USES T1, T2, PI - PI+1, RI - RI+1.
  5671. *
  5672. * CALLS CSA, PDV, PES, RDS.
  5673. *
  5674. * MACROS ERROR, SETMS.
  5675.  
  5676.  
  5677. SPI SUBR ENTRY/EXIT
  5678. LDN STPR INDICATE THAT PERMITS WERE READ
  5679. RAM STAT
  5680. LDM EBTK CHECK IF END BUFFER IS IN *BFMS*
  5681. ZJN SPI1 IF *BFMS* IS NOT IN USE
  5682. LDN STBR INDICATE THAT *BFMS* HAS BEEN REUSED
  5683. RAM STAT
  5684.  
  5685. * READ NEXT SECTOR OF PERMITS.
  5686.  
  5687. SPI1 RJM CSA COMPUTE RANDOM ADDRESS
  5688. LDD T6 SET CURRENT SECTOR POINTERS
  5689. STM -2,PB
  5690. STM ERRC
  5691. LDD T7
  5692. STM -1,PB
  5693. STM ERRD
  5694. SETMS IO
  5695. RJM PDV PROCESS DEVICE STATUS
  5696. LDD PB
  5697. RJM RDS READ SECTOR
  5698. PJN SPI2 IF NO READ ERROR
  5699. RJM PES PROCESS ERROR STATUS
  5700. ERROR MSE,CH,,EQ *EQXXX,DNYY, MASS STORAGE ERROR.*
  5701.  
  5702. SPI2 LDM 1,PB WORD COUNT IN PERMIT SECTOR
  5703. SBN NWPE+NWPH
  5704. MJN SPI3 IF INCORRECT SECTOR LENGTH
  5705. LPN NWPE-1
  5706. ZJN SPI4 IF INTEGRAL NUMBER OF PERMIT ENTRIES
  5707. ERRNZ NWPH-NWPE HEADER SIZE MUST EQUAL ENTRY SIZE
  5708. SPI3 ERROR BCS,,,T5,,EI *EQXXX,DNYY, BAD CATALOG/PERMIT SECTOR.*
  5709.  
  5710. SPI4 LDN NWPH ADVANCE WORD COUNT PAST HEADER
  5711. STD T2
  5712. LDD PB RESET SEARCH INDEX
  5713. ADN NWPH*5+2 SKIP HEADER AND CONTROL BYTES
  5714. STD T1
  5715. UJN SPI7 CHECK FIRST ENTRY IN SECTOR
  5716.  
  5717. * ADVANCE TO NEXT PERMIT ENTRY.
  5718.  
  5719. SPI5 LDM FPMD,T1
  5720. SHN 21-4
  5721. MJN SPI6 IF ACCOUNTING PERMIT
  5722. AOM EXPC ADVANCE EXPLICIT PERMIT COUNT
  5723. SPI6 LDN NWPE*5 ADVANCE BUFFER INDEX
  5724. RAD T1
  5725. LDN NWPE INCREMENT WORD COUNT
  5726. RAD T2
  5727. LMM 1,PB
  5728. NJN SPI7 IF NOT END OF BUFFER
  5729. UJN SPI10 END OF BUFFER
  5730.  
  5731. SPI7 LDM PFAC
  5732. LMM FPAN,T1 COMPARE USER NAME
  5733. NJN SPI5 IF NO MATCH
  5734. LDM FPAN+1,T1
  5735. LMM PFAC+1
  5736. NJN SPI5 IF NO MATCH
  5737. LDM FPAN+2,T1
  5738. LMM PFAC+2
  5739. SPI8 NJN SPI5 IF NO MATCH
  5740. LDM FPAN+3,T1
  5741. LMM PFAC+3
  5742. SCN 77
  5743. NJN SPI8 IF NO MATCH
  5744. LDD T1 SET POINTER TO ENTRY
  5745. STD PP
  5746. SPI9 LDD T1 SET HOLE ADDRESS
  5747. STM NPHA
  5748. LJM SPIX RETURN
  5749.  
  5750. SPI10 LDD T2 CHECK WORD COUNT OF SECTOR
  5751. LMD HN
  5752. NJN SPI9 IF END OF PERMITS
  5753. LDM FPRI,PB CHECK FOR LINKED PERMIT BUFFERS
  5754. STD RI
  5755. LDM FPRI+1,PB
  5756. STD RI+1
  5757. ADD RI
  5758. ZJN SPI9 IF INDEX NOT SET
  5759. LJM SPI1 READ NEXT SECTOR
  5760. SPACE 4,10
  5761. OVL0 EQU *+5 ZERO-LEVEL OVERLAY LOAD ADDRESS
  5762. TITLE CATALOG SEARCH ROUTINES.
  5763. CCD SPACE 4,25
  5764. ** CCD - CHECK CATALOG DATA.
  5765. *
  5766. * CHECK IF CATALOG ENTRY IS THAT OF DESIRED FILE.
  5767. * IF PASSWORD PRESENT IN CATALOG ENTRY, VERIFY THAT
  5768. * CORRECT PASSWORD WAS SPECIFIED AND THAT PASSWORD
  5769. * HAD NOT EXPIRED (ALTERNATE USER ONLY).
  5770. * THE ACCESS LEVEL AND ACCESS CATEGORY SET ARE ALSO
  5771. * VALIDATED. STATISTICS ARE ACCUMULATED FOR USER
  5772. * CONTROL CHECKS.
  5773. *
  5774. * ENTRY (T3) = INDEX TO CATALOG ENTRY.
  5775. * (FN - FN+3) = FILE NAME.
  5776. * (PFPW - PFPW+3) = FILE PASSWORD FROM CALL BLOCK
  5777. * (CCDA) = EXIT JUMP IF NO OPTIONAL USER.
  5778. *
  5779. * EXIT (A) = 0 IF FILE FOUND AND ACCESS ALLOWED.
  5780. * (NF - NF+1) INCREMENTED.
  5781. * (CS - CS+1) ADVANCED IF FILE IS INDIRECT.
  5782. * TO *ERR* IF ACCESS TO FILE NOT ALLOWED.
  5783. *
  5784. * USES T3, FN - FN+3.
  5785. *
  5786. * MACROS ERROR, MONITOR.
  5787. *
  5788. * NOTES THE USE OF THE DATA TAGS *CCDD*, *CCDF*, *CCDI*
  5789. * AND *CCDP* SHOULD BE AVOIDED, SINCE THEY CONFLICT
  5790. * WITH GLOBAL SYMBOL DEFINITIONS.
  5791.  
  5792.  
  5793. CCD SUBR ENTRY/EXIT
  5794. CCDB UJN CCD1 SET TO *PSN* IF ALLOCATION COMMAND
  5795. * I.E. SAVE, REPLACE, APPEND, DEFINE.
  5796.  
  5797. * ACCUMULATE STATISTICS.
  5798.  
  5799. AOD NF+1 ADVANCE FILE COUNT
  5800. SHN -14
  5801. RAD NF
  5802. LDM FCBS,T3
  5803. SHN 6
  5804. MJN CCD1 IF DIRECT ACCESS FILE
  5805. LDM FCLF+1,T3 ADD TO CUMULATIVE SIZE OF INDIRECT FILES
  5806. RAD CS+1
  5807. SHN -14
  5808. ADM FCLF,T3
  5809. RAD CS
  5810.  
  5811. * CHECK FILE FOR SEARCH.
  5812.  
  5813. CCD1 LDI T3 COMPARE FILE NAMES
  5814. LMD FN
  5815. NJN CCDX IF NOT EQUAL
  5816. LDM FCFN+1,T3 COMPARE BYTE 2
  5817. LMD FN+1
  5818. CCD2 NJN CCDX IF NOT EQUAL
  5819. LDM FCFN+2,T3 COMPARE BYTE 3
  5820. LMD FN+2
  5821. NJN CCDX IF NOT EQUAL
  5822. LDM FCFN+3,T3 COMPARE 7TH CHARACTER
  5823. LMD FN+3
  5824. SHN -6
  5825. NJN CCD2 IF LAST CHARACTER NOT EQUAL
  5826.  
  5827. * COMPARE FILE PASSWORD.
  5828.  
  5829. CCDA LDM FCPW,T3 COMPARE FILE PASSWORD
  5830. * UJN CCD4 (NOT ALTERNATE USER)
  5831. * UJN CCD4 (*PERMIT* REQUEST)
  5832. LMM PFPW
  5833. NJN CCD3 IF NOT EQUAL
  5834. LDM FCPW+1,T3 COMPARE BYTE 2
  5835. LMM PFPW+1
  5836. NJN CCD3 IF NOT EQUAL
  5837. LDM FCPW+2,T3 COMPARE BYTE 3
  5838. LMM PFPW+2
  5839. NJN CCD3 IF NOT EQUAL
  5840. LDM FCPW+3,T3 COMPARE 7TH CHARACTER
  5841. LMM PFPW+3
  5842. SHN -6
  5843. CCD3 NJN CCD6 IF NOT EQUAL
  5844. UJN CCD5 CHECK FOR PASSWORD EXPIRATION
  5845.  
  5846. CCD4 LDN 0
  5847. UJN CCD7 VALIDATE ACCESS TO FILE
  5848.  
  5849. * CHECK FOR PASSWORD EXPIRATION.
  5850.  
  5851. CCD5 LDM FCPW,T3
  5852. ZJN CCD7 IF NO PASSWORD
  5853. LDM FCXD,T3 CHECK EXPIRATION DATE
  5854. LPN 77
  5855. STD CM+3
  5856. SHN 14
  5857. LMM FCXD+1,T3
  5858. ZJN CCD7 IF NON-EXPIRING PASSWORD
  5859. STD CM+4
  5860. LDN VEDS VALIDATE EXPIRATION DATE
  5861. STD CM+1
  5862. MONITOR VSAM
  5863. LDD CM+1
  5864. ZJN CCD7 IF NOT EXPIRED
  5865. CCD6 ERROR FNF *(FILENAME) NOT FOUND.*
  5866.  
  5867. * VALIDATE ACCESS TO FILE.
  5868.  
  5869. CCD7 STD CM VALIDATE ACCESS LEVEL AND CATEGORY SET
  5870. LDM FCAL,T3 SET ACCESS LEVEL
  5871. LPN 7
  5872. STD CM+1
  5873. LDM FCFC,T3 SET ACCESS CATEGORY
  5874. LPC 377
  5875. STD CM+2
  5876. LDM FCFC+1,T3
  5877. STD CM+3
  5878. LDM FCFC+2,T3
  5879. STD CM+4
  5880. LDD MA
  5881. CWD CM
  5882. LDN ZERL
  5883. CRD CM
  5884. LDN VAJS CHECK AGAINST CURRENT JOB VALIDATIONS
  5885. STD CM+1
  5886. ERRNZ VAJS-3 VALIDATE ACCESS LEVEL AND CATEGORY SET
  5887. STD CM+4
  5888. MONITOR VSAM
  5889. LDD CM+1
  5890. CCDC NJN CCD6 IF NOT VALID ACCESS
  5891. * NJN CCD9 IF NOT VALID ACCESS (NOT ALTERNATE USER)
  5892. CCD8 LJM CCDX RETURN
  5893.  
  5894. * ALLOW AN *SSJ=* JOB TO PURGE ANY FILE.
  5895.  
  5896. CCD9 LDM SSJS
  5897. ZJN CCD10 IF NOT *SSJ=*
  5898. LDD CC
  5899. LMN CCPG
  5900. ZJN CCD8 IF *PURGE*
  5901. CCD10 ERROR JCA,,,,SVE * JOB CANNOT ACCESS FILE.*
  5902. ICT SPACE 4,15
  5903. ** ICT - INTERLOCK CATALOG TRACK.
  5904. *
  5905. * ENTRY (T6) = CATALOG TRACK TO BE INTERLOCKED.
  5906. * (T5) = EST ORDINAL.
  5907. *
  5908. * EXIT TRACK INTERLOCKED.
  5909. * RECALL *PFM* IF INTERLOCK NOT AVAILABLE
  5910. * AFTER FOUR TRIES.
  5911. * TO *HNG* IF CATALOG TRACK NOT RESERVED.
  5912. *
  5913. * CALLS DPR, STI.
  5914.  
  5915.  
  5916. ICT SUBR ENTRY/EXIT
  5917. LDN 3 SET RETRY COUNT
  5918. STD T1
  5919. ICT1 RJM STI TRY TO INTERLOCK TRACK
  5920. ZJN ICTX IF INTERLOCK SUCCESSFUL
  5921. LMN 2
  5922. ZJN ICT2 IF TRACK NOT RESERVED
  5923. SOD T1
  5924. MJN ICT3 IF RETRY COUNT EXHAUSTED
  5925. RJM DPR DELAY PRIOR TO RETRY
  5926. UJN ICT1 RETRY
  5927.  
  5928. ICT2 RJM HNG HANG IF CATALOG TRACK NOT RESERVED
  5929.  
  5930. ICT3 EXIT INA,CH,,,EC4 * INTERLOCK NOT AVAILABLE.*
  5931. ISP SPACE 4,20
  5932. ** ISP - INITIALIZE SEARCH OF PERMANENT FILES.
  5933. *
  5934. * ENTRY (EQ) = MASTER DEVICE EST ORDINAL.
  5935. * (CCIA) = CATALOG TRACK.
  5936. *
  5937. * EXIT (T4) = MASTER DEVICE CHANNEL.
  5938. * (T5) = MASTER DEVICE EST ORDINAL.
  5939. * (T6) = CATALOG TRACK.
  5940. * (T7) = CATALOG SECTOR.
  5941. * (DPPF) = INCREMENTED FOR CATALOG SEARCH.
  5942. * (P0 - P4) = CATALOG SEARCH POINTERS INITIALIZED.
  5943. * CATALOG TRACK INTERLOCK SET.
  5944. * *SETMS READ* PERFORMED.
  5945. *
  5946. * CALLS ICT, IRA, PDV.
  5947. *
  5948. * MACROS ERROR, SETMS.
  5949.  
  5950.  
  5951. ISP SUBR ENTRY/EXIT
  5952. LDD EQ SET MASTER DEVICE EST ORDINAL
  5953. STD T5
  5954. LDM CCIA SET CATALOG TRACK
  5955. STD T6
  5956. ISPB RJM ICT INTERLOCK CATALOG TRACK
  5957. * UJN ISP1 (*UREPLAC*/*DROPIDS*- ALREADY INTERLOCKED)
  5958. AOM CCIB SET CATALOG TRACK INTERLOCK FLAG
  5959. ISP1 LDN IPCS PF INCREMENT FOR CATALOG SEARCH
  5960. RAM AIPF+1
  5961. RJM IRA INITIALIZE RANDOM PROCESSORS
  5962.  
  5963. * SET SEARCH POINTERS.
  5964.  
  5965. LDN 0 SET STARTING CATALOG TRACK SECTOR
  5966. STD T7
  5967. LDN ZERL CONTIGUOUS STORAGE INITIALIZATION
  5968. CRD P0 TEMPORARY CATALOG SEARCH BUFFER POINTERS
  5969. LDC BUF1 SET PRIMARY BUFFER POINTER
  5970. * LDC BFMS (*UREPLAC*/*DROPIDS*)
  5971. ISPC EQU *-1
  5972. STD P2
  5973. LDC BUF2 SET SECONDARY BUFFER POINTER
  5974. ISPA EQU *-1
  5975. * LDC BFMS (*DEFINE* REQUEST)
  5976. STD P3
  5977. SETMS READSTR
  5978. RJM PDV PROCESS DEVICE STATUS
  5979. UJP ISPX RETURN
  5980. PCE SPACE 4,10
  5981. ** PCE - PROCESS CATALOG READ ERROR.
  5982. *
  5983. * ENTRY READ ERROR DETECTED BY *COMPRNS*.
  5984.  
  5985.  
  5986. PCE SUBR ENTRY
  5987. RJM PES PROCESS ERROR STATUS
  5988. ERROR MSE,,,T5 *EQXXX,DNYY, MASS STORAGE ERROR.*
  5989. SCH SPACE 4,50
  5990. ** SCH - SEARCH CATALOGS.
  5991. *
  5992. * THIS ROUTINE WILL SEARCH FOR A FILE AND FOR A HOLE
  5993. * (IF REQUESTED) BY READING INTO *BUF1* UNTIL A HOLE IS FOUND
  5994. * AND THEN CONTINUING IN *BUF2*. IF A LARGER HOLE IS
  5995. * FOUND (*BUF2*) THEN READ WILL REVERT BACK TO *BUF1* UNTIL
  5996. * LARGEST HOLE AND FILE ARE IN *BUF1* AND *BUF2*. *SCH*
  5997. * ALWAYS EXITS WHEN THE FILE IS FOUND.
  5998. *
  5999. * ON A *UREPLAC* OR *DROPIDS* REQUEST, *SCH* IS CALLED JUST TO
  6000. * SEARCH FOR A HOLE. READING WILL START WITH *BFMS* AND WILL
  6001. * SWITCH BACK AND FORTH BETWEEN *BFMS* AND *BUF2* UNTIL THE END
  6002. * OF CATALOGS, OR UNTIL AN EXACT FIT IS FOUND.
  6003. *
  6004. * UPON REENTRY (ON A *REPLACE* OR *APPEND* REQUEST IN WHICH
  6005. * NO EXACT FIT HOLE WAS FOUND IN THE FIRST SEARCH) IT IS
  6006. * NECESSARY TO KEEP ONE OF THE TWO BUFFERS (THE ONE WITH THE
  6007. * FILE CATALOG ENTRY IN IT) AND TO CONTINUE TO SEARCH FOR A
  6008. * LARGER HOLE BY READING INTO THE REMAINING BUFFER AND *BFMS*.
  6009. * READING WILL START IN THE REMAINING *BUF1*/*BUF2* BUFFER -
  6010. * RATHER THAN IN *BFMS* - UNLESS THERE IS ALREADY A HOLE IN
  6011. * THE *BUF1*/*BUF2* BUFFER.
  6012. *
  6013. * IF NO HOLE SEARCH IS REQUIRED ALL SECTORS ARE READ
  6014. * INTO BUF1 (*GET*, *OLD* AND *ATTACH* REQUESTS).
  6015. *
  6016. * SEE *CPI* FOR BUFFERS USED TO READ PERMITS.
  6017. *
  6018. * ENTRY (FN - FN+3) = FILE NAME.
  6019. * (UI - UI+1) = USER INDEX.
  6020. * (LF - LF+1) = LENGTH OF FILE IF HOLE SEARCH DESIRED.
  6021. * (SCHA) INCREMENTED IF REENTRANT CALL.
  6022. * (SCHB) PRESET FOR REENTRY IF CURRENT ENTRY (FILE
  6023. * FOUND) IS TO BE INCLUDED IN HOLE SEARCH.
  6024. * (SCHF) PRESET IF HOLE SEARCH ENABLED (SEARCH FOR
  6025. * LARGEST HOLE OR ONE THAT FILE EXACTLY FITS IN).
  6026. * (SCHH) PRESET IF SEARCH FOR DAPF HOLE.
  6027. * (SCHI) PRESET IF SEARCH FOR LARGEST HOLE ENABLED.
  6028. *
  6029. * EXIT (A) = 0 IF FILE FOUND.
  6030. * (CI) = CATALOG POINTER.
  6031. * (CB) = CATALOG BUFFER.
  6032. * (HP) = HOLE POINTER.
  6033. * (HB) = HOLE BUFFER.
  6034. * (EP) = END POINTER.
  6035. * (EB) = END BUFFER.
  6036. * (HL) = SIZE OF HOLE FOUND.
  6037. * (NF - NF+1) = NUMBER OF FILES IN CATALOG.
  6038. * (CS - CS+1) = CUMULATIVE SIZE OF INDIRECT FILES.
  6039. * (DAHP - DAHP+2) = DIRECT ACCESS HOLE POINTERS IF
  6040. * DA HOLE FOUND AND NOT DAPF SEARCH.
  6041. * (SDAB - SDAC) = ADDRESS OF FILE IF FOUND.
  6042. *
  6043. * USES P0 - P3, T3 - T7.
  6044. *
  6045. * CALLS CCD, ISP, RNS.
  6046. *
  6047. * MACROS ERROR.
  6048.  
  6049.  
  6050. * FILE FOUND.
  6051.  
  6052. SCH18 LDD T3 SET CATALOG ENTRY POINTERS
  6053. STD CI
  6054. LDM P2,P1
  6055. STD CB
  6056. LDM FCBT,CI SET ADDRESS OF FILE FOUND
  6057. STM SDAB
  6058. LDM FCBS,CI
  6059. STM SDAC
  6060. LDN 0
  6061.  
  6062. SCH SUBR ENTRY/EXIT
  6063. SCHA LDN 0
  6064. * LDN 1 PRESET BY CATALOG SEARCH INITIALIZATION
  6065. NJN SCH1 IF NOT INITIAL CALL
  6066. AOM SCHA CLEAR INITIAL CALL STATUS
  6067. RJM ISP INITIALIZE FOR SEARCH
  6068. LJM SCH7 READ FIRST SECTOR
  6069.  
  6070. * SECONDARY CALL TO CONTINUE SEARCH FOR BEST HOLE.
  6071.  
  6072. SCH1 LDK PSNI USE NEW BUFFER FOR REMAINDER OF SEARCH
  6073. STM SCHD
  6074. LDD HP
  6075. ZJN SCH1.1 IF NO HOLE FOUND YET
  6076. LDD HB
  6077. LMM P2,P1
  6078. NJN SCH1.2 IF HOLE NOT IN CURRENT BUFFER
  6079. SCH1.1 AOM SCHC SET BUFFER TOGGLE (DO NOT USE *BFMS* NEXT)
  6080. SCH1.2 LJM SCH10 CONTINUE SEARCH, BYPASSING CURRENT FILE
  6081. * LJM SCH11 (INCLUDE CURRENT FILE IN SEARCH)
  6082. SCHB EQU *-1
  6083.  
  6084. * END OF SECTOR PROCESSING.
  6085.  
  6086. SCH2 LDC * PARTIAL SECTOR WORD COUNT
  6087. SCHE EQU *-1
  6088. LPN 77
  6089. ZJN SCH4 IF NOT EOR
  6090.  
  6091. * END OF RECORD ENCOUNTERED.
  6092.  
  6093. LDD T3 SET END SECTOR POINTERS
  6094. STD EP
  6095.  
  6096. * END OF INFORMATION ENCOUNTERED (NO SHORT SECTOR).
  6097.  
  6098. SCH3 LDM P2,P1 SET END BUFFER
  6099. STD EB
  6100. LJM SCHX RETURN
  6101.  
  6102. * SELECT BUFFER FOR NEXT SECTOR.
  6103.  
  6104. SCH4 UJN SCH5 TOGGLE BUFFER IF NECESSARY
  6105. * PSN (NEW BUFFER REQUIRED)
  6106. SCHD EQU *-1
  6107. LDC BFMS SET *BFMS* IN PLACE OF CURRENT BUFFER
  6108. STM P2,P1
  6109. ISTORE SCHD,(UJN SCH5) RESET TO BYPASS THIS SECTION
  6110. SCH5 LDN 0
  6111. * LDN 1 (BUFFER TOGGLE REQUIRED)
  6112. SCHC EQU *-1
  6113. ZJN SCH7 IF SAME BUFFER TO BE USED
  6114. ISTORE SCHC,(LDN 0) CLEAR BUFFER TOGGLE
  6115. LDD P1 TOGGLE BUFFER
  6116. LMN 1
  6117. STD P1
  6118.  
  6119. * READ NEXT SECTOR.
  6120.  
  6121. SCH7 LDM P2,P1 SET BUFFER ADDRESS
  6122. STD T3
  6123. LDD T6 SAVE POSITION OF SECTOR
  6124. STM -2,T3
  6125. STM ERRC
  6126. LDD T7
  6127. STM -1,T3
  6128. STM ERRD
  6129. LDD T3 READ SECTOR
  6130. RJM RNS
  6131. NJN SCH8 IF NOT EOF/EOI OR ZERO LENGTH RECORD
  6132. LJM SCH3 PROCESS EOI
  6133.  
  6134. SCH8 STD P0 SAVE WORD COUNT
  6135. STM SCHE
  6136. LPN NWCE-1
  6137. ZJN SCH9 IF INTEGRAL NUMBER OF CATALOG ENTRIES
  6138. ERROR BCS,,,T5,,EI *EQXXX,DNYY, BAD CATALOG/PERMIT SECTOR.*
  6139.  
  6140. SCH9 LDN 2 SKIP CONTROL BYTES
  6141. RAD T3
  6142. UJN SCH11 CHECK FIRST CATALOG ENTRY
  6143.  
  6144. * ADVANCE TO NEXT CATALOG ENTRY.
  6145.  
  6146. SCH10 LDC NWCE*5 ADVANCE TO NEXT CATALOG ENTRY
  6147. RAD T3
  6148. LCN NWCE ADVANCE SECTOR WORD COUNT
  6149. RAD P0
  6150. ZJP SCH2 IF END OF BUFFER
  6151.  
  6152. * CHECK NEXT CATALOG ENTRY.
  6153.  
  6154. SCH11 LDM FCUI,T3
  6155. LPN 37
  6156. SHN 14
  6157. LMM FCUI+1,T3
  6158. SCHF PSN 0
  6159. * ZJN SCH12 (HOLE SEARCH ENABLED - IF HOLE)
  6160. ZJN SCH10 IF EMPTY CATALOG ENTRY
  6161. LMD UI+1
  6162. SHN 6
  6163. LMD UI
  6164. SCHG NJN SCH10 IF NOT SAME USER INDEX
  6165. * PSN (PRIVATE DEVICE ACCESS)
  6166. * UJN SCH10 (*UREPLAC*/*DROPIDS*, HOLE SEARCH ONLY)
  6167. RJM CCD CHECK CATALOG DATA
  6168. NJN SCH10 IF NOT SAME FILE
  6169. LJM SCH18 TERMINATE SEARCH
  6170.  
  6171. * SAVE ADDRESS OF DIRECT ACCESS HOLE FOR POSSIBLE FUTURE USE.
  6172.  
  6173. SCH11.1 LDM DAHP
  6174. SCH11.2 NJN SCH10 IF DIRECT ACCESS HOLE ALREADY FOUND
  6175. LDM P2,P1 GET START OF BUFFER
  6176. STD T0
  6177. LDD T3 SAVE OFFSET WITHIN BUFFER
  6178. SBD T0
  6179. STM DAHP+2
  6180. SOD T0
  6181. LDI T0 SAVE DIRECT ACCESS HOLE SECTOR
  6182. STM DAHP+1
  6183. SOD T0
  6184. LDI T0 SAVE DIRECT ACCESS HOLE TRACK
  6185. STM DAHP
  6186. UJN SCH11.2 ADVANCE TO NEXT CATALOG ENTRY
  6187.  
  6188. * CHECK HOLE FOR POSSIBILITY OF PLUG.
  6189.  
  6190. SCH12 LDM FCBS,T3
  6191. SHN 6
  6192.  
  6193. SCHH MJN SCH11.1 IF NOT IAPF HOLE
  6194. * UJN SCH16 (DAPF FILE SEARCH)
  6195. LDM FCLF+1,T3
  6196. STD T0
  6197. SBD LF+1
  6198. SCHI ZJN SCH17 IF EXACT FIT
  6199. * UJN SCH13 (*APPEND* - SEARCH FOR LARGEST HOLE)
  6200. SBK MNHS
  6201. MJN SCH15 IF NOT LARGE ENOUGH FOR FILE AND NEW HOLE
  6202. SCH13 LDD HL
  6203. SBD T0
  6204. PJN SCH15 IF NOT LARGER THAN PREVIOUS HOLE
  6205. LDD T0 SET THIS AS MAXIMUM HOLE
  6206. STD HL
  6207.  
  6208. * SET POINTER TO HOLE.
  6209.  
  6210. SCH14 AOM SCHC SET TO TOGGLE BUFFER
  6211. LDD T3 SAVE HOLE ADDRESS
  6212. STD HP
  6213. LDM P2,P1 SET HOLE BUFFER ADDRESS
  6214. STD HB
  6215. SCH15 LJM SCH10 ADVANCE TO NEXT CATALOG ENTRY
  6216. * LJM SCHX (*UREPLAC*/*DROPIDS*, EXACT FIT FOUND)
  6217. SCHJ EQU *-1
  6218.  
  6219. * CHECK FOR DIRECT ACCESS PURGED ENTRY.
  6220.  
  6221. SCH16 PJN SCH15 IF NOT DIRECT ACCESS FILE
  6222.  
  6223. * EXACT FIT. BYPASS REMAINDER OF HOLES.
  6224.  
  6225. SCH17 ISTORE SCHF,(PSN) BYPASS HOLE SEARCH
  6226. LDD T0 SET LENGTH OF HOLE
  6227. STD HL
  6228. SCHK UJN SCH14 SET POINTER TO HOLE
  6229. * PSN (*UREPLAC*/*DROPIDS*)
  6230. LDC SCHX
  6231. STM SCHJ SET HOLE SEARCH ONLY EXIT
  6232. UJN SCH14 SET POINTER TO HOLE
  6233. SHL SPACE 4,30
  6234. ** SHL - SEARCH CATALOG FOR HOLE.
  6235. *
  6236. * THIS SUBROUTINE PRESETS *SCH* TO SEARCH FOR A HOLE ENTRY
  6237. * FOR A *UREPLAC* OR *DROPIDS* REQUEST.
  6238. *
  6239. * IT IS POSSIBLE THAT AT THE COMPLETION OF THE SEARCH, THE
  6240. * HOLE ENTRY AND/OR THE END OF CATALOGS WILL BE IN SAME SECTOR
  6241. * AS THE FILE CATALOG ENTRY. IF THIS SITUATION OCCURS, THE
  6242. * HOLE AND/OR END POINTERS WILL BE ADJUSTED TO POINT TO THE
  6243. * FILE ENTRY-S BUFFER (*BUF1*).
  6244. *
  6245. * ENTRY (CCIA) = CATALOG TRACK ADDRESS.
  6246. * (CB) = CATALOG BUFFER.
  6247. * (CI) = CATALOG POINTER.
  6248. * (LF - LF+1) = LENGTH OF FILE.
  6249. * (SDAA) = MASTER DEVICE EST ORDINAL.
  6250. *
  6251. * EXIT (A) = 0, IF HOLE NOT FOUND.
  6252. * (EB) = END BUFFER, IF END ENCOUNTERED.
  6253. * (EP) = END POINTER, IF END ENCOUNTERED.
  6254. * (HB) = HOLE BUFFER.
  6255. * (HL) = SIZE OF HOLE FOUND.
  6256. * (HP) = HOLE POINTER.
  6257. *
  6258. * CALLS SCH.
  6259. *
  6260. * USES EB, EP, HB, HP.
  6261. *
  6262. * MACROS ISTORE.
  6263.  
  6264.  
  6265. SHL SUBR ENTRY/EXIT
  6266. ISTORE ISPB,(UJN ISP1) BYPASS CATALOG TRACK INTERLOCK
  6267. ISTORE SCHA,(LDN 0) FORCE *ISP* CALL
  6268. LDC BFMS SET PRIMARY BUFFER POINTER
  6269. STM ISPC
  6270. ISTORE SCHF,(ZJN SCH12) ENABLE HOLE SEARCH
  6271. ISTORE SCHG,(UJN SCH10) SEARCH FOR HOLES ONLY
  6272. ISTORE SCHK,(PSN) ENABLE EXIT FOR HOLE ONLY SEARCH
  6273. RJM SCH SEARCH FOR HOLE
  6274.  
  6275. * CHECK IF HOLE IS IN THE SAME TRACK/SECTOR AS FILE ENTRY.
  6276.  
  6277. LDD HP
  6278. ZJN SHL1 IF HOLE NOT FOUND
  6279. LDM -1,CB
  6280. LMM -1,HB
  6281. NJN SHL1 IF SECTOR NOT THE SAME FOR HOLE AND FILE
  6282. LDM -2,CB
  6283. LMM -2,HB
  6284. NJN SHL1 IF TRACK NOT THE SAME FOR HOLE AND FILE
  6285. LDD CB ADJUST HOLE POINTERS TO FILE ENTRY BUFFER
  6286. SBD HB
  6287. RAD HP
  6288. LDD CB
  6289. STD HB
  6290.  
  6291. * CHECK IF END IS IN SAME TRACK/SECTOR AS FILE ENTRY.
  6292.  
  6293. SHL1 LDD EB
  6294. ZJN SHL3 IF END NOT REACHED (EXACT FIT HOLE FOUND)
  6295. LDM -1,CB
  6296. LMM -1,EB
  6297. NJN SHL3 IF SECTOR NOT THE SAME FOR END AND FILE
  6298. LDM -2,CB
  6299. LMM -2,EB
  6300. NJN SHL3 IF TRACK NOT THE SAME FOR END AND FILE
  6301. LDD EP ADJUST END POINTERS
  6302. ZJN SHL2 IF NO END POINTER (EOI)
  6303. SBD EB ADJUST END POINTER TO FILE ENTRY BUFFER
  6304. ADD CB
  6305. STD EP
  6306. SHL2 LDD CB ADJUST END BUFFER TO FILE ENTRY BUFFER
  6307. STD EB
  6308.  
  6309. * RETURN HOLE POINTER.
  6310.  
  6311. SHL3 LDD HP HOLE POINTER (IF FOUND)
  6312. LJM SHLX RETURN
  6313. TITLE SPECIAL REQUEST BLOCK CATALOG ACCESS ROUTINES.
  6314. ACE SPACE 4,30
  6315. ** ACE - ACCESS CATALOG ENTRY.
  6316. *
  6317. * READ A CATALOG ENTRY AND CHECK THE FOLLOWING INFORMATION -
  6318. * COMPARE THE USER INDEX WITH (PFFM+3 - PFFM+4).
  6319. * COMPARE THE CREATION DATE AND TIME WITH (PFCD - PFCD+2).
  6320. *
  6321. * ENTRY (EQ) = MASTER DEVICE EST ORDINAL.
  6322. * (CCIA) = CATALOG TRACK TO INTERLOCK.
  6323. * (CCIB) UPDATED IF CATALOG TRACK INTERLOCK ALREADY SET.
  6324. * (PFAS) = 36/ ALTERNATE STORAGE ADDRESS.
  6325. * (PFCD) = 36/ CREATION DATE AND TIME.
  6326. * (PFFM) = 42/FAMILY,18/USER INDEX.
  6327. * (PFID) = 4/,2/PEO,6/DN,12/TRACK,12/SECTOR.
  6328. *
  6329. * EXIT CATALOG SECTOR READ.
  6330. * CATALOG TRACK INTERLOCKED.
  6331. * (CB) = BUFFER ADDRESS OF CATALOG SECTOR.
  6332. * (CI) = POINTER TO CATALOG ENTRY.
  6333. * (T5) = MASTER DEVICE EST ORDINAL.
  6334. * (T6) = CATALOG TRACK.
  6335. * (T7) = CATALOG SECTOR.
  6336. *
  6337. * CALLS ICT, IRA, PDV, PES, RDS.
  6338. *
  6339. * USES CB, CI, T1, T5, T6, T7.
  6340. *
  6341. * MACROS COMPARE, ERROR, EXIT, SETMS.
  6342.  
  6343.  
  6344. ACE SUBR ENTRY/EXIT
  6345. LDC BUF1 SET CATALOG BUFFER ADDRESS
  6346. STD CB
  6347. ADN 2 INITIALIZE *PFC* ENTRY POINTER
  6348. STD CI
  6349. LDD EQ SET MASTER DEVICE EST ORDINAL
  6350. STD T5
  6351. LDM CCIA BASE TRACK ADDRESS
  6352. STD T6
  6353. SETMS IO
  6354. RJM PDV PROCESS DEVICE STATUS
  6355. LDM CCIB CHECK CATALOG INTERLOCK FLAG
  6356. LPN 77
  6357. NJN ACE1 IF CATALOG ALREADY INTERLOCKED
  6358. LDD CC
  6359. LMN CCSP
  6360. ZJN ACE1 IF *STAGEPF* REQUEST
  6361. RJM ICT INTERLOCK CATALOG TRACK
  6362. AOM CCIB SET CATALOG TRACK INTERLOCK FLAG
  6363. ACE1 RJM IRA INITIALIZE RANDOM PROCESSORS
  6364. LDM PFID+1 SET TRACK ADDRESS FOR READ
  6365. STM -2,CB
  6366. STD T6
  6367. STM ERRC
  6368. LDM PFID+2 SET SECTOR ADDRESS FOR READ
  6369. STM -1,CB
  6370. STD T7
  6371. STM ERRD
  6372. LDD CB READ THE CATALOG SECTOR
  6373. RJM RDS
  6374. PJN ACE3 IF NO READ ERROR
  6375. RJM PES PROCESS ERROR STATUS
  6376. ACE2 ERROR MSE,,,T5 *EQXXX,DNYY, MASS STORAGE ERROR.*
  6377.  
  6378. * SETUP *PFC* ENTRY POINTER BASED ON THE *PEO* VALUE.
  6379.  
  6380. ACE3 LDM 1,CB CHECK SECTOR LENGTH
  6381. LPN NWCE-1
  6382. ZJN ACE4 IF LEGAL SECTOR LENGTH
  6383. ERROR BCS,,,T5,,EI *EQXXX,DNYY, BAD CATALOG/PERMIT SECTOR.*
  6384.  
  6385. ACE4 LDM PFID ISOLATE *PEO* VALUE
  6386. SHN -6
  6387. LPN 1S"NWCEM"-1
  6388. SHN NWCES FORM *PFC* BIAS
  6389. STD T1
  6390. SHN 2
  6391. ADD T1
  6392. RAD CI
  6393. LDD T1 CHECK *PEO* OFFSET
  6394. SBM 1,CB
  6395. PJN ACE5 IF INVALID *PEO* VALUE
  6396.  
  6397. * VERIFY *PFC* ENTRY INFORMATION.
  6398.  
  6399. LDM FCUI+1,CI COMPARE LSB OF USER INDEX
  6400. LMM PFFM+4
  6401. ZJN ACE6 IF MATCH
  6402. ACE5 ERROR PVE *PFC VERIFICATION ERROR.*
  6403.  
  6404. ACE6 LDM FCUI,CI COMPARE MSB OF USER INDEX
  6405. LMM PFFM+3
  6406. LPN 77
  6407. NJN ACE5 IF USER INDEX DOES NOT MATCH
  6408. COMPARE PFCD,FCCD CREATION DATE/TIME
  6409. NJN ACE5 IF CREATION DATE/TIME DOES NOT MATCH
  6410. LJM ACEX EXIT
  6411. COF SPACE 4,15
  6412. ** COF - COMPARE FIELD OF 36 BITS.
  6413. *
  6414. * ENTRY (A) = PFC ENTRY OFFSET TO OBJECT FIELD.
  6415. * (CI) = PFC ENTRY ADDRESS.
  6416. * (T1) = SECONDARY FIELD FOR COMPARE.
  6417. *
  6418. * EXIT (A) = 0 IF FIELDS ARE THE SAME.
  6419. *
  6420. * USES T1, T2, T3.
  6421.  
  6422.  
  6423. COF SUBR ENTRY/EXIT
  6424. ADD CI SET PRIMARY COMPARE FIELD ADDRESS
  6425. STD T2
  6426. LDN 3 SET NUMBER OF WORDS TO COMPARE
  6427. STD T3
  6428.  
  6429. * LOOP COMPARING THE TWO FIELDS.
  6430.  
  6431. COF1 LDI T1 SECONDARY FIELD
  6432. LMI T2 PRIMARY FIELD
  6433. NJN COFX IF FIELDS DO NOT MATCH
  6434. AOD T1 ADVANCE SECONDARY FIELD POINTER
  6435. AOD T2 ADVANCE PRIMARY FIELD POINTER
  6436. SOD T3
  6437. ZJN COFX IF ALL FIELDS COMPARE
  6438. UJN COF1 CONTINUE FIELD COMPARE
  6439. RSC SPACE 4,10
  6440. ** RSC - READ CATALOG ENTRY, SEARCH CATALOG IF NECESSARY.
  6441. *
  6442. * CALLS ACE, SCH.
  6443. *
  6444. * MACROS ERROR.
  6445.  
  6446.  
  6447. RSC SUBR ENTRY/EXIT
  6448. LDM PFRB
  6449. LPN 37
  6450. ADM PFRB+1
  6451. NJN RSC1 IF SPECIAL REQUEST BLOCK SPECIFIED
  6452. RJM SCH SEARCH CATALOG
  6453. ZJN RSCX IF FILE FOUND
  6454. ERROR FNF * (FILENAME) NOT FOUND. *
  6455.  
  6456. RSC1 RJM ACE ACCESS CATALOG ENTRY
  6457. UJN RSCX RETURN
  6458. RVC SPACE 4,10
  6459. ** RVC - READ AND VERIFY CATALOG ENTRY.
  6460. *
  6461. * EXIT (CB) = CATALOG BUFFER.
  6462. * (CI) = CATALOG POINTER.
  6463. *
  6464. * CALLS ACE.
  6465. *
  6466. * MACROS COMPARE, ERROR.
  6467.  
  6468.  
  6469. RVC SUBR ENTRY/EXIT
  6470. RJM ACE ACCESS CATALOG ENTRY
  6471. LDM STAT
  6472. LPK STTA
  6473. NJN RVC2 IF TAPE ALTERNATE STORAGE REQUEST
  6474.  
  6475. * VERIFY CARTRIDGE ALTERNATE STORAGE ADDRESS.
  6476.  
  6477. COMPARE PFAA,FCAA VERIFY ALTERNATE STORAGE ADDRESS
  6478. NJN RVC1 IF NO MATCH ON ALTERNATE STORAGE ADDRESS
  6479. LDM PFAT VERIFY ALTERNATE STORAGE TYPE
  6480. LMM FCAT,CI
  6481. LPN 77
  6482. ZJN RVCX IF ALTERNATE STORAGE TYPES MATCH
  6483. RVC1 ERROR PVE * PFC VERIFICATION ERROR.*
  6484.  
  6485. * VERIFY TAPE ALTERNATE STORAGE ADDRESS.
  6486.  
  6487. RVC2 COMPARE PFTS+1,FCTS+1 VERIFY TAPE SEQUENCE NUMBER AND VSN
  6488. NJN RVC1 IF NO MATCH
  6489. LDM PFTS VERIFY TAPE SEQUENCE NUMBER
  6490. LMM FCTS,CI
  6491. LPN 77
  6492. NJN RVC1 IF TAPE SEQUENCE NUMBER DOES NOT MATCH
  6493. UJP RVCX RETURN
  6494. SPACE 4,10
  6495. * CHECK FOR ZERO-LEVEL OVERLAY OVERFLOW.
  6496.  
  6497.  
  6498. ERRNG *-OVL0-ZBFL *0BF* OVERFLOW
  6499. ERRNG *-OVL0-ZDFL *0DF* OVERFLOW
  6500. TITLE REQUEST PREPROCESSORS.
  6501. APP SPACE 4,10
  6502. *** APP - *APPEND* REQUEST.
  6503.  
  6504.  
  6505. APP BSS 0 ENTRY
  6506.  
  6507. * INITIALIZE FOR CATALOG SEARCH.
  6508.  
  6509. LDD LF CHECK FILE SIZE
  6510. NJN APP1 IF FILE TOO LARGE FOR HOLE
  6511. ISTORE SCHI,(UJN SCH13) SET FOR LARGEST HOLE SEARCH
  6512. ISTORE SCHF,(ZJN SCH12) SET FOR HOLE SEARCH
  6513. APP1 RJM SCH SEARCH CATALOG
  6514. ZJN APP2 IF FILE FOUND
  6515. ERROR FNF *(FILE NAME) NOT FOUND.*
  6516.  
  6517. * COMPUTE LENGTH OF NEW FILE.
  6518.  
  6519. APP2 LDD LF SAVE LENGTH OF APPENDAGE
  6520. STM APLF
  6521. LDD LF+1
  6522. STM APLF+1
  6523. LDM FCLF+1,CI CALCULATE TOTAL LENGTH OF NEW FILE
  6524. RAD LF+1
  6525. SHN -14
  6526. ADM FCLF,CI
  6527. RAD LF
  6528. SHN -5
  6529. NJN APP3 IF FILE LENGTH .GE. 131072D SECTORS
  6530. LDD LF CHECK FOR .GT. 131069D SECTORS
  6531. SHN 14
  6532. ADD LF+1
  6533. ADN 2 ADD SYSTEM AND EOI SECTORS
  6534. MJN APP3 IF FILE .GT. 131069D SECTORS
  6535. LDM MXFS
  6536. ZJN APP4 IF NO LIMIT ON FILE SIZE
  6537. LDD LF
  6538. SHN -3
  6539. NJN APP3 IF FILE SIZE .GT. MAXIMUM FILE SIZE LIMIT
  6540. LDD LF
  6541. SHN 14
  6542. ADD LF+1
  6543. ADN 7
  6544. SHN -3
  6545. SBM MXFS
  6546. MJN APP4 IF FILE NOT TOO LARGE
  6547. ZJN APP4 IF FILE NOT TOO LARGE
  6548. APP3 LDN STAB SET TO ABORT AFTER PERMISSION CHECK
  6549. RAM STAT
  6550. APP4 LDM FCBT,CI SAVE ADDRESS OF OLD FILE
  6551. STM APTK
  6552. LDM FCBS,CI
  6553. STM APSC
  6554. LDD LF
  6555. ZJN APP6 IF NEW FILE SHORT ENOUGH TO PLUG HOLE
  6556. ISTORE SCHF,(PSN) TURN OFF HOLE SEARCH
  6557. UJN APP7 CLEAR HOLE POINTERS
  6558.  
  6559. APP6 LDD HL CHECK SIZE OF HOLE FOUND
  6560. ZJN APP8 IF NO HOLE FOUND
  6561. SBD LF+1
  6562. ZJN APP9 IF EXACT FIT, BYPASS HOLE SEARCH
  6563. SBK MNHS
  6564. PJN APP8 IF HOLE LONG ENOUGH FOR FILE AND NEW HOLE
  6565. APP7 LDN 0 CLEAR HOLE POINTERS
  6566. STD HP
  6567. STD HB
  6568. STD HL
  6569. APP8 ISTORE SCHI,(ZJN SCH17) TURN ON SEARCH FOR EXACT FIT
  6570. RJM SCH CONTINUE SEARCH FOR BEST HOLE
  6571. NJN APP9 IF DUPLICATE FILE NOT FOUND
  6572. ERROR RPE,,,EQ *EQXXX,DNYY, REPLACE ERROR.*
  6573.  
  6574. * SEARCH PERMITS.
  6575.  
  6576. APP9 RJM CCT CHECK FOR CPU TRANSFER
  6577. RJM SDB SWAP DISK BUFFERS (IF NECESSARY)
  6578. RJM SSP SET STATISTICAL PARAMETERS
  6579. LDN 0 CLEAR PERMIT POINTERS
  6580. STD PB
  6581. STD PP
  6582.  
  6583. * READ PERMITS.
  6584.  
  6585. LDN PTAP CHECK FOR APPEND PERMISSION
  6586. RJM CPI
  6587. RJM VFI VERIFY THAT FILE IS INDIRECT ACCESS
  6588. RJM DSR DETERMINE IF FILE STAGING REQUIRED
  6589. LJM LCO CALL OVERLAY
  6590. ATT SPACE 4,10
  6591. *** ATT - *ATTACH* REQUEST.
  6592.  
  6593.  
  6594. ATT BSS 0 ENTRY
  6595. RJM SCH SEARCH CATALOG
  6596. ZJN ATT2 IF FILE FOUND
  6597. ERROR FNF *(FILE NAME) NOT FOUND.*
  6598.  
  6599. * VERIFY PERMISSIONS FOR ACCESS.
  6600.  
  6601. ATT2 LDM MODE
  6602. RJM CPI
  6603. LDM FCBS,CI CHECK FILE TYPE
  6604. SHN 21-13
  6605. MJN ATT3 IF DIRECT ACCESS FILE
  6606. ERROR FIA *(FILE NAME) IS INDIRECT ACCESS.*
  6607.  
  6608. ATT3 RJM DSR DETERMINE IF FILE STAGING IS REQUIRED
  6609. LJM LCO CALL OVERLAY
  6610. CHG SPACE 4,10
  6611. *** CHG - *CHANGE* REQUEST.
  6612.  
  6613.  
  6614. CHG BSS 0 ENTRY
  6615. LJM LCO CALL OVERLAY
  6616. DDS SPACE 4,10
  6617. *** DDS - *DROPDS* REQUEST.
  6618.  
  6619.  
  6620. DDS BSS 0 ENTRY
  6621. RJM RSC READ CATALOG ENTRY, SEARCH IF NECESSARY
  6622. LDM FCBT,CI
  6623. NJN DDS1 IF FILE DISK RESIDENT
  6624. ENDMS
  6625. EXECUTE 3PU TERMINATE *PFM*
  6626.  
  6627. DDS1 LDM FCBS,CI
  6628. SHN 21-13
  6629. MJN DDS2 IF DIRECT ACCESS FILE
  6630. LDN CCDI PROCESS AS *DROPIDS* REQUEST
  6631. STD CC
  6632. LDC PRDI SET REQUEST PROCESSOR ADDRESS
  6633. STM LCOA
  6634. LDC OVDI SET OVERLAY INTO *EXECUTE* MACRO
  6635. STM LCOB
  6636. LJM DIS2 PROCESS AS *DROPIDS* REQUEST
  6637.  
  6638. DDS2 LJM LCO LOAD OVERLAY
  6639. DIS SPACE 4,10
  6640. *** DIS - *DROPIDS* REQUEST.
  6641.  
  6642.  
  6643. DIS BSS 0 ENTRY
  6644. RJM RSC READ CATALOG ENTRY, SEARCH IF NECESSARY
  6645. LDM FCBT,CI
  6646. NJN DIS1 IF FILE DISK RESIDENT
  6647. ENDMS
  6648. EXECUTE 3PU TERMINATE *PFM*
  6649.  
  6650. DIS1 LDM FCBS,CI
  6651. SHN 21-13
  6652. PJN DIS2 IF INDIRECT ACCESS FILE
  6653. LDN CCDD PROCESS AS *DROPDS* REQUEST
  6654. STD CC
  6655. LDC PRDD SET REQUEST PROCESSOR ADDRESS
  6656. STM LCOA
  6657. LDC OVDD SET OVERLAY INTO *EXECUTE* MACRO
  6658. STM LCOB
  6659. UJN DDS2 PROCESS AS *DROPDS* REQUEST
  6660.  
  6661. DIS2 ISTORE SCHH,(UJN SCH16) SEARCH ONLY DAPF HOLES
  6662. RJM SHL SEARCH CATALOG FOR DAPF HOLE
  6663. ZJN DIS3 IF DELETED DAPF HOLE NOT FOUND
  6664. LDN 0 CLEAR DAPF HOLE INDICATOR
  6665. STM FCBS,HP
  6666. STM FCBT,HP CLEAR TRACK
  6667. DIS3 LJM LCO CALL OVERLAY
  6668. DEF SPACE 4,10
  6669. *** DEF - *DEFINE* REQUEST.
  6670.  
  6671.  
  6672. DEF BSS 0 ENTRY
  6673. ISTORE SCHF,(ZJN SCH12) SET TO SEARCH FOR HOLES
  6674. ISTORE SCHH,(UJN SCH16) SEARCH FOR DIRECT ACCESS HOLES ONLY
  6675. LDC BFMS SET ADDRESS OF CATALOG SEARCH BUFFER
  6676. STM ISPA
  6677. DEF1 LDD FS SET EST ORDINAL
  6678. STD T5
  6679. RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
  6680. LDM SDAB SET FIRST SECTOR
  6681. STD T6
  6682. RJM SEI DETERMINE FILE SECTOR SIZE
  6683. LDD T2 PRESERVE SECTOR SIZE
  6684. STD LF
  6685. LDD T3
  6686. STD LF+1
  6687. LDD CC
  6688. LMN CCSD
  6689. ZJN DEF2 IF *SETDA* REQUEST
  6690. RJM SCH SEARCH CATALOG
  6691. NJN DEF3 IF NO FILE FOUND
  6692. ERROR FAP *(FILE NAME) ALREADY PERMANENT.*
  6693.  
  6694. * PROCESS *SETDA* REQUEST.
  6695.  
  6696. DEF2 RJM RVC READ AND VERIFY CATALOG ENTRY
  6697. DEF3 LJM LCO CALL OVERLAY
  6698. DPF SPACE 4,10
  6699. *** DPF - *DELPFC* REQUEST.
  6700.  
  6701.  
  6702. DPF BSS 0 ENTRY
  6703. LDC IFUI SET *IFUI* USER INDEX INTO SRB
  6704. STM PFFM+4
  6705. LDM PFFM+3
  6706. SCN 77
  6707. LMN IFUI/10000B
  6708. STM PFFM+3
  6709. RJM ACE ACCESS CATALOG ENTRY
  6710. LJM LCO LOAD COMMAND OVERLAY
  6711. GET SPACE 4,10
  6712. *** GET - *GET* REQUEST.
  6713.  
  6714.  
  6715. GET BSS 0 ENTRY
  6716. RJM SCH SEARCH CATALOG
  6717. ZJN GET1 IF FILE FOUND
  6718. ERROR FNF *(FILENAME) NOT FOUND.*
  6719.  
  6720. GET1 LDM FCLF,CI SET FILE LENGTH
  6721. STD LF
  6722. LDM FCLF+1,CI
  6723. STD LF+1
  6724. RJM CCT CHECK FOR CPU TRANSFER
  6725. LDN PTEX EXECUTE MODE REQUIRED FOR *GET*
  6726. RJM CPI CHECK PERMISSION INFORMATION
  6727. STM ACCM SAVE ACTUAL ACCESS MODE
  6728. RJM VFI VERIFY THAT FILE IS INDIRECT ACCESS
  6729. RJM DSR DETERMINE IF FILE STAGING REQUIRED
  6730. LJM LCO CALL OVERLAY
  6731. OLD SPACE 4,10
  6732. *** OLD - *OLD* REQUEST.
  6733.  
  6734.  
  6735. OLD EQU GET USE *GET* PRESET FOR *OLD* REQUEST
  6736. PER SPACE 4,10
  6737. *** PER - *PERMIT* REQUEST.
  6738.  
  6739.  
  6740. PER BSS 0 ENTRY
  6741. ISTORE CCDA,(UJN CCD4) SET BYPASS OF PASSWORD CHECK
  6742. RJM SCH SEARCH CATALOG
  6743. ZJN PER2 IF FILE FOUND
  6744. ERROR FNF * (FILENAME) NOT FOUND.*
  6745.  
  6746. PER2 LDD MA SET USER NAME
  6747. CWM PFOU,ON
  6748. SBN 1
  6749. CRM PFAC,ON
  6750. LDN 0 CLEAR PERMIT POINTER
  6751. STD PP
  6752. LDC BFMS SET PERMIT BUFFER ADDRESS
  6753. STD PB
  6754. LDM FCRI,CI SET PERMIT RANDOM INDEX
  6755. STD RI
  6756. LDM FCRI+1,CI
  6757. STD RI+1
  6758. ADD RI
  6759. ZJN PER4 IF NO PERMIT DATA AVAILABLE
  6760. RJM SPI SEARCH PERMIT INFORMATION
  6761. PER4 LJM LCO CALL OVERLAY
  6762. PUR SPACE 4,10
  6763. *** PUR - *PURGE* REQUEST.
  6764.  
  6765.  
  6766. PUR BSS 0 ENTRY
  6767. RJM RSC READ CATALOG ENTRY, SEARCH IF NECESSARY
  6768. LDM PFRB
  6769. LPN 37
  6770. ADM PFRB+1
  6771. NJN PUR1 IF SPECIAL REQUEST BLOCK SPECIFIED
  6772. LDN PTWR WRITE PERMISSON NEEDED FOR PURGE
  6773. RJM CPI CHECK PERMISSION INFORMATION
  6774. PUR1 LJM LCO CALL OVERLAY
  6775. REP SPACE 4,10
  6776. *** REP - *REPLACE* REQUEST.
  6777.  
  6778.  
  6779. REP BSS 0 ENTRY
  6780. LDD LF
  6781. NJN REP1 IF FILE LARGER THAN HOLES
  6782. ISTORE SCHF,(ZJN SCH12) SET TO SEARCH FOR HOLES
  6783. REP1 RJM SCH SEARCH FOR CATALOG ENTRY
  6784. ZJP REP5 IF FILE IS FOUND
  6785. LDD CP CHECK USER VALIDATION
  6786. ADK AACW
  6787. CRD CM
  6788. LDD CM+4
  6789. SHN 21-3
  6790. PJN REP2 IF USER MAY NOT CREATE INDIRECT FILES
  6791. SHN 21-10-21+3+22
  6792. MJN REP3 IF USER MAY ACCESS AUXILIARY DEVICE
  6793. LDM PFPN
  6794. ZJN REP3 IF AUXILIARY DEVICE NOT SPECIFIED
  6795. REP2 ERROR IUA *USER ACCESS NOT VALID.*
  6796.  
  6797. REP3 LDD PI CHECK FOR ALTERNATE CATALOG ACCESS
  6798. ADD PI+1
  6799. ZJN REP4 IF NOT ALTERNATE CATALOG ACCESS
  6800. ERROR FNF *(FILE NAME) NOT FOUND.*
  6801.  
  6802. REP4 LDC PRSV PROCESS AS *SAVE* REQUEST
  6803. STM LCOA SET PROCESSOR ADDRESS
  6804. LDC OVSV
  6805. STM LCOB SET OVERLAY NAME FOR *SAVE* REQUEST
  6806. LJM SAV2 PROCESS REQUEST AS *SAVE*
  6807.  
  6808. REP5 LDN 0 SET ENTRY AS HOLE
  6809. STM FCUI,CI
  6810. STM FCUI+1,CI
  6811. LDM FCBT,CI FIRST TRACK OF FILE
  6812. ZJN REP7 IF FILE NOT DISK RESIDENT
  6813.  
  6814. * CHECK SIZE OF HOLE CREATED BY REPLACE.
  6815.  
  6816. LDM FCLF,CI
  6817. SBD LF
  6818. SHN 14
  6819. ADM FCLF+1,CI
  6820. SBD LF+1
  6821. NJN REP6 IF NOT EXACT FIT
  6822. LDD CI SET THIS ENTRY AS HOLE FOUND
  6823. STD HP
  6824. LDD CB
  6825. STD HB
  6826. LDD LF+1
  6827. STD HL
  6828. UJN REP8 BYPASS HOLE SEARCH
  6829.  
  6830. REP6 LDM FCLF,CI CHECK LENGTH OF FILE BEING REPLACED
  6831. NJN REP7 IF FILE TOO LONG TO BE USED AS HOLE
  6832. LDC SCH11 INCLUDE THIS FILE IN HOLE SEARCH
  6833. STM SCHB
  6834. REP7 RJM SCH CONTINUE SEARCH FOR BEST HOLE
  6835. NJN REP8 IF DUPLICATE FILE NOT FOUND
  6836. ERROR RPE,,,EQ *EQXXX,DNYY, REPLACE ERROR.*
  6837.  
  6838. * SEARCH PERMITS.
  6839.  
  6840. REP8 RJM CCT CHECK FOR CPU TRANSFER
  6841. RJM SDB SWAP DISK BUFFERS (IF NECESSARY)
  6842. RJM SSP SET STATISTICAL PARAMETERS
  6843. LDN 0 CLEAR PERMIT POINTERS
  6844. STD PB
  6845. STD PP
  6846. LDN PTWR CHECK FOR WRITE PERMISSION
  6847. RJM CPI CHECK PERMISSION INFORMATION
  6848. LJM LCO CALL OVERLAY
  6849. SAA SPACE 4,10
  6850. *** SAA - *SETASA* REQUEST.
  6851.  
  6852.  
  6853. SAA BSS 0 ENTRY
  6854. RJM ACE ACCESS CATALOG ENTRY
  6855. LJM LCO CALL OVERLAY
  6856. SAC SPACE 4,10
  6857. *** SAC - *SETPFAC* REQUEST.
  6858.  
  6859.  
  6860. SAC EQU CHG USE *CHANGE* PRESET FOR *SETPFAC* REQUEST
  6861. SAF SPACE 4,10
  6862. *** SAF - *SETAF* REQUEST.
  6863.  
  6864.  
  6865. SAF BSS 0 ENTRY
  6866. RJM RVC READ AND VERIFY CATALOG ENTRY
  6867. LJM LCO CALL OVERLAY
  6868. SAL SPACE 4,10
  6869. *** SAL - *SETPFAL* REQUEST.
  6870.  
  6871.  
  6872. SAL EQU CHG USE *CHANGE* PRESET FOR *SETPFAL* REQUEST
  6873. SAV SPACE 4,10
  6874. *** SAV - *SAVE* REQUEST.
  6875.  
  6876.  
  6877. SAV BSS 0 ENTRY
  6878. LDD LF
  6879. NJN SAV1 IF FILE LARGER THAN HOLES
  6880. ISTORE SCHF,(ZJN SCH12) SET TO SEARCH FOR HOLES
  6881. SAV1 RJM SCH SEARCH FOR CATALOG ENTRY
  6882. NJN SAV2 IF FILE NOT FOUND
  6883. ERROR FAP *FILE ALREADY PERMANENT.*
  6884.  
  6885. SAV2 AOD NF+1 ADVANCE FILE COUNT FOR NEW FILE
  6886. SHN -14
  6887. RAD NF
  6888. RJM SSP SET STATISTICAL PARAMETERS
  6889. SAV3 RJM CCT CHECK FOR CPU TRANSFER
  6890. LJM LCO CALL OVERLAY
  6891. SDA SPACE 4,10
  6892. *** SDA - *SETDA* REQUEST.
  6893.  
  6894.  
  6895. SDA EQU DEF1 USE *DEFINE* PRESET FOR *SETDA* REQUEST
  6896. SPF SPACE 4,10
  6897. *** SPF - *STAGEPF* REQUEST.
  6898.  
  6899.  
  6900. SPF BSS 0 ENTRY
  6901. RJM ACE ACCESS CATALOG ENTRY
  6902. LDM FCBT,CI
  6903. NJN SPF1 IF FILE ALREADY DISK RESIDENT
  6904. LJM LCO LOAD COMMAND OVERLAY
  6905.  
  6906. SPF1 ENDMS
  6907. EXECUTE 3PU TERMINATE *PFM*
  6908. UAT SPACE 4,10
  6909. *** UAT - *UATTACH* REQUEST.
  6910.  
  6911.  
  6912. UAT BSS 0 ENTRY
  6913. RJM RSC READ CATALOG ENTRY, SEARCH IF NECESSARY
  6914. LDM FCBS,CI
  6915. SHN 21-13
  6916. MJN UAT2 IF DIRECT ACCESS FILE
  6917. ERROR FIA *FILE IS INDIRECT ACCESS.*
  6918.  
  6919. UAT2 LDM FCBT,CI
  6920. NJP LCO IF FILE DISK RESIDENT
  6921. ERROR FND *FILE NOT DISK RESIDENT.*
  6922. UGT SPACE 4,10
  6923. *** UGT - *UGET* REQUEST.
  6924.  
  6925.  
  6926. UGT BSS 0 ENTRY
  6927. RJM RSC READ CATALOG ENTRY, SEARCH IF NECESSARY
  6928. UJN LCO CALL OVERLAY
  6929. URE SPACE 4,10
  6930. *** URE - *UREPLAC* REQUEST.
  6931.  
  6932.  
  6933. URE BSS 0 ENTRY
  6934. RJM RVC READ AND VERIFY CATALOG ENTRY
  6935. LDD CI SAVE PFC ADDRESS
  6936. STM PFCA
  6937. ADN FCFN SET FILE NAME TO CURRENT PFN
  6938. RJM SFN
  6939. RJM VFI VERIFY THAT FILE IS INDIRECT ACCESS
  6940. LDM FCBT,CI
  6941. ZJN URE2 IF NOT DISK RESIDENT
  6942. ERROR ICU * INVALID CATALOG UPDATE.*
  6943.  
  6944. URE2 LDD LF
  6945. NJN URE3 IF FILE LONGER THAN LARGEST HOLE
  6946. RJM SHL SEARCH CATALOG FOR HOLE
  6947. RJM SDB SWAP DISK BUFFERS
  6948. URE3 UJN LCO CALL OVERLAY
  6949. TITLE LOAD OVERLAY PROCESSOR.
  6950. LCO SPACE 4,10
  6951. ** LCO - LOAD COMMAND OVERLAY.
  6952. *
  6953. * EXIT TO COMMAND OVERLAY.
  6954. *
  6955. * MACROS ENDMS, EXECUTE.
  6956.  
  6957.  
  6958. LCO BSS 0 ENTRY
  6959. ENDMS RELEASE MASTER DEVICE CHANNEL
  6960. LDC * SET COMMAND PROCESSING ADDRESS
  6961. LCOA EQU *-1 (PROCESSING ADDRESS WITHIN OVERLAY)
  6962. STD P0
  6963. LCOB EQU *+1 (LAST TWO CHARACTERS OF OVERLAY NAME)
  6964. EXECUTE 3PF *GET*/*OLD*/*UGET*
  6965. EXECUTE 3PG,= *SAVE*/*REPLACE*/*UREPLAC*
  6966. EXECUTE 3PH,= *APPEND*
  6967. EXECUTE 3PI,= *ATTACH*/*UATTACH*
  6968. EXECUTE 3PK,= *DEFINE*/*SETDA*
  6969. EXECUTE 3PL,= *DROPDS*/*PURGE*
  6970. EXECUTE 3PM,= *DELPFC*/*DROPIDS*/*PERMIT*
  6971. EXECUTE 3PN,= *CHANGE*/*SETPFAC*/*SETPFAL*
  6972. EXECUTE 3PO,= *SETASA*/*SETAF*
  6973. EXECUTE 3PR,= STAGE FILE FROM ALTERNATE STORAGE
  6974. TITLE INITIALIZATION SUBROUTINES.
  6975. CCT SPACE 4,15
  6976. ** CCT - CHECK FOR CPU TRANSFER.
  6977. *
  6978. * ENTRY (LF - LF+1) = FILE LENGTH + 1.
  6979. *
  6980. * EXIT (CPTF) = NONZERO IF CPU SHOULD BE USED FOR TRANSFER.
  6981. * (FA) = FNT ADDRESS FOR LOCAL FILE.
  6982. * (FN - FN+4) = PERMANENT FILE NAME.
  6983. * (FS - FS+4) = FST ENTRY FOR LOCAL FILE.
  6984. *
  6985. * USES FA, CM - CM+4, FS - FS+4.
  6986. *
  6987. * CALLS CLF, RMD, SFN.
  6988. *
  6989. * MACROS ENDMS.
  6990.  
  6991.  
  6992. CCT SUBR ENTRY/EXIT
  6993.  
  6994. * CHECK IF CALLER IS *DMP=*, SUBSYSTEM OR UCP.
  6995.  
  6996. LDD CP
  6997. ADK SPCW
  6998. CRD CM
  6999. LDD CM+1
  7000. SCN 77
  7001. ADD CM
  7002. NJN CCTX IF *DMP=* PROGRAM IN PROGRESS
  7003. LDD CP
  7004. ADK JCIW
  7005. CRD CM
  7006. LDD CM+2
  7007. SBK LSSI
  7008. PJN CCTX IF CALLER IS A SUBSYSTEM
  7009. LDD CP
  7010. ADK SSCW
  7011. CRD CM
  7012. LDD CM
  7013. ADD CM+1
  7014. ADD CM+2
  7015. ADD CM+3
  7016. ADD CM+4
  7017. NJN CCTX IF CALLER IS A UCP
  7018.  
  7019. * CHECK IF FILE SIZE .GE. THRESHOLD.
  7020.  
  7021. LDK PFNL CHECK CPU TRANSFER THRESHOLD
  7022. CRD CM
  7023. LDD CM+4
  7024. ZJN CCTX IF CPU TRANSFER DISABLED
  7025. SBD LF+1
  7026. SBN 1
  7027. MJN CCT1 IF FILE LONG ENOUGH
  7028. LDD LF
  7029. ZJP CCTX IF FILE NOT LONG ENOUGH
  7030.  
  7031. * SET UP FOR CPU TRANSFER.
  7032.  
  7033. CCT1 ENDMS RELEASE CHANNEL
  7034. AOM CPTF SET *CPU TRANSFER* FLAG
  7035. LDC CCTA CREATE LOCAL FILE /PFM*PFN/
  7036. RJM CLF
  7037. STM FNTB SAVE FNT ADDRESS
  7038. LDC CCTB CREATE LOCAL FILE /PFM*ILK/
  7039. RJM CLF
  7040. STM FNTC SAVE FNT ADDRESS
  7041. LDD CC
  7042. LMN CCAP
  7043. NJN CCT2 IF NOT *APPEND* REQUEST
  7044. LDC CCTC CREATE LOCAL FILE /PFM*APF/
  7045. RJM CLF
  7046. STM FNTD SAVE FNT ADDRESS
  7047.  
  7048. * RESET LOCAL FILE PARAMETERS AND MASTER DEVICE DRIVER.
  7049.  
  7050. CCT2 LDM FNTA RESET FNT ADDRESS
  7051. STD FA
  7052. NFA FA,R REREAD FST
  7053. ADN FSTL
  7054. CRD FS
  7055. LDM PFFN RESET PERMANENT FILE NAME
  7056. ZJN CCT3 IF PFN NOT SPECIFIED, USE LFN
  7057. LDN PFFN-PFSN
  7058. CCT3 ADC PFSN
  7059. RJM SFN SET FILE NAME
  7060. RJM RMD RESET TO MASTER DEVICE
  7061. UJP CCTX RETURN
  7062.  
  7063.  
  7064. CCTA VFD 60/7L"PFN"
  7065. CCTB VFD 60/7L"ILK"
  7066. CCTC VFD 60/7L"APF"
  7067. CLF SPACE 4,20
  7068. ** CLF - CREATE LOCAL FILE.
  7069. *
  7070. * CREATE AN FNT ENTRY FOR THE SPECIFIED LOCAL FILE,
  7071. * USING ONE OF THE SPECIAL RESERVED FNT ENTRIES.
  7072. * IF THE SPECIFIED LOCAL FILE IS ALREADY ASSIGNED TO
  7073. * THE JOB, RETURN THE FILE AND THEN CREATE A NEW FILE.
  7074. * IF A RESERVED FNT ENTRY WAS NOT FOUND, HANG.
  7075. *
  7076. * ENTRY (A) = ADDRESS OF FILE NAME.
  7077. *
  7078. * EXIT (A) = (FA) = FNT ADDRESS OF FILE.
  7079. * TO *HNG* IF RESERVED FNT ENTRY NOT FOUND.
  7080. *
  7081. * USES FS, FN - FN+4.
  7082. *
  7083. * CALLS *0BF*, *0DF*.
  7084. *
  7085. * MACROS EXECUTE, MONITOR.
  7086.  
  7087.  
  7088. CLF SUBR ENTRY/EXIT
  7089. STM CLFA SET FILE NAME ADDRESS
  7090. CLF1 LDD MA
  7091. CWM *,ON
  7092. CLFA EQU *-1
  7093. SBN 1
  7094. CRD FN SET FILE NAME
  7095. LDN 45 USE RESERVED FNT, RETURN ON FILE NOT MADE
  7096. STM OVL0-1
  7097. LDK NEEQ
  7098. STD FS
  7099. EXECUTE 0BF,OVL0 CREATE FILE
  7100. UJN CLF2 IF FILE NOT ALREADY ASSIGNED
  7101.  
  7102. * IF FILE ALREADY ASSIGNED, RETURN FILE.
  7103.  
  7104. LDN 1 *UNLOAD* EXISTING FILE
  7105. STM OVL0-1
  7106. EXECUTE 0DF,OVL0
  7107. UJN CLF1 CREATE NEW FILE
  7108.  
  7109. * CHECK FOR SUCCESSFUL FILE CREATION.
  7110.  
  7111. CLF2 NJN CLF3 IF FILE NOT CREATED
  7112. LDD FA
  7113. LJM CLFX RETURN
  7114.  
  7115. * HANG IF RESERVED FNT ENTRY NOT FOUND.
  7116.  
  7117. CLF3 RJM HNG HANG
  7118. DSR SPACE 4,15
  7119. ** DSR - DETERMINE IF FILE STAGING REQUIRED.
  7120. *
  7121. * ENTRY (CB) = CATALOG BUFFER ADDRESS.
  7122. * (CI) = CATALOG ENTRY POINTER.
  7123. *
  7124. * EXIT (LCOB) = *3PR*, IF STAGING REQUIRED.
  7125. *
  7126. * USES CM - CM+4.
  7127. *
  7128. * CALLS MCB.
  7129. *
  7130. * MACROS EXECUTE.
  7131.  
  7132.  
  7133. DSR SUBR ENTRY/EXIT
  7134. LDK SSTL GET FILE STAGING DISABLED STATUS
  7135. CRD CM
  7136. LDD CM
  7137. SHN 21-3
  7138. MJN DSR1 IF CARTRIDGE PF STAGING DISABLED
  7139. LDM FCAF,CI CHECK PSEUDO RELEASE FLAG
  7140. SHN 21-3
  7141. PJN DSR1 IF PSEUDO RELEASE NOT SET
  7142. SHN 21-0-21+3
  7143. PJN DSR2 IF CARTRIDGE COPY NOT OBSOLETE
  7144. DSR1 LDM FCBT,CI FIRST TRACK OF FILE
  7145. NJN DSRX IF FILE DISK RESIDENT
  7146. DSR2 EXECUTE 3PR,* STAGE FILE FROM TAPE OR CARTRIDGE
  7147. STM LCOB
  7148. RJM MCB MOVE CATALOG BUFFER (IF NECESSARY)
  7149. UJN DSRX RETURN
  7150. MCB SPACE 4,15
  7151. ** MCB - MOVE CATALOG BUFFER.
  7152. *
  7153. * MOVE THE CATALOG BUFFER INTO *BUF1*, IF THE CATALOG BUFFER
  7154. * IS CURRENTLY IN *BUF2*. THIS IS DONE TO ALLOW MORE SPACE
  7155. * FOR OVERLAY *3PR*. SINCE THE FILE MUST BE STAGED, NO OTHER
  7156. * BUFFERS ARE REQUIRED FOR THE CURRENT INVOCATION OF *PFM*.
  7157. *
  7158. * ENTRY (CB) = CATALOG BUFFER ADDRESS.
  7159. * (CI) = CATALOG ENTRY POINTER.
  7160. *
  7161. * EXIT CATALOG BUFFER COPIED INTO *BUF1*, IF NECESSARY.
  7162. * (CB), (CI) UPDATED.
  7163. *
  7164. * USES CB, CI, T1.
  7165.  
  7166.  
  7167. MCB SUBR ENTRY/EXIT
  7168. LDD CB CHECK CATALOG BUFFER ADDRESS
  7169. LMC BUF2
  7170. NJN MCBX IF CATALOG BUFFER IS NOT IN *BUF2*
  7171. LDC 501 SET BYTE COUNT
  7172. STD T1
  7173. MCB1 LDM BUF2-2,T1 MOVE NEXT BYTE
  7174. STM BUF1-2,T1
  7175. SOD T1
  7176. PJN MCB1 IF MORE BYTES TO MOVE
  7177. LDC BUF1-BUF2 ADJUST CATALOG ENTRY POINTER
  7178. RAD CI
  7179. LDC BUF1 RESET CATALOG BUFFER POINTER
  7180. STD CB
  7181. UJN MCBX RETURN
  7182. SDB SPACE 4,20
  7183. ** SDB - SWAP DISK BUFFERS.
  7184. *
  7185. * SWAP THE *END* BUFFER WITH THE *BFMS* BUFFER, IF THE HOLE
  7186. * BUFFER IS IN *BFMS*. THIS IS DONE SO THAT *BFMS* CAN BE
  7187. * REUSED FOR PERMITS (IF NECESSARY), AND LATER REREAD IF THE
  7188. * END BUFFER IS NEEDED. THIS ALSO ALLOWS *REB* TO LATER READ
  7189. * THE DAPF HOLE ENTRY (IF PRESENT) INTO *BFMS*, AND TO THEN
  7190. * DESIGNATE *BFMS* AS THE END BUFFER. THE VARIOUS POINTERS
  7191. * AND DISK ADDRESSES ASSOCIATED WITH THE BUFFERS ARE ALSO
  7192. * SWAPPED.
  7193. *
  7194. * ENTRY (CB) = ADDRESS OF CATALOG BUFFER.
  7195. * (EB) = ADDRESS OF BUFFER CONTAINING END OF CATALOGS.
  7196. * (EP) = POINTER TO NEXT PFC SLOT AVAILABLE FOR USE.
  7197. * (HB) = ADDRESS OF HOLE BUFFER, IF ANY.
  7198. * (HP) = POINTER TO HOLE ENTRY, IF ANY.
  7199. *
  7200. * EXIT (EBSC) = END BUFFER SECTOR, IF BUFFER IS IN *BFMS*.
  7201. * (EBTK) = END BUFFER TRACK, IF BUFFER IS IN *BFMS*.
  7202. * BUFFERS SWAPPED.
  7203. * BUFFER ADDRESSES AND POINTERS RESET.
  7204. *
  7205. * USES EB, EP, HB, HP, T1, T2, T3.
  7206.  
  7207.  
  7208. SDB5 LDD EB
  7209. LMC BFMS
  7210. NJN SDBX IF END BUFFER IS NOT IN *BFMS*
  7211. LDM BFMS-2 INDICATE THAT END BUFFER IS IN *BFMS*
  7212. STM EBTK
  7213. LDM BFMS-1
  7214. STM EBSC
  7215.  
  7216. SDB SUBR ENTRY/EXIT
  7217. LDD HP
  7218. ZJN SDBX IF NO HOLE FOUND
  7219. LDD HB
  7220. LMC BFMS
  7221. NJN SDB5 IF HOLE NOT IN *BFMS*
  7222.  
  7223. * DETERMINE WHICH BUFFER TO SWAP.
  7224.  
  7225. LDD CB
  7226. LMC BUF1
  7227. ZJN SDB1 IF CATALOG IS IN *BUF1*
  7228. LDC BUF1-BUF2 SWAP *BFMS* WITH *BUF1*
  7229. SDB1 ADC BUF2 SWAP *BFMS* WITH *BUF2*
  7230. STD T1 SET BUFFER ADDRESSES
  7231. SBN 2
  7232. STM SDBA
  7233. STM SDBB
  7234. LDC 503B MOVE BUFFER PLUS DISK ADDRESS
  7235. STD T2
  7236.  
  7237. * SWAP BUFFERS.
  7238.  
  7239. SDB2 LDM BFMS-2,T2 SWAP ONE PAIR OF BYTES
  7240. STD T3
  7241. LDM *-2,T2
  7242. SDBA EQU *-1 (ADDRESS OF BUFFER - 2)
  7243. STM BFMS-2,T2
  7244. LDD T3
  7245. STM *-2,T2
  7246. SDBB EQU *-1 (ADDRESS OF BUFFER - 2)
  7247. SOD T2
  7248. PJN SDB2 IF MORE BYTES TO SWAP
  7249.  
  7250. * RESET POINTERS TO BUFFERS WHICH HAVE BEEN MOVED.
  7251.  
  7252. LDD T1 RESET HOLE POINTERS
  7253. SBD HB
  7254. RAD HP
  7255. LDD T1
  7256. STD HB
  7257. LDD EB
  7258. LMD T1
  7259. NJN SDB3 IF END OF CATALOGS IS IN HOLE BUFFER
  7260. LDC BFMS RESET END POINTERS TO POINT TO *BFMS*
  7261. STD T1
  7262. SDB3 LDD EP RESET END POINTERS
  7263. ZJN SDB4 IF END SECTOR IS EOI
  7264. SBD EB
  7265. ADD T1
  7266. STD EP
  7267. SDB4 LDD T1
  7268. STD EB
  7269. UJP SDB5 RETURN
  7270. SSP SPACE 4,10
  7271. ** SSP - SET STATISTICAL PARAMETERS.
  7272. *
  7273. * ENTRY (NF - NF+1) = NUMBER OF FILES.
  7274. * (CS - CS+1) = CUMULATIVE SIZE OF INDIRECT FILES.
  7275. *
  7276. * EXIT (ACNF - ACNF+1) SET WITH NUMBER OF FILE.
  7277. * (CIFS - CIFS+1) SET WITH CUMULATIVE SIZE OF FILES.
  7278.  
  7279.  
  7280. SSP SUBR ENTRY/EXIT
  7281. LDD CS
  7282. STM CIFS
  7283. LDD CS+1
  7284. STM CIFS+1
  7285. LDD NF
  7286. STM ACNF
  7287. LDD NF+1
  7288. STM ACNF+1
  7289. UJN SSPX EXIT
  7290. VFI SPACE 4,10
  7291. ** VFI - VERIFY THAT FILE IS INDIRECT ACCESS.
  7292. *
  7293. * EXIT TO *ERR* IF FILE IS DIRECT ACCESS.
  7294. *
  7295. * MACROS ERROR.
  7296.  
  7297.  
  7298. VFI SUBR ENTRY/EXIT
  7299. LDM FCBS,CI CHECK FILE TYPE
  7300. SHN 21-13
  7301. PJN VFIX IF INDIRECT ACCESS FILE
  7302. ERROR FDA *(FILE NAME) IS DIRECT ACCESS.*
  7303. SPACE 4,10
  7304. * CHECK FOR OVERFLOW.
  7305.  
  7306.  
  7307. USE OVERFLOW
  7308. ERRNG BUF2-2-* OVERFLOW INTO CATALOG/PERMIT BUFFER
  7309. TITLE OVERLAYABLE INITIALIZATION ROUTINES.
  7310. IRP SPACE 4,25
  7311. *** INITIAL REQUEST PROCESSING.
  7312. *
  7313. * CALL REQUEST PREPROCESSOR TO PERFORM CATALOG AND
  7314. * PERMIT SEARCH, BEFORE CALLING COMMAND OVERLAY.
  7315. *
  7316. * ENTRY (CC) = COMMAND CODE.
  7317. * (DVLW - DVLW+4) = DEVICE LAYOUT WORD OF MST.
  7318. * (MSTA) = MST ADDRESS/10B.
  7319. * (PFOU) = OPTIONAL USER NAME
  7320. * (PFPN) = OPTIONAL PACK NAME.
  7321. *
  7322. * EXIT TO COMMAND PROCESSOR AS SPECIFIED BY (CC).
  7323. * (CCDA) = CHANGED IF PASSWORD CHECKING IS NOT NEEDED.
  7324. * (CCDB) = *PSN* SET IF ACCUMULATION REQUIRED.
  7325. * (CCDC) = CHANGED IF SECURITY ACCESS VIOLATION.
  7326. * (DVLW) = DEVICE LAYOUT WORD OF MASTER DEVICE FROM MST.
  7327. * (LCOA) = COMMAND OVERLAY PROCESSOR ADDRESS.
  7328. * (LCOB) = COMMAND OVERLAY NAME.
  7329. * (SCHG) = BYPASS SET IF USER INDEX CHECK IS NOT NEEDED.
  7330. * THE FOLLOWING SEARCH POINTERS ARE INITIALIZED.
  7331. * (HL, PB, PP, CS, CS+1, HB, HP, CB, CI, EP)
  7332. *
  7333. * USES T1, CM - CM+4.
  7334. *
  7335. * CALLS RMD.
  7336.  
  7337.  
  7338. IRP BSS 0 ENTRY
  7339.  
  7340. * INITIALIZE CATALOG SEARCH ROUTINES.
  7341.  
  7342. LDM PFOU
  7343. NJN IRP1 IF ALTERNATE USER NAME SPECIFIED
  7344. ISTORE CCDA,(UJN CCD4) SET BYPASS OF PASSWORD CHECK
  7345. ISTORE CCDC,(NJN CCD9) SET SECURITY VIOLATION PROCESSING
  7346. IRP1 LDM STAT CHECK FOR SEARCH STATISTICS REQUIRED
  7347. LPK STAC
  7348. ZJN IRP2 IF ACCUMULATION NOT REQUIRED
  7349. ISTORE CCDB,(PSN) SET ACCUMULATION REQUIRED
  7350.  
  7351. * INITIALIZE FOR DEVICE ACCESS.
  7352.  
  7353. IRP2 RJM RMD SET DRIVER FOR MASTER DEVICE
  7354. LDM MSTA READ MST DEVICE LAYOUT WORD
  7355. SHN 3
  7356. ADN ALGL
  7357. CRM DVLW,ON
  7358. LDM STAT CHECK FOR PRIVATE DEVICE
  7359. LPK STPD
  7360. ZJN IRP3 IF NOT PRIVATE DEVICE
  7361. ISTORE SCHG,(PSN) SET BYPASS OF USER INDEX CHECK
  7362.  
  7363. * INITIALIZE SEARCH POINTERS.
  7364.  
  7365. IRP3 LDN 0 CLEAR DIRECT CELLS
  7366. STD HL LENGTH OF HOLE
  7367. STD PB POINTER TO PERMIT BUFFER
  7368. STD PP INDEX TO PERMIT BUFFER
  7369. STD CS CUMULATIVE SIZE OF FILES IN CATALOG
  7370. STD CS+1
  7371. LDN ZERL CLEAR CONTIGUOUS STORAGE
  7372. CRD HB
  7373. ERRNZ HP-HB-1 DIRECT CELLS NOT CONTIGUOUS
  7374. ERRNZ CB-HP-1 DIRECT CELLS NOT CONTIGUOUS
  7375. ERRNZ CI-CB-1 DIRECT CELLS NOT CONTIGUOUS
  7376. ERRNZ EP-CI-1 DIRECT CELLS NOT CONTIGUOUS
  7377.  
  7378. * EXIT TO REQUEST PREPROCESSOR.
  7379.  
  7380. LDD CC INDEX INTO *TCMD* TABLE
  7381. SHN 1
  7382. ADD CC
  7383. STD T1
  7384. LDM TCMD+2,T1 SET OVERLAY NAME INTO *EXECUTE* MACRO
  7385. STM LCOB
  7386. LDM TCMD+1,T1 SET REQUEST PROCESSOR ENTRY ADDRESS
  7387. STM LCOA
  7388. LDM TCMD,T1 SET REQUEST PREPROCESSOR ADDRESS
  7389. STD T1
  7390. LJM 0,T1 EXIT TO REQUEST PREPROCESSOR
  7391. CMD SPACE 4,15
  7392. ** CMD - CREATE *TCMD* TABLE ENTRIES.
  7393. *
  7394. * *CMD* CREATES THE THREE-WORD *TCMD* ENTRIES AND DEFINES
  7395. * THE SYMBOLS *OVXX* AND *PRXX*, THE OVERLAY SUFFIX AND REQUEST
  7396. * PROCESSOR ENTRY ADDRESS, RESPECTIVELY, FOR FUNCTION XX.
  7397. * *XX* IS THE APPROPRIATE LAST TWO CHARACTERS OF THE COMMAND
  7398. * CODE SYMBOL *CCXX*.
  7399. *
  7400. * CC CMD PPR,PRO
  7401. *
  7402. * CC COMMAND CODE SUFFIX
  7403. * PPR PREPROCESSOR ADDRESS. IF OMITTED, A ZERO ENTRY IS
  7404. * CREATED.
  7405. * PRO REQUEST PROCESSOR ENTRY ADDRESS IN THE FORM /3PX/ADDR.
  7406.  
  7407.  
  7408. MACRO CMD,C,PPR,PRO
  7409. ERRNZ *-3*//CC_C TABLE ENTRY OUT OF ORDER
  7410. .A IFC EQ,$PPR$$
  7411. CON 0,0,0
  7412. .A ELSE
  7413. .1 MICRO 2,2,PRO//
  7414. CON PPR,PRO,2R".1"
  7415. OV_C EQU 2R".1"
  7416. CMD RMT
  7417. PR_C EQU PRO
  7418. RMT
  7419. .A ENDIF
  7420. ENDM
  7421. TCMD SPACE 4,10
  7422. ** TCMD - TABLE OF COMMAND PROCESSOR ADDRESSES.
  7423. *
  7424. * *TCMD* IS CREATED BY THE *CMD* MACRO.
  7425. *
  7426. * FIRST BYTE IS PREPROCESSOR ADDRESS IN *3PC*.
  7427. * SECOND BYTE IS PROCESSOR ADDRESS IN COMMAND OVERLAY.
  7428. * THIRD BYTE IS SUFFIX FOR COMMAND OVERLAY NAME.
  7429.  
  7430. TCMD EQU *-3 COMMAND CODE ADDRESS TABLE
  7431. LOC 3
  7432.  
  7433. SV CMD SAV,/3PG/SAV *SAVE*
  7434. GT CMD GET,/3PF/GET *GET*
  7435. PG CMD PUR,/3PL/PUR *PURGE*
  7436. CT CMD *CATLIST*
  7437. PM CMD PER,/3PM/PER *PERMIT*
  7438. RP CMD REP,/3PG/REP *REPLACE*
  7439. AP CMD APP,/3PH/APP *APPEND*
  7440. DF CMD DEF,/3PK/DEF *DEFINE*
  7441. AT CMD ATT,/3PI/ATT *ATTACH*
  7442. CG CMD CHG,/3PN/CHG *CHANGE*
  7443. UA CMD UAT,/3PI/UAT *UATTACH*
  7444. SA CMD SAA,/3PO/SAA *SETASA*
  7445. AF CMD SAF,/3PO/SAF *SETAF*
  7446. SD CMD SDA,/3PK/SDA *SETDA*
  7447. DD CMD DDS,/3PL/DDS *DROPDS*
  7448. AN CMD *ASSIGNPF*
  7449. OD CMD OLD,/3PF/OLD *OLD*
  7450. AC CMD SAC,/3PN/CHG *SETPFAC*
  7451. AL CMD SAL,/3PN/CHG *SETPFAL*
  7452. UG CMD UGT,/3PF/UGT *UGET*
  7453. UR CMD URE,/3PG/URE *UREPLAC*
  7454. DI CMD DIS,/3PM/DIS *DROPIDS*
  7455. DP CMD DPF,/3PM/DPF *DELPFC*
  7456. RS CMD *RPFSTAT*
  7457. SP CMD SPF,/3PR/SPF *STAGEPF*
  7458.  
  7459. LOC *O
  7460.  
  7461. OVERFLOW OVLA,EPFW
  7462. EJECT
  7463. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  7464.  
  7465.  
  7466. QUAL *
  7467.  
  7468. CAI EQU /".O"/CAI
  7469. CSA EQU /".O"/CSA
  7470. CTI EQU /".O"/CTI
  7471. DPR EQU /".O"/DPR
  7472. DTK EQU /".O"/DTK
  7473. IRA EQU /".O"/IRA
  7474. ITC EQU /".O"/ITC
  7475. MSRA EQU /".O"/MSRA
  7476. RMD EQU /".O"/RMD
  7477. RNS EQU /".O"/RNS
  7478. SNT EQU /".O"/SNT
  7479. SNTA EQU /".O"/SNTA
  7480. STI EQU /".O"/STI
  7481. UCE EQU /".O"/UCE
  7482. UCE3 EQU /".O"/UCE3
  7483. UCE4 EQU /".O"/UCE4
  7484. UCEA EQU /".O"/UCEA
  7485. UCEB EQU /".O"/UCEB
  7486. UCEC EQU /".O"/UCEC
  7487. WBI EQU /".O"/WBI
  7488.  
  7489. LOCG EQU /".O"/LOCG
  7490. OVLC EQU /".O"/OVLC
  7491. OVLU EQU /".O"/OVLU
  7492. OVERLAY (CATALOG UPDATE ROUTINES.),OVLU
  7493. OVL SPACE 4,10
  7494. *** THIS OVERLAY CONTAINS SUBROUTINES USED BY THE COMMAND
  7495. * OVERLAYS TO UPDATE THE PERMANENT FILE CATALOG.
  7496.  
  7497.  
  7498. OVL BSS 0 ENTRY
  7499. RJM RMD RESET TO MASTER DEVICE
  7500. LDM DVLW+1 PRESET FIRST TRACK FIELD IN EOI BUFFER
  7501. STM EOIFS+1
  7502. LDN PDTL PRESET DATE/TIME FIELD IN EOI BUFFER
  7503. CRM EOIDT,ON
  7504. LDM PUCW
  7505. SHN 21-13
  7506. PJN OVL1 IF NO USER CONTROL WORD SPECIFIED
  7507. LDN PSNI FORCE UPDATE OF USER CONTROL WORD
  7508. STM FCEG
  7509. OVL1 LDM PFPW
  7510. ZJN OVL2 IF PASSWORD NOT SPECIFIED
  7511. LDN PSNI FORCE UPDATE OF PASSWORD
  7512. STM FCEH
  7513. OVL2 UJN ".Q"X RETURN AFTER LOAD
  7514. TITLE ALLOCATION ROUTINES.
  7515. ACS SPACE 4,25
  7516. ** ACS - ALLOCATE CATALOG SPACE.
  7517. *
  7518. * ENTRY (T5) = (EQ) = MASTER DEVICE EST ORDINAL.
  7519. * (EB) = POINTER TO END BUFFER.
  7520. * (DVLW - DVLW+4) = DEVICE LAYOUT WORD OF MST.
  7521. * (FS) = EST ORDINAL FOR FILE.
  7522. * (FS+1) = FIRST TRACK OF FILE.
  7523. * (SDAC) = FIRST SECTOR OF FILE ,(4XXX) FOR DA FILE.
  7524. *
  7525. * EXIT NEXT SECTOR ALLOCATED FOR CATALOGS.
  7526. * NEW CATALOG BUFFER CLEARED.
  7527. * ADDRESS SET IN 2 LOCATIONS PRECEEDING BUFFER.
  7528. * (EP) = ADDRESS OF NEXT AVAILABLE ENTRY IN BUFFER.
  7529. * LINKAGE SET IN BUFFER.
  7530. * OVERFLOW BIT SET IN MST IF NEW TRACK ALLOCATED.
  7531. * TO *HNG* IF LABEL TRACK NOT RESERVED.
  7532. *
  7533. * USES EP, T1, T5, T6.
  7534. *
  7535. * CALLS CAI, ITC, RTK, SEI.
  7536. *
  7537. * MACROS ENDMS, MONITOR.
  7538.  
  7539.  
  7540. ACS3 LDD EB SAVE BUFFER ADDRESS
  7541. ADN 1
  7542. STM ACSA
  7543. ADN 1 SET POINTER TO NEXT AVAILABLE ENTRY
  7544. STD EP
  7545. LDC 500
  7546. STD T1
  7547. ACS4 LDN 0 CLEAR NEW CATALOG SECTOR BUFFER
  7548. STM *,T1
  7549. ACSA EQU *-1 (ADDRESS OF BUFFER + 1)
  7550. SOD T1
  7551. PJN ACS4 IF MORE BYTES TO CLEAR
  7552.  
  7553. ACS SUBR ENTRY/EXIT
  7554. LDM -2,EB END BUFFER TRACK
  7555. STD T6
  7556. LDM -1,EB
  7557. ADN 1
  7558. STI EB
  7559. LMM SLM
  7560. NJN ACS3 IF NOT AT SECTOR LIMIT
  7561. ENDMS
  7562. LDM DVLW+1 INTERLOCK CATALOG ALLOCATION
  7563. RJM ITC
  7564. ZJN ACS1 IF INTERLOCK SUCCESSFUL
  7565. RJM HNG HANG IF LABEL TRACK NOT RESERVED
  7566.  
  7567. ACS1 LDD T6 SET ALLOCATION INTERLOCK FLAG
  7568. STM AILK
  7569. RJM SEI SEARCH FOR END OF CATALOG TRACK
  7570. LDD T5 SET CATALOG TRACK OVERFLOW
  7571. STD CM+1
  7572. LDN SGBS
  7573. STD CM+3
  7574. LDN GCTO
  7575. STD CM+2
  7576. MONITOR STBM
  7577. LDD T6
  7578. STI EB
  7579. RJM RTK REQUEST TRACK
  7580. ZJN ACS2 IF NO TRACK AVAILABLE
  7581. RJM CAI CLEAR ALLOCATION INTERLOCK
  7582. LJM ACS3 EXIT
  7583.  
  7584. * TRACK LIMIT ENCOUNTERED.
  7585.  
  7586. ACS2 ERROR TKL,,,T5 *EQXXX,DNYY, TRACK LIMIT.*
  7587. AFS SPACE 4,20
  7588. ** AFS - ALLOCATE FILE SPACE.
  7589. *
  7590. * ENTRY (T5) = MASTER DEVICE EST ORDINAL.
  7591. * (LF - LF+1) = LENGTH OF FILE TO BE ALLOCATED.
  7592. * INDIRECT ALLOCATION INTERLOCK SET.
  7593. *
  7594. * EXIT SPACE ALLOCATED FOR INDIRECT FILE.
  7595. * (SDAB) = TRACK OF NEW FILE.
  7596. * (SDAC) = SECTOR OF NEW FILE.
  7597. *
  7598. * USES T2, T7, CM - CM+4.
  7599. *
  7600. * CALLS DTK, SEI.
  7601. *
  7602. * MACROS ENDMS, MONITOR.
  7603.  
  7604.  
  7605. AFS SUBR ENTRY/EXIT
  7606. ENDMS RELEASE CHANNEL
  7607. LDM IAIF
  7608. NJN AFS2 IF ALLOCATION INTERLOCK SET
  7609. RJM HNG HANG
  7610.  
  7611. AFS2 LDM DVLW SKIP TO END OF INDIRECT CHAIN
  7612. STD T6
  7613. RJM SEI
  7614. LDD T5 SET EST ORDINAL AND TRACK
  7615. STD CM+1
  7616. LDD T6
  7617. STM SDAB
  7618. STD CM+2
  7619. LDD T7 CALCULATE SECTORS REQUIRED
  7620. ADD LF+1
  7621. AFSB ADN 2 ALLOCATE FOR SYSTEM SECTOR AND EOI
  7622. * PSN (*APPEND* - DO NOT ALLOCATE FOR SS/EOI)
  7623. STD CM+4
  7624. STD T2
  7625. SHN -14
  7626. ADD LF
  7627. STD CM+3
  7628. AOD T7
  7629. LMM SLM
  7630. NJN AFS3 IF CURRENT EOI NOT AT END OF TRACK
  7631. STD T7 RESET FIRST TRACK AND SECTOR OF NEW FILE
  7632. STM AFSA+PSNI*0
  7633. AFS3 LDD CM+4 SUBTRACT SECTORS IN CURRENT TRACK
  7634. SBM SLM
  7635. STD CM+4
  7636. PJN AFS6 IF ADDITIONAL TRACKS REQUIRED
  7637. LDD CM+3
  7638. NJN AFS5 IF ADDITIONAL TRACKS REQUIRED
  7639. LDD T2 SET EOI IN TRT
  7640. RJM DTK
  7641. UJN AFS8 COMPLETE ALLOCATION
  7642.  
  7643. AFS5 AOD CM+4 ADJUST FOR UNDERFLOW
  7644. SOD CM+3
  7645. AFS6 AOD CM+4 ADJUST SECTOR COUNT FOR *RTCM*
  7646. SHN -14
  7647. RAD CM+3
  7648. MONITOR RTCM
  7649. * LDN 0 CLEAR REWRITE ON FILE COPY
  7650. STM DTMD
  7651. LDD CM+4
  7652. AFSA UJN AFS7 SKIP UPDATE OF FIRST TRACK
  7653. * PSN (CURRENT EOI AT END OF TRACK)
  7654. STM SDAB SET FIRST TRACK OF NEW FILE
  7655. AFS7 ZJN AFS9 IF NO TRACKS ASSIGNED
  7656. AFS8 LDD T7 SET FIRST SECTOR OF NEW FILE
  7657. STM SDAC
  7658. LDC STXC SET *EXTENDING INDIRECT CHAIN* FLAG
  7659. RAM STAT
  7660. LDN 0 CLEAR REWRITE ON FILE COPY
  7661. STM DTMD
  7662. LJM AFSX RETURN
  7663.  
  7664. AFS9 ERROR TKL,,,T5 *EQXXX,DNYY, TRACK LIMIT.*
  7665. TITLE CATALOG UPDATE ROUTINES.
  7666. CCS SPACE 4,30
  7667. ** CCS - CREATE CATALOG SECTOR.
  7668. *
  7669. * ENTRY (HB) = ADDRESS OF BUFFER CONTAINING HOLE.
  7670. * (HP) = INDEX TO HOLE ENTRY.
  7671. * (EB) = POINTER TO BUFFER CONTAINING END OF CATALOGS.
  7672. * (EP) = INDEX TO FIRST AVAILABLE ENTRY IN END BUFFER.
  7673. * (CC) = COMMAND CODE.
  7674. * (DAHP) .NE. 0 IF DIRECT ACCESS HOLE BEING USED.
  7675. * (CI) = INDEX TO CATALOG ENTRY (APPEND/REPLACE/UREPLACE)
  7676. * (CCSB) = PRESET TO *PSN* FOR *DEFINE*/*DROPIDS*.
  7677. * (CCSC) = PRESET TO *PSN* FOR *DEFINE*/*DROPIDS*.
  7678. * (CCSF) = PRESET TO *PSN* FOR *DEFINE*/*DROPIDS*.
  7679. * (CCSG) = PRESET TO *PSN* FOR *DEFINE*/*DROPIDS*.
  7680. * (SDAB) = FIRST TRACK OF FILE.
  7681. * (SDAC) = FIRST SECTOR OF FILE, (4XXX) FOR DA FILE.
  7682. *
  7683. * EXIT CATALOG ENTRY CREATED.
  7684. * CATALOG ENTRY NOT WRITTEN TO DISK IF *DEFINE* REQUEST.
  7685. * SPACE FOR FILE ALLOCATED IF NECESSARY.
  7686. * (EP) = ADDRESS OF NEW CATALOG ENTRY OF FILE (IF DAPF).
  7687. * (EB) = ADDRESS OF BUFFER FOR FILE (IF DAPF).
  7688. * IF (HB) .NE. (EB), END BUFFER REWRITTEN.
  7689. *
  7690. * USES T1 - T7.
  7691. *
  7692. * CALLS ACS, AFS, FCE, FHE, REB, WBI.
  7693. *
  7694. * NOTES THE SYMBOLS *CCSA*, *CCSD* AND *CCSV* SHOULD NOT BE
  7695. * USED AS DATA TAGS IN THIS SUBROUTINE, SINCE THEY
  7696. * CONFLICT WITH GLOBAL SYMBOLS.
  7697.  
  7698.  
  7699. CCS SUBR ENTRY/EXIT
  7700. CCSE LDD HP
  7701. * LJM CCS5.1 (*UREPLACE*)
  7702. NJN CCS3 IF HOLE AVAILABLE
  7703.  
  7704. * CREATE NEW CATALOG ENTRY.
  7705.  
  7706. RJM REB REREAD END BUFFER (IF NECESSARY)
  7707. CCSB RJM AFS ALLOCATE FILE SPACE
  7708. * PSN (*DEFINE* OR *DROPIDS*)
  7709. LDD EP
  7710. NJN CCS2 IF SPACE AVAILABLE IN LAST SECTOR
  7711. RJM ACS ALLOCATE CATALOG SPACE
  7712.  
  7713. * FORM CATALOG ENTRY FOR FILE.
  7714.  
  7715. CCS2 LDD EP SET ADDRESS OF FIRST ENTRY
  7716. RJM FCE
  7717. LDM DAHP
  7718. NJN CCS2.1 IF USING DIRECT ACCESS HOLE
  7719. LDN NWCE ADVANCE SECTOR WORD COUNT
  7720. RAM 1,EB
  7721. CCS2.1 LJM CCS7 WRITE END BUFFER
  7722.  
  7723. * USE EXISTING CATALOG ENTRY FOR FILE.
  7724.  
  7725. CCS3 UJN CCS5 PROCESS INDIRECT ACCESS FILE
  7726. * PSN (*DEFINE*/*DROPIDS* REQUEST)
  7727. CCSC EQU *-1
  7728.  
  7729. * REUSE DELETED DIRECT ACCESS FILE ENTRY.
  7730.  
  7731. LDD HP FORM CATALOG ENTRY FOR DIRECT ACCESS FILE
  7732. STD EP
  7733. RJM FCE
  7734.  
  7735. CCS4 LDD HB REWRITE CATALOG SECTOR
  7736. STD EB
  7737. CCSF RJM WBI
  7738. * PSN (*DEFINE*/*DROPIDS* REQUEST)
  7739. UJP CCSX EXIT
  7740.  
  7741. * UTILIZE HOLE FOR INDIRECT ACCESS FILE.
  7742.  
  7743. CCS5 LDM FCBT,HP SET ADDRESS OF HOLE
  7744. STM SDAB
  7745. LDM FCBS,HP
  7746. STM SDAC
  7747. LDD HP REFORM CATALOG ENTRY FOR NEW FILE
  7748. RJM FCE FORM CATALOG ENTRY
  7749. CCS5.1 LDD HL LENGTH OF HOLE
  7750. SBD LF+1
  7751. ZJN CCS4 IF EXACT FIT
  7752.  
  7753. * CREATE CATALOG ENTRY FOR UNUSED PORTION OF HOLE.
  7754. *
  7755. * NOTE - CODE IN *SCH* AND *APP* GUARANTEES THAT A HOLE
  7756. * WILL NOT BE SELECTED UNLESS IT IS LARGE ENOUGH TO
  7757. * ALLOW A NEW MINIMUM-SIZED HOLE TO BE CREATED (EXCEPT
  7758. * FOR EXACT FITS).
  7759.  
  7760. SBN 2 SET NEW HOLE LENGTH
  7761. STD HL
  7762. RJM REB REREAD END BUFFER (IF NECESSARY)
  7763. LDD EP
  7764. NJN CCS6 IF SPACE AVAILABLE IN LAST SECTOR
  7765. RJM ACS ALLOCATE CATALOG SPACE
  7766. CCS6 RJM FHE FORM HOLE ENTRY
  7767. LDM DAHP
  7768. NJN CCS6.1 IF USING DIRECT ACCESS HOLE
  7769. LDN NWCE
  7770. RAM 1,EB
  7771. CCS6.1 LDD HB REWRITE FILE CATALOG ENTRY
  7772. RJM WBI
  7773. LDD HB CHECK BUFFERS
  7774. LMD EB
  7775. ZJN CCS8 IF NEW ENTRY IN SAME BUFFER AS HOLE
  7776. CCS7 LDD EB WRITE NEW CATALOG ENTRY
  7777. CCSG RJM WBI
  7778. * PSN (*DEFINE*/*DROPIDS* REQUEST)
  7779.  
  7780. * WRITE EOI SECTOR IF NEW SECTOR OF CATALOGS.
  7781.  
  7782. CCS8 LDD EP CHECK END BUFFER
  7783. SBD EB
  7784. SBN 2
  7785. ADM DAHP NON-ZERO IF USING DIRECT ACCESS HOLE
  7786. NJN CCS10 IF NOT NEW END BUFFER
  7787. LDI EB
  7788. SHN 6
  7789. PJN CCS9 IF NOT NEW TRACK
  7790. SHN -6
  7791. STD T6
  7792. LDN 0
  7793. CCS9 SHN -6
  7794. STD T7 SET SECTOR NUMBER
  7795. STM EOIA+1
  7796. STM EOIFS+3
  7797. LDD T6 SET TRACK NUMBER
  7798. STM EOIA
  7799. STM EOIFS+2
  7800. LDC EOIB WRITE EOI
  7801. RJM WBI
  7802. CCS10 LJM CCSX
  7803. CDA SPACE 4,15
  7804. ** CDA - COMPARE DISK ADDRESSES.
  7805. *
  7806. * IF THE DISK ADDRESS FOR THE BUFFER MATCHES THE DISK ADDRESS
  7807. * FOR THE DIRECT ACCESS HOLE, SET THE END BUFFER POINTERS TO
  7808. * MATCH THE BUFFER POINTERS.
  7809. *
  7810. * ENTRY (A) = BUFFER ADDRESS.
  7811. *
  7812. * EXIT (A) = 0 IF DISK ADDRESS MATCH.
  7813. * (EB) = BUFFER ADDRESS IF DISK ADDRESSES MATCH.
  7814. * (EP) = OFFSET IF DISK ADDRESSES MATCH.
  7815. *
  7816. * USES T3.
  7817.  
  7818.  
  7819. CDA SUBR ENTRY/EXIT
  7820. STD T3 SAVE BUFFER ADDRESS
  7821. LDM DAHP
  7822. LMM -2,T3
  7823. NJN CDAX IF NOT THE SAME TRACK
  7824. LDM DAHP+1
  7825. LMM -1,T3
  7826. NJN CDAX IF NOT THE SAME SECTOR
  7827. LDD T3 SET END BUFFER ADDRESS
  7828. STD EB
  7829. ADM DAHP+2
  7830. STD EP
  7831. LDN 0 DISK ADDRESS MATCH
  7832. UJN CDAX RETURN
  7833. CIA SPACE 4,30
  7834. ** CIA - CLEAR INDIRECT ALLOCATION INTERLOCK.
  7835. *
  7836. * THE INTERLOCK IS NOT CLEARED AT THIS TIME WHEN EXTENDING
  7837. * THE INDIRECT CHAIN ON A BUFFERED DEVICE; THE INTERLOCK IS
  7838. * HELD THROUGHOUT THE TRANSFER. THIS IS DONE FOR THE FOLLOWING
  7839. * REASON: SINCE ANY REQUEST TO WRITE TO NEWLY ALLOCATED SPACE
  7840. * ON A BUFFERED DEVICE MUST BE DONE BY SEQUENTIAL (NON-REWRITE)
  7841. * REQUESTS, ALL EXTENSIONS OF THE INDIRECT CHAIN ARE PERFORMED
  7842. * WITH SEQUENTIAL WRITES. HOWEVER, THIS MEANS THAT TWO OR MORE
  7843. * COPIES OF *PFM* CANNOT BE ALLOWED TO PERFORM SUCH EXTENSIONS
  7844. * AT THE SAME TIME, SINCE ONE *PFM* MIGHT THEN DO A
  7845. * SEQUENTIAL WRITE INTO A PHYSICAL SECTOR PREVIOUSLY WRITTEN
  7846. * BY ANOTHER *PFM*, WHICH MAY DESTROY THE DATA WRITTEN BY
  7847. * THAT OTHER *PFM*. NOTE THAT THE INTERLOCK MUST ALSO BE
  7848. * HELD THROUGHOUT THE TRANSFER FOR *CPUPFM* TRANSFERS, SINCE
  7849. * FOR SEQUENTIAL WRITES *1MS*/*CPUMTR* WILL CHANGE THE VALUE
  7850. * OF THE EOI IN THE TRT DURING THE TRANSFER, AND WILL NOT SET
  7851. * THE FINAL VALUE OF THE EOI UNTIL THE TRANSFER IS COMPLETE.
  7852. *
  7853. * ENTRY (EQ) = MASTER DEVICE EST ORDINAL.
  7854. * (DVLW) = FIRST TRACK OF INDIRECT CHAIN.
  7855. *
  7856. * EXIT INDIRECT ALLOCATION INTERLOCK CLEARED.
  7857. * (IAIF) CLEARED.
  7858. *
  7859. * USES T5, T6.
  7860. *
  7861. * CALLS CTI.
  7862. *
  7863. * MACROS ENDMS.
  7864.  
  7865.  
  7866. CIA SUBR ENTRY/EXIT
  7867. ENDMS
  7868. LDM STAT
  7869. LPC STBD+STXC
  7870. LMC STBD+STXC
  7871. ZJN CIAX IF EXTENDING CHAIN ON BUFFERED DEVICE
  7872. LDD EQ
  7873. STD T5
  7874. LDM STAT
  7875. LPC STXC
  7876. ZJN CIA1 IF NOT EXTENDING CHAIN
  7877. RAD T5 SET CHECKPOINT BIT
  7878. ERRNZ STXC-4000 CODE DEPENDS ON VALUE
  7879. CIA1 LDM DVLW CLEAR INTERLOCK
  7880. STD T6
  7881. RJM CTI
  7882. LDD EQ
  7883. STD T5
  7884. LDN 0 CLEAR FLAG
  7885. STM IAIF
  7886. UJN CIAX RETURN
  7887. DCE SPACE 4,30
  7888. ** DCE - DELETE CATALOG ENTRY.
  7889. *
  7890. * DELETE CATALOG ENTRY FOR INDIRECT ACCESS FILE.
  7891. * DETERMINE IF SPACE CAN BE RELEASED AND RELEASE IF REQUESTED.
  7892. *
  7893. * ENTRY (CB) = BUFFER ADDRESS.
  7894. * (CI) = POINTER TO CATALOG ENTRY.
  7895. * (DCEC) = PRESET TO *PSN* FOR *APPEND* REQUEST.
  7896. * (DCED) = PRESET TO *PSN* FOR *APPEND* REQUEST.
  7897. * INDIRECT ALLOCATION INTERLOCK SET.
  7898. *
  7899. * EXIT ENTRY DELETED IN CATALOG SECTOR.
  7900. * (A) = 0 IF NO DELINK POSSIBLE.
  7901. * (A) = 1 IF DELINK POSSIBLE.
  7902. * CATALOG BUFFER REWRITTEN IF NOT *APPEND*
  7903. * REQUEST.
  7904. * (A) = 2 IF FILE AT END OF CHAIN.
  7905. * CATALOG BUFFER REWRITTEN IF NOT *APPEND*
  7906. * REQUEST.
  7907. * DELINK REQUEST SAVED AT *APDK* IF DELINK POSSIBLE FOR
  7908. * AN APPEND OPERATION.
  7909. *
  7910. * USES P0, P1, P2, P3, T1, T2, T3, T4, T6, T7, CM - CM+4.
  7911. *
  7912. * CALLS DTK, SNT, WBI.
  7913. *
  7914. * MACROS ENDMS, MONITOR.
  7915.  
  7916.  
  7917. DCE SUBR ENTRY/EXIT
  7918. LDM IAIF
  7919. NJN DCE0 IF ALLOCATION INTERLOCK SET
  7920. RJM HNG HANG
  7921.  
  7922. * SET CATALOG ENTRY AS HOLE.
  7923.  
  7924. DCE0 LDM FCLF+1,CI SET LENGTH OF HOLE
  7925. ADN 2 ACCOUNT FOR SYSTEM SECTOR AND EOI
  7926. STD P1
  7927. SHN -14
  7928. ADM FCLF,CI
  7929. STD P0
  7930. LDM FCBS,CI SET START OF HOLE
  7931. STD T7
  7932. LDN 0 CLEAR TRACK COUNT
  7933. STD T3
  7934. STM FCUI+1,CI SET ENTRY AS HOLE
  7935. LDM FCUI,CI
  7936. SCN 77
  7937. STM FCUI,CI
  7938. LDD CI SET CONTROL MODIFICATION DATE IN HOLE
  7939. RAM DCEB
  7940. LDN PDTL
  7941. CRM FCKD-2,ON
  7942. DCEB EQU *-1 (ADDRESS OF DATE WITHIN BUFFER)
  7943. LDM FCBT,CI
  7944. NJN DCE1 IF FILE IS DISK RESIDENT
  7945. LDC 4000 SET AS DAPF HOLE
  7946. STM FCBS,CI
  7947. LJM DCE15 EXIT
  7948.  
  7949. * CHECK FOR POSSIBILITY OF TRACK DELINK.
  7950.  
  7951. DCE1 STD T6 SET CURRENT TRACK
  7952. RJM SNT SET NEXT TRACK
  7953. STD T1
  7954. SHN 6
  7955. PJN DCE5 IF END OF TRACK CHAIN
  7956. LDM SLM
  7957. SBD T7
  7958. STD T2 SAVE SECTOR COUNT FOR THIS TRACK
  7959. LDD P1 DECREMENT REMAINING HOLE BY SECTOR COUNT
  7960. SBD T2
  7961. STD T0 SAVE RESULT
  7962. PJN DCE4 IF NOT END OF HOLE
  7963. SOD P0
  7964. PJN DCE3 IF NOT END OF HOLE
  7965. DCE2 LJM DCE10 PROCESS END OF HOLE
  7966.  
  7967. DCE3 AOD T0 RESTORE RESULT
  7968. DCE4 STD P1
  7969. AOD T3 ADVANCE TRACK COUNT
  7970. LDN 0 SET FIRST SECTOR
  7971. STD T7
  7972. LDD P2 SAVE PREVIOUS TRACK
  7973. STD P3
  7974. LDD T6 SAVE LAST TRACK
  7975. STD P2
  7976. LDD T1
  7977. UJN DCE1 LOOP FOR NEXT TRACK
  7978.  
  7979. * END OF CHAIN ENCOUNTERED.
  7980.  
  7981. DCE5 LDD P0
  7982. SHN 14
  7983. ADD P1
  7984. ADD T7
  7985. SBD T1
  7986. SBN 1
  7987. NJN DCE2 IF NOT LAST FILE ON CHAIN
  7988. LDN 2 FLAG END OF CHAIN
  7989. RAM DCEA
  7990. DCEC UJN DCE6 NOT APPEND COMMAND
  7991. * PSN (*APPEND* REQUEST)
  7992. LJM DCE15 EXIT BACK TO APPEND PROCESSING
  7993.  
  7994. DCE6 LDM FCBS,CI
  7995. ZJN DCE7 IF FILE STARTS AT SECTOR 0
  7996. SBN 1
  7997. STD P1
  7998. LCN 0 SET AS NULL HOLE
  7999. STM FCBS,CI SET AS NULL HOLE (DELETED DA FILE)
  8000. UJN DCE8 REWRITE CATALOG ENTRY
  8001.  
  8002. DCE7 STM FCLF,CI SET HOLE LENGTH
  8003. LDK MNHS-2 LEAVE MINIMUM-SIZE HOLE
  8004. STM FCLF+1,CI
  8005. ADN 1
  8006. STD P1
  8007. DCE8 LDD CB REWRITE CATALOG ENTRY
  8008. RJM WBI
  8009. ENDMS
  8010. LDM FCBT,CI SET FIRST TRACK
  8011. STD T6
  8012. LDD P1 LAST SECTOR WRITTEN
  8013. RJM DTK DROP TRACK CHAIN
  8014. LJM DCE15 EXIT
  8015.  
  8016. DCE9 SOD T3 DELINK ONE LESS TRACK
  8017. LDD P2 SET TRACK TO LINK TO
  8018. STD T6
  8019. LDD P3 SET LAST TRACK TO DELINK
  8020. STD P2
  8021. LDM SLM ADJUST REMAINING LENGTH OF HOLE
  8022. RAD P1
  8023.  
  8024. * END OF HOLE ENCOUNTERED.
  8025.  
  8026. DCE10 UJN DCE11 NOT *APPEND*
  8027. * PSN (*APPEND* REQUEST)
  8028. DCEE EQU *-1
  8029. LDM CPTF
  8030. ZJN DCE11 IF NOT CPU TRANSFER
  8031. LDC IFUI SET INDIRECT FLAW USER INDEX IN OLD PFC
  8032. STM FCUI+1,CI
  8033. SHN -14
  8034. RAM FCUI,CI
  8035. DCE10.1 LJM DCE15 EXIT
  8036.  
  8037. DCE11 LDD T3 CHECK TRACK COUNT
  8038. SBN 2
  8039. MJN DCE10.1 IF NO TRACKS TO DELINK
  8040. LDM FCBT,CI SET NEW HOLE
  8041. LPC 3777
  8042. STD CM+2
  8043. LDM SLM
  8044. SBM FCBS,CI
  8045. ADD P1
  8046. SBK MNHS
  8047. MJP DCE9 IF NEW HOLE SHORTER THAN MINIMUM LENGTH
  8048. ADK MNHS-2 SET LENGTH OF NEW HOLE
  8049. STM FCLF+1,CI
  8050. LDN 0
  8051. STM FCLF,CI
  8052. AOM DCEA SET DELINK POSSIBLE
  8053. LDD T5 SET CALL TO DELINK
  8054. ADC 4000 SET CHECKPOINT BIT
  8055. STD CM+1
  8056. LDD T6 SET NEXT TRACK IN CHAIN
  8057. STD CM+3
  8058. LDD P2 SET LAST TRACK TO RELEASE
  8059. STD CM+4
  8060. LDD MA
  8061. CWD CM
  8062. CRM APDK,ON SAVE DELINK REQUEST
  8063. DCED UJN DCE12 REWRITE CATALOG ENTRY
  8064. * PSN (*APPEND* REQUEST)
  8065. UJN DCE15 EXIT
  8066.  
  8067. DCE12 LDD CB REWRITE CATALOG ENTRY
  8068. RJM WBI
  8069. ENDMS
  8070. LDD MA
  8071. CWM APDK,ON
  8072. SBN 1
  8073. CRD CM
  8074. MONITOR DLKM DELINK TRACKS
  8075. DCE15 LDN 0 SET EXIT CONDITION
  8076. * LDN 1 (DELINK POSSIBLE)
  8077. * LDN 2 (FILE AT END OF CHAIN)
  8078. DCEA EQU *-1
  8079. LJM DCEX RETURN
  8080. FCE SPACE 4,15
  8081. ** FCE - FORM CATALOG ENTRY.
  8082. *
  8083. * ENTRY (A) = LOCATION OF ENTRY WITHIN BUFFER.
  8084. * (FN - FN+3) = PERMANENT FILE NAME.
  8085. * (LF - LF+1) = LENGTH OF FILE IN SECTORS.
  8086. * (FCEG) = PRESET TO *PSN* FOR USER CONTROL WORD UPDATE.
  8087. * (FCEH) = PRESET TO *PSN* IF PASSWORD SPECIFIED.
  8088. * (SDAB) = STARTING TRACK ADDRESS.
  8089. * (SDAC) = STARTING SECTOR ADDRESS.
  8090. * (CI) = INDEX TO OLD CATALOG ENTRY.
  8091. *
  8092. * EXIT CATALOG ENTRY REFORMED IN BUFFER.
  8093. * WORD COUNT OF SECTOR ADVANCED IF NOT A HOLE PLUG.
  8094. * (PFCA) = ADDRESS OF NEW CATALOG ENTRY.
  8095. *
  8096. * USES EP, P0, CM - CM+4, FN - FN+3, T0 - T3, UI - UI+1,
  8097. * LF - LF+1.
  8098. *
  8099. * NOTE THE SYMBOLS *FCEC*, *FCEF* AND *FCEO* SHOULD NOT BE
  8100. * USED FOR DATA TAGS IN THIS ROUTINE, SINCE THEY
  8101. * CONFLICT WITH THE GLOBAL CATALOG SYMBOL DEFINITIONS.
  8102.  
  8103.  
  8104. FCE SUBR ENTRY/EXIT
  8105. STD T1 ADDRESS OF CATALOG ENTRY
  8106. STM PFCA
  8107. STM FCEA SET ADDRESS OF FILE NAME
  8108. STD T2 SET ADDRESS FOR CLEARING OF CATALOG ENTRY
  8109. ADC FCCW SET ADDRESS OF USER CONTROL WORD
  8110. STM FCEB
  8111. STM FCED
  8112. LDD T1
  8113. LMD CI
  8114. ZJN FCE2 IF REPLACING SAME CATALOG ENTRY
  8115.  
  8116. * CLEAR CATALOG ENTRY BUFFER.
  8117.  
  8118. LDC NWCE*5 CLEAR EXISTING CATALOG ENTRY
  8119. STD T3
  8120. FCE1 LDN 0
  8121. STI T2
  8122. AOD T2
  8123. SOD T3
  8124. NJN FCE1 IF MORE CATALOG TO CLEAR
  8125.  
  8126. * TRANSFER DATA INTO NEW CATALOG ENTRY.
  8127.  
  8128. FCE2 LDD MA SET NEW FILE NAME
  8129. CWD FN
  8130. CRM *,ON
  8131. FCEA EQU *-1
  8132. LDM FCUI,T1 SET USER INDEX IN CATALOG ENTRY
  8133. SCN 77
  8134. ADD UI USER INDEX FIRST BYTE
  8135. STM FCUI,T1
  8136. LDD UI+1
  8137. STM FCUI+1,T1
  8138. LDM SDAB SET BEGINNING TRACK AND SECTOR
  8139. STM FCBT,T1
  8140. LDM SDAC
  8141. STM FCBS,T1
  8142. LDD LF SET LENGTH OF FILE
  8143. STM FCLF,T1
  8144. LDD LF+1
  8145. STM FCLF+1,T1
  8146. LDN PDTL READ PACKED DATE AND TIME
  8147. CRD CM
  8148. LDD T1 SET TRANSFER OF OLD CATALOG
  8149. ADN FCRI
  8150. STD T2
  8151. LDD CI
  8152. ZJN FCE5 IF NO PRIOR FILE
  8153. ADN FCRI
  8154. STD T3
  8155. LMD T2
  8156. ZJN FCE4 IF SAME CATALOG ENTRY
  8157. FCE3 LDI T3 TRANSFER OLD CATALOG DATA
  8158. STI T2
  8159. AOD T3
  8160. AOD T2
  8161. ADC -NWCE*5
  8162. LMD T1
  8163. NJN FCE3 IF MORE CATALOG TO TRANSFER
  8164. FCE4 LDM FCEC,T1 CLEAR ERROR CODES FROM OLD FILE
  8165. LPN 77
  8166. STM FCEC,T1
  8167. LDC UJNI+FCE7-FCEI DO NOT UPDATE FCCD OR FCKD
  8168. STM FCEI
  8169. FCEG UJN FCE5 BYPASS USER CONTROL WORD UPDATE
  8170. * PSN (SET USER CONTROL WORD)
  8171. LDD MA TRANSFER CONTROL WORD VIA MESSAGE BUFFER
  8172. CWM PUCW,ON
  8173. SBN 1
  8174. CRM *,ON
  8175. FCEB EQU *-1
  8176. FCE5 LDN CM+2 SET TRANSFER ADDRESSES
  8177. * UJN FCE7.1 (*DROPIDS* - BYPASS DATE CHANGE)
  8178. FCEL EQU *-1
  8179. STD T2
  8180. LDD T1
  8181. STD T3
  8182. FCE6 LDI T2 TRANSFER DATES
  8183. FCEI STM FCCD,T3
  8184. * UJN FCE7 (IF EXISTING CATALOG ENTRY)
  8185. STM FCKD,T3
  8186. FCE7 STM FCUD,T3
  8187. STM FCAD,T3
  8188. STM FCMD,T3
  8189. AOD T3
  8190. AOD T2
  8191. LMN CM+5
  8192. NJN FCE6 LOOP TO END OF DATES
  8193. LDD CI
  8194. ZJN FCE8 IF NOT PREVIOUS FILE
  8195. FCE7.1 LJM FCEX RETURN
  8196.  
  8197. * NEW FILE CREATION.
  8198.  
  8199. FCE8 LDN FCPW SET PASSWORD ADDRESS
  8200. ADD T1
  8201. STM FCEJ
  8202. ADN FCXD-FCPW SAVE EXPIRATION DATE POINTER
  8203. STD T3
  8204. ADN FCCN-FCXD SET CHARGE/PROJECT ADDRESS
  8205. STM FCEK
  8206. LDD MA TRANSFER USER CONTROL WORD AND PASSWORD
  8207. CWM PUCW,ON
  8208. CWM PFPW,ON
  8209. SBN 2
  8210. CRM *,ON SET USER CONTROL WORD
  8211. FCED EQU *-1
  8212. FCEH UJN FCE9 BYPASS PASSWORD UPDATE
  8213. * PSN (SET PASSWORD)
  8214. CRM *,ON SET PASSWORD
  8215. FCEJ EQU *-1
  8216. LDI T3 SET PASSWORD EXPIRATION DATE
  8217. SCN 77
  8218. LMM PXDT
  8219. STI T3
  8220. LDM PXDT+1
  8221. STM 1,T3
  8222. FCE9 LDM LFAL SET ACCESS LEVEL AND CATEGORY SET
  8223. STM FCAL,T1
  8224. ERRNZ FCAL-FCFC+1 CODE DEPENDS ON VALUE
  8225. LDM PFFC
  8226. STM FCFC,T1
  8227. LDM PFFC+1
  8228. STM FCFC+1,T1
  8229. LDM PFFC+2
  8230. STM FCFC+2,T1
  8231. LDM MODE SET CATALOG TYPE AND FILE MODE
  8232. LPC 3737
  8233. STM FCCT,T1
  8234. LDM PFSS SET SS, BR AND PR
  8235. ERRNZ PFSS-PFBR *BR* AND *SS* MUST BE TOGETHER
  8236. ERRNZ PFRS-PFBR *BR* AND *PR* MUST BE TOGETHER
  8237. STM FCFS,T1
  8238. LDM PFAP SET ALTERNATE CATLIST PERMISSION
  8239. LPC 6000
  8240. STM FCAP,T1
  8241. LDC 0 SET DEVICE NUMBER
  8242. FCEE EQU *-1
  8243. STM FCDN,T1
  8244. NFA CHGN SET EXECUTING CHARGE/PROJECT FROM NFL
  8245. CRM *,TR
  8246. FCEK EQU *-1
  8247. ERRNZ FCP1-FCCN-5 *FCP1* MUST FOLLOW *FCCN*
  8248. ERRNZ FCP2-FCCN-12 *FCP2* MUST FOLLOW *FCCN*/*FCP1*
  8249. ERRNZ PJ1N-CHGN+1 *PJ1N* MUST BE IMMEDIATELY AFTER *CHGN*
  8250. ERRNZ PJ2N-PJ1N+1 *PJ2N* MUST BE IMMEDIATELY AFTER *PJ1N*
  8251. LJM FCEX RETURN
  8252.  
  8253. * TEST RANGE OF GENERATED RELATIVE JUMPS.
  8254.  
  8255. ERRNG 37+FCEI-FCE7
  8256. FHE SPACE 4,15
  8257. ** FHE - FORM HOLE ENTRY.
  8258. *
  8259. * ENTRY (EP) = POINTER IN END BUFFER FOR NEW HOLE ENTRY.
  8260. * (HL) = SIZE OF NEW HOLE.
  8261. * (LF - LF+1) = SIZE OF NEW FILE.
  8262. * (HP) = POINTER TO NEW FILE - PLACED IN PREVIOUS HOLE.
  8263. * CATALOG ENTRY CONTAINS POINTER TO NEW FILE.
  8264. *
  8265. * EXIT NEW HOLE FORMED IN END BUFFER.
  8266. *
  8267. * CALLS *NONE*
  8268. *
  8269. * USES T1, T2, T3.
  8270.  
  8271.  
  8272. FHE SUBR ENTRY/EXIT
  8273.  
  8274. * DETERMINE START OF NEW HOLE.
  8275.  
  8276. LDM FCBS,HP FIRST SECTOR OF NEW FILE
  8277. ADN 2 ALLOW FOR SYSTEM SECTOR AND EOI
  8278. STD T7
  8279. LDD LF+1 LENGTH OF NEW FILE
  8280. STD T3
  8281. LDM FCBT,HP
  8282. FHE1 STD T6
  8283. LDD T7
  8284. ADD T3
  8285. SBM SLM
  8286. MJN FHE2 IF PAST END OF NEW FILE
  8287. STD T3 REMAINDER OF NEW FILE
  8288. LDN 0
  8289. STD T7
  8290. RJM SNT SET NEXT TRACK
  8291. UJN FHE1
  8292.  
  8293. FHE2 ADM SLM SET ADDRESS OF NEW FILE
  8294. STD T7
  8295. LDC NWCE*5 CLEAR NEXT CATALOG ENTRY
  8296. STD T1
  8297. LDD EP
  8298. STD T2
  8299. FHE3 LDN 0
  8300. STI T2
  8301. AOD T2
  8302. SOD T1
  8303. NJN FHE3 IF MORE CATALOG TO CLEAR
  8304.  
  8305. * FORM HOLE ENTRY
  8306.  
  8307. LDD T7
  8308. STM FCBS,EP
  8309. LDD T6
  8310. STM FCBT,EP
  8311. LDD HL
  8312. STM FCLF+1,EP
  8313. LDD EP SET CONTROL MODIFICATION DATE IN HOLE
  8314. RAM FHEA
  8315. LDN PDTL
  8316. CRM FCKD-2,ON
  8317. FHEA EQU *-1 (ADDRESS OF DATE WITHIN BUFFER)
  8318. LJM FHEX RETURN
  8319. IIA SPACE 4,20
  8320. ** IIA - INTERLOCK INDIRECT ALLOCATION.
  8321. *
  8322. * ENTRY (EQ) = MASTER DEVICE EST ORDINAL.
  8323. * (DVLW) = FIRST TRACK OF INDIRECT CHAIN.
  8324. *
  8325. * EXIT INDIRECT ALLOCATION INTERLOCK SET.
  8326. * (IAIF) NONZERO.
  8327. *
  8328. * ERROR TO *ERR* IF INTERLOCK NOT OBTAINED BY FOURTH TRY.
  8329. * TO *HNG* IF TRACK NOT RESERVED.
  8330. *
  8331. * USES T1, T5, T6.
  8332. *
  8333. * CALLS DPR, STI.
  8334. *
  8335. * MACROS ENDMS.
  8336.  
  8337.  
  8338. IIA4 AOM IAIF SET INDIRECT ALLOCATION INTERLOCK FLAG
  8339.  
  8340.  
  8341. IIA SUBR ENTRY/EXIT
  8342. ENDMS
  8343. LDD EQ
  8344. STD T5
  8345. LDM DVLW
  8346. STD T6
  8347. LDN 4
  8348. STD T1
  8349. IIA1 RJM STI
  8350. ZJN IIA4 IF INTERLOCK OBTAINED
  8351. LMN 2
  8352. ZJN IIA2 IF TRACK NOT RESERVED
  8353. SOD T1
  8354. ZJN IIA3 IF RETRY COUNT EXHAUSTED
  8355. RJM DPR DELAY PRIOR TO RETRY
  8356. UJN IIA1 TRY AGAIN
  8357.  
  8358. IIA2 RJM HNG HANG IF TRACK NOT RESERVED
  8359.  
  8360. IIA3 EXIT INA,CH,,,EC4 * INTERLOCK NOT AVAILABLE.*
  8361. REB SPACE 4,15
  8362. ** REB - REREAD END BUFFER.
  8363. *
  8364. * REREAD THE BUFFER CONTAINING THE END OF THE CATALOGS,
  8365. * IF THAT BUFFER WAS IN *BFMS*, AND IF *BFMS* WAS REUSED.
  8366. * IF (DAHP) IS NONZERO, READ THE SECTOR CONTAINING THE DAPF
  8367. * HOLE INTO *BFMS*, AND RESET (EB) AND (EP) TO POINT TO IT.
  8368. *
  8369. * ENTRY (EBSC) = SECTOR FOR END BUFFER.
  8370. * (EBTK) = TRACK FOR END BUFFER.
  8371. * (DAHP) = DIRECT ACCESS HOLE POINTER.
  8372. *
  8373. * EXIT END BUFFER REREAD.
  8374. *
  8375. * USES T6, T7.
  8376. *
  8377. * CALLS CDA, PDV, PES, RDS.
  8378. *
  8379. * MACROS ERROR, SETMS.
  8380.  
  8381.  
  8382. REB3 LDM STAT
  8383. LPN STBR
  8384. ZJN REBX IF *BFMS* (END BUFFER) HAS NOT BEEN REUSED
  8385. REB4 LDM EBTK RESET TRACK
  8386. STD T6
  8387. STM -2,EB
  8388. LDM EBSC RESET SECTOR
  8389. STD T7
  8390. STM -1,EB
  8391. SETMS IO,NS
  8392. RJM PDV PROCESS DEVICE STATUS
  8393. LDD EB REREAD END SECTOR
  8394. RJM RDS
  8395. PJN REBX IF NO ERROR
  8396. RJM PES PROCESS ERROR STATUS
  8397.  
  8398. REB SUBR ENTRY/EXIT
  8399. LDM DAHP
  8400. REB1 ZJP REB3 IF NO DIRECT ACCESS HOLES FOUND
  8401. LDD CB
  8402. RJM CDA COMPARE DISK ADDRESSES (CATALOG BUFFER)
  8403. ZJN REBX IF DIRECT ACCESS HOLE IN CATALOG BUFFER
  8404. LDD HP
  8405. ZJN REB2 IF NO HOLE BUFFER
  8406. LDD HB
  8407. RJM CDA COMPARE DISK ADDRESSES (HOLE BUFFER)
  8408. ZJN REBX IF DIRECT ACCESS HOLE IN HOLE BUFFER
  8409. REB2 LDD EB
  8410. RJM CDA COMPARE DISK ADDRESSES (END BUFFER)
  8411. ZJN REB1 IF DIRECT ACCESS HOLE IN END BUFFER
  8412. LDC BFMS FORCE END BUFFER TO BFMS
  8413. STD EB
  8414. LDM DAHP FORCE END BUFFER TO DIRECT ACCESS HOLE
  8415. STM EBTK
  8416. LDM DAHP+1
  8417. STM EBSC
  8418. LDM DAHP+2
  8419. ADD EB
  8420. STD EP
  8421. UJP REB4 READ DIRECT ACCESS HOLE
  8422. ERROR MSE,CH,,T5 *EQXXX,DNYY,MASS STORAGE ERROR.*
  8423. RTK SPACE 4,20
  8424. ** RTK - REQUEST LINKED TRACK.
  8425. *
  8426. * ENTRY (T6) = ADDRESS OF LAST TRACK IN CHAIN.
  8427. * (T5) = MASTER DEVICE EST ORDINAL.
  8428. *
  8429. * EXIT (A) = 0 IF NO TRACK AVAILABLE.
  8430. * (A) = TRACK IF AVAILABLE.
  8431. * NEW TRACK PREWRITTEN WITH EOI-S.
  8432. *
  8433. * USES T6, T7, CM - CM+4.
  8434. *
  8435. * CALLS PDV, WDS.
  8436. *
  8437. * MACROS ENDMS, MONITOR, SETMS.
  8438. *
  8439. * NOTES THE DRIVER AUTOMATICALLY WRITES THE LAST SECTOR
  8440. * OF A TRACK WITH *WLSF*, EVEN IF *WCSF* IS SPECIFIED.
  8441.  
  8442.  
  8443. RTK SUBR ENTRY/EXIT
  8444. LDN ZERL
  8445. CRD CM
  8446. LDD T5 SET EST ORDINAL
  8447. STD CM+1
  8448. LDD T6 SET PRESENT LAST TRACK ADDRESS
  8449. STD CM+2
  8450. MONITOR RTCM
  8451. LDD CM+4
  8452. ZJN RTKX IF NO TRACK ASSIGNED
  8453. STD T6 PREWRITE NEW TRACK
  8454. STM EOIFS+2 SET TRACK NUMBER IN EOI BUFFER
  8455. LDN 0
  8456. STD T7
  8457. SETMS IO,NS
  8458. RJM PDV PROCESS DEVICE STATUS
  8459. RTK1 LDD T7 SET SECTOR NUMBER IN EOI BUFFER
  8460. STM EOIFS+3
  8461. LDC EOIB+WCSF WRITE SECTOR
  8462. RJM WDS
  8463. AOD T7
  8464. LMM SLM
  8465. NJN RTK1 IF NOT LAST SECTOR
  8466. ENDMS
  8467. LDD T6
  8468. UJP RTKX RETURN
  8469. EOI SPACE 4,10
  8470. ** EOI - EOI SECTOR BUFFER.
  8471.  
  8472.  
  8473. EOIA CON 0,0 END OF INFORMATION DISK ADDRESS
  8474. EOIB CON 0,0 END OF INFORMATION CONTROL BYTES
  8475. VFD 60/3LPFM FNT WORD
  8476. EOIFS BSSZ 5 FST WORD
  8477. EOIDT BSSZ 5 DATE/TIME WORD
  8478. SPACE 4,10
  8479. * CHECK FOR OVERFLOW.
  8480.  
  8481.  
  8482. OVERFLOW OVLU,OVLC OVERFLOW INTO COMMAND OVERLAY AREA
  8483. SPACE 4,10
  8484. OVERFLOW OVLU,BUF2-2 OVERFLOW INTO CATALOG BUFFER
  8485. EJECT
  8486. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  8487.  
  8488.  
  8489. QUAL *
  8490.  
  8491. AFS EQU /".O"/AFS
  8492. AFSB EQU /".O"/AFSB
  8493. CCS EQU /".O"/CCS
  8494. CCS5.1 EQU /".O"/CCS5.1
  8495. CCSB EQU /".O"/CCSB
  8496. CCSC EQU /".O"/CCSC
  8497. CCSE EQU /".O"/CCSE
  8498. CCSF EQU /".O"/CCSF
  8499. CCSG EQU /".O"/CCSG
  8500. CIA EQU /".O"/CIA
  8501. DCE EQU /".O"/DCE
  8502. DCEC EQU /".O"/DCEC
  8503. DCED EQU /".O"/DCED
  8504. DCEE EQU /".O"/DCEE
  8505. FCE7.1 EQU /".O"/FCE7.1
  8506. FCEE EQU /".O"/FCEE
  8507. FCEL EQU /".O"/FCEL
  8508. IIA EQU /".O"/IIA
  8509. OVERLAY (PERMIT UPDATE ROUTINES.),OVLU
  8510. OVL SPACE 4,10
  8511. *** THIS OVERLAY CONTAINS SUBROUTINES USED BY THE COMMAND
  8512. * OVERLAYS TO UPDATE THE PERMIT FILE.
  8513.  
  8514.  
  8515. OVL BSS 0 ENTRY
  8516. RJM RMD RESET TO MASTER DEVICE
  8517. LDM DVLW+2 PRESET FIRST TRACK IN EOI BUFFER
  8518. STM EOIFS+1
  8519. LDN PDTL PRESET DATE/TIME IN EOI BUFFER
  8520. CRM EOIDT,ON
  8521. UJN ".Q"X RETURN AFTER LOAD
  8522. TITLE ALLOCATION ROUTINES.
  8523. APS SPACE 4,20
  8524. ** APS - ALLOCATE PERMIT SPACE.
  8525. *
  8526. * ENTRY (T5) = MASTER DEVICE EST ORDINAL.
  8527. * (PB) = ADDRESS OF PERMIT BUFFER.
  8528. * (DVLW - DVLW+4) = DEVICE LAYOUT WORD OF MST.
  8529. *
  8530. * EXIT (RI - RI+1) = RANDOM ADDRESS OF NEW PERMIT SECTOR.
  8531. * (EOIA) SET WITH ADDRESS OF NEW EOI.
  8532. * (WNPB) = LINKAGE TO NEW EOI.
  8533. * PERMIT ALLOCATION INTERLOCK SET.
  8534. * TO *HNG* IF PERMIT CHAIN NOT RESERVED.
  8535. *
  8536. * USES T6, T7, RI - RI+1.
  8537. *
  8538. * CALLS DTK, ITC, RTK, SEI.
  8539. *
  8540. * MACROS ENDMS, ERROR, MONITOR.
  8541.  
  8542.  
  8543. APS4 LDD T6 SAVE ADDRESS OF NEW EOI
  8544. STM EOIA
  8545. STM EOIFS+2
  8546. LDD T7
  8547. STM EOIA+1
  8548. STM EOIFS+3
  8549.  
  8550. APS SUBR ENTRY/EXIT
  8551. ENDMS RELEASE CHANNEL
  8552. LDM DVLW+2 INTERLOCK PERMIT ALLOCATION
  8553. RJM ITC
  8554. ZJN APS0 IF INTERLOCK SUCCESSFUL
  8555. RJM HNG HANG IF PERMIT CHAIN NOT RESERVED
  8556.  
  8557. APS0 LDD T6 SET ALLOCATION INTERLOCKED FLAG
  8558. STM AILK
  8559. RJM SEI SEARCH FOR END OF PERMIT FILE
  8560. LDD T2 SAVE RANDOM ADDRESS OF NEW PERMIT SECTOR
  8561. STD RI
  8562. LDD T3
  8563. STD RI+1
  8564. AOD T7 CHECK FOR END OF TRACK
  8565. LMM SLM
  8566. ZJN APS2 IF AT END OF TRACK
  8567. LDD T7 SAVE LINKAGE TO NEW EOI
  8568. STM WNPB
  8569. RJM DTK SET EOI IN TRT
  8570. APS1 UJP APS4 SAVE ADDRESS OF NEW EOI
  8571.  
  8572. APS2 RJM RTK REQUEST NEW TRACK
  8573. ZJN APS3 IF TRACK LIMIT ON ALLOCATION FILE
  8574. STD T6 SET ADDRESS OF NEW EOI
  8575. STM WNPB SAVE LINKAGE TO NEW EOI
  8576. LDN 0
  8577. STD T7
  8578. UJN APS1 SAVE ADDRESS OF NEW EOI
  8579.  
  8580. APS3 ERROR TKL,,,T5 *EQXXX,DNYY, TRACK LIMIT.*
  8581. TITLE PERMIT UPDATE ROUTINES.
  8582. CPE SPACE 4,15
  8583. ** CPE - CREATE PERMIT ENTRY.
  8584. *
  8585. * EXIT (PWRF) = *RFPC* FLAG SET IF NEW PERMIT ENTRY WRITTEN
  8586. * TO EXISTING PERMIT SECTOR.
  8587. * NEW PERMIT ENTRY WRITTEN.
  8588. * RANDOM ADDRESS SET IN CATALOG ENTRY IF
  8589. * NEW PERMIT SECTOR CREATED.
  8590. *
  8591. * USES T5, RI - RI+1.
  8592. *
  8593. * CALLS APS, FPE, WBI, WNP.
  8594. *
  8595. * MACROS ERROR, SETMS.
  8596.  
  8597.  
  8598. CPE SUBR ENTRY/EXIT
  8599. LDM SDAA SET EST ORDINAL
  8600. STD T5
  8601. SETMS STATUS,NS
  8602. LDM FCRI,CI GET PERMIT RANDOM INDEX
  8603. STD RI
  8604. LDM FCRI+1,CI
  8605. STD RI+1
  8606. ADD RI
  8607. NJN CPE2 IF PERMIT DATA AVAILABLE
  8608.  
  8609. * ALLOCATE PERMITS FOR FILE WITH NO EXISTING PERMIT DATA.
  8610.  
  8611. RJM APS ALLOCATE PERMIT SPACE
  8612. LDD RI SET RANDOM INDEX INTO CATALOG
  8613. STM FCRI,CI
  8614. LDD RI+1
  8615. STM FCRI+1,CI
  8616. RJM WNP WRITE NEW PERMIT BUFFER
  8617. CPE1 UJN CPEX RETURN
  8618.  
  8619. * PROCESS FILE WITH EXISTING PERMIT DATA.
  8620.  
  8621. CPE2 LDM 1,PB CHECK FOR FULL SECTOR OF PERMITS
  8622. LPN 77
  8623. ZJN CPE4 IF FULL SECTOR OF PERMITS
  8624. LDM NPHA SET HOLE ADDRESS
  8625. RJM FPE FORM PERMIT ENTRY
  8626. LDD PB REWRITE PERMIT SECTOR
  8627. RJM WBI
  8628. CPE3 LDK RFPC SET PERMIT COUNT UPDATED
  8629. RAM PWRF
  8630. UJN CPE1 RETURN
  8631.  
  8632. * REWRITE FULL SECTOR OF PERMITS WITH LINK TO NEW SECTOR.
  8633.  
  8634. CPE4 RJM APS ALLOCATE PERMIT SPACE
  8635. LDD RI SET RANDOM ADDRESS OF NEW PERMIT SECTOR
  8636. STM FPRI,PB
  8637. LDD RI+1
  8638. STM FPRI+1,PB
  8639. LDD PB REWRITE EXISTING PERMIT SECTOR
  8640. RJM WBI
  8641. LDK STNS SET *NO JOB SUSPENSION* FLAG
  8642. RAM STAT
  8643. RJM WNP WRITE NEW PERMIT SECTOR
  8644. LDK -STNS CLEAR *NO JOB SUSPENSION* FLAG
  8645. RAM STAT
  8646. UJN CPE3 RETURN
  8647. FPE SPACE 4,15
  8648. ** FPE - FORM PERMIT ENTRY IN BUFFER.
  8649. *
  8650. * ENTRY (A) = BUFFER LOCATION WHERE ENTRY IS TO BE FORMED.
  8651. * (PP) = IF NEW ENTRY TO BE FORMED.
  8652. * (PB) = ADDRESS OF PERMIT BUFFER.
  8653. * (PI - PI+1) = PERMITTED INDEX.
  8654. * (MODE) = PERMITTED MODE.
  8655. * (PFOU - PFOU+3) = OPTIONAL USER NAME.
  8656. * (PFXT - PFXT+1) = EXPIRATION DATE.
  8657. *
  8658. * EXIT ENTRY FORMED IN PERMIT BUFFER.
  8659. * ACCESS COUNT SET TO 1 IF IMPLICIT PERMIT ENTRY.
  8660. *
  8661. * USES T1, CM - CM+4.
  8662.  
  8663.  
  8664. FPE SUBR ENTRY/EXIT
  8665. STD T1 SAVE ADDRESS OF BUFFER
  8666. STM FPEA
  8667. ADN FPAC SET ACCESS COUNT WORD ADDRESS
  8668. STM FPEC
  8669. LDD MA SET USER NAME IN PERMIT ENTRY
  8670. CWM PFOU,ON
  8671. SBN 1
  8672. CRM *,ON
  8673. FPEA EQU *-1
  8674. LDD PB SET ADDRESS OF PERMIT HEADER
  8675. ADN FPUD
  8676. STM FPEB
  8677. LDN PDTL
  8678. CRM *,ON SET DATE/TIME IN PERMIT ENTRY
  8679. FPEB EQU *-1
  8680. SBN 1
  8681. CRM *,ON SET DATE/TIME IN PERMIT HEADER
  8682. FPEC EQU *-1
  8683. LDM MODE SET MODE/ACCESS COUNT
  8684. LPN 17
  8685. LMM SAPF SET IMPLICIT PERMIT FLAG, IF APPROPRIATE
  8686. ADM IACP INCREMENT ACCESS COUNT, IF APPROPRIATE
  8687. STM FPAC+1,T1
  8688. LDM FPXD,T1 SET EXPIRATION DATE
  8689. SCN 77
  8690. LMM PXDT
  8691. STM FPXD,T1
  8692. LDM PXDT+1
  8693. STM FPXD+1,T1
  8694. LDM SAPF
  8695. NJN FPE1 IF ACCOUNTING PERMIT
  8696. LDN 40 INDICATE EXPIRATION DATE IS PRESENT
  8697. RAM FPAC+1,T1
  8698. FPE1 LDN NWPE ADVANCE WORD COUNT
  8699. RAM 1,PB
  8700. LJM FPEX EXIT
  8701. RTK SPACE 4,20
  8702. ** RTK - REQUEST LINKED TRACK.
  8703. *
  8704. * ENTRY (T6) = ADDRESS OF LAST TRACK IN CHAIN.
  8705. * (T5) = MASTER DEVICE EST ORDINAL.
  8706. *
  8707. * EXIT (A) = 0 IF NO TRACK AVAILABLE.
  8708. * (A) = TRACK IF AVAILABLE.
  8709. * NEW TRACK PREWRITTEN WITH EOI-S.
  8710. *
  8711. * USES T6, T7, CM - CM+4.
  8712. *
  8713. * CALLS PDV, WDS.
  8714. *
  8715. * MACROS ENDMS, MONITOR, SETMS.
  8716. *
  8717. * NOTES THE DRIVER AUTOMATICALLY WRITES THE LAST SECTOR
  8718. * OF A TRACK WITH *WLSF*, EVEN IF *WCSF* IS SPECIFIED.
  8719.  
  8720.  
  8721. RTK SUBR ENTRY/EXIT
  8722. LDN ZERL
  8723. CRD CM
  8724. LDD T5 SET EST ORDINAL
  8725. STD CM+1
  8726. LDD T6 SET PRESENT LAST TRACK ADDRESS
  8727. STD CM+2
  8728. MONITOR RTCM
  8729. LDD CM+4
  8730. ZJN RTKX IF NO TRACK ASSIGNED
  8731. STD T6 PREWRITE NEW TRACK
  8732. STM EOIFS+2 SET TRACK NUMBER IN EOI BUFFER
  8733. LDN 0
  8734. STD T7
  8735. SETMS IO,NS
  8736. RJM PDV PROCESS DEVICE STATUS
  8737. RTK1 LDD T7 SET SECTOR NUMBER IN EOI BUFFER
  8738. STM EOIFS+3
  8739. LDC EOIB+WCSF WRITE SECTOR
  8740. RJM WDS
  8741. AOD T7
  8742. LMM SLM
  8743. NJN RTK1 IF NOT LAST SECTOR
  8744. ENDMS
  8745. LDD T6
  8746. UJP RTKX RETURN
  8747. UPI SPACE 4,20
  8748. ** UPI - UPDATE PERMIT INFORMATION.
  8749. *
  8750. * ENTRY (PP) = POINTER TO PERMIT ENTRY.
  8751. * (PP) = 0 IF NO PERMIT ENTRY PRESENT.
  8752. * (PB) = ADDRESS OF PERMIT BUFFER.
  8753. * (PB) = 0 IF NO PERMISSION UPDATE REQUIRED.
  8754. * (CI) = POINTER TO CATALOG ENTRY.
  8755. * (PWRF) = *PFM* RESTART FLAGS.
  8756. * PERMIT BUFFER LOADED IF PERMIT EXISTS.
  8757. *
  8758. * EXIT (PWRF) = *RFPC* FLAG SET IF PERMIT COUNT UPDATED.
  8759. * PERMIT ENTRY UPDATED.
  8760. * PERMIT ENTRY CREATED IF SEMIPRIVATE ACCESS.
  8761. * (FCKD) UPDATED IF PERMIT DATA CHANGED.
  8762. *
  8763. * USES T5, T6, T7, CM - CM+4.
  8764. *
  8765. * CALLS CPE, PDV, PES, RDS, WBI.
  8766. *
  8767. * MACROS ERROR, SETMS.
  8768.  
  8769.  
  8770. UPI SUBR ENTRY/EXIT
  8771. LDD PB
  8772. ZJN UPIX IF NO PERMIT BUFFER
  8773. LDM STAT
  8774. LPN STPR
  8775. ZJN UPI1 IF PERMITS HAVE NOT BEEN READ
  8776. UPIB LDN 0
  8777. * LDN 1 (*BFMS* REUSED FOR SYSTEM SECTOR ACCESS)
  8778. ZJN UPI1 IF *BFMS* HAS NOT BEEN REUSED
  8779. LDM BFMS-2 RESET PERMIT BUFFER TRACK AND SECTOR
  8780. STD T6
  8781. LDM BFMS-1
  8782. STD T7
  8783. SETMS IO,NS
  8784. RJM PDV PROCESS DEVICE STATUS
  8785. LDC BFMS REREAD PERMIT BUFFER
  8786. RJM RDS
  8787. PJN UPI1 IF NO ERROR
  8788. RJM PES PROCESS ERROR STATUS
  8789. ERROR MSE,CH,,EQ *EQXXX,DNYY, MASS STORAGE ERROR.*
  8790.  
  8791. UPI1 LDM FCCT,CI CHECK FILE TYPE
  8792. SHN -6
  8793. LMN FCSP
  8794. ZJN UPI3 IF SEMI-PRIVATE FILE
  8795. LDD PP
  8796. NJN UPI4 IF PERMIT FOUND (PRIVATE OR PUBLIC FILE)
  8797. UPI2 UJP UPIX RETURN
  8798.  
  8799. UPI3 LDD PP
  8800. ZJP UPI5 IF NO PERMIT DATA AND SEMIPRIVATE FILE
  8801.  
  8802. * UPDATE EXISTING PERMIT ENTRY.
  8803.  
  8804. UPI4 LDN PDTL READ PACKED DATE AND TIME
  8805. CRD CM
  8806. LDM PWRF
  8807. LPK RFPC
  8808. NJN UPI4.1 IF PERMIT COUNT UPDATED
  8809. LDD HN INCREMENT ACCESS COUNT
  8810. RAM FPAC+1,PP
  8811. SHN -14
  8812. RAM FPAC,PP
  8813. UPI4.1 LDD CM+2 UPDATE LAST ACCESS DATE AND TIME
  8814. STM FPAD,PP
  8815. LDD CM+3
  8816. STM FPAD+1,PP
  8817. LDD CM+4
  8818. STM FPAD+2,PP
  8819. LDD PB REWRITE PERMIT SECTOR
  8820. RJM WBI
  8821. LDM PWRF SET PERMIT COUNT UPDATED FLAG
  8822. SCN RFPC
  8823. ADK RFPC
  8824. STM PWRF
  8825. LJM UPI7 UPDATE CATALOG ENTRY
  8826.  
  8827. * CREATE NEW PERMIT ENTRY FOR SEMI-PRIVATE FILE.
  8828.  
  8829. UPI5 LDM EBTK
  8830. ZJN UPI6 IF *BFMS* WAS NOT USED FOR *END* BUFFER
  8831. LDM STAT INDICATE THAT *BFMS* HAS BEEN REUSED
  8832. SCN STBR
  8833. LMN STBR
  8834. STM STAT
  8835. UPI6 LDD MA SET USER NAME
  8836. CWM PFAC,ON
  8837. SBN 1
  8838. CRM PFOU,ON
  8839. LDM MODE SAVE REQUESTED MODE
  8840. STM UPIA
  8841. LDM FCAM,CI SET FILE MODE FOR PERMIT ENTRY
  8842. LPN 77
  8843. STM MODE
  8844. LDN 0 CLEAR EXPIRATION DATE
  8845. STM PXDT
  8846. STM PXDT+1
  8847. RJM CPE CREATE PERMIT ENTRY
  8848. LDC * RESET ORIGINAL VALUE OF *MODE*
  8849. UPIA EQU *-1
  8850. STM MODE
  8851.  
  8852. * UPDATE CONTROL MODIFICATION DATE IN CATALOG ENTRY.
  8853.  
  8854. UPI7 LDN PDTL
  8855. CRD CM
  8856. LDD CM+2
  8857. STM FCKD,CI
  8858. LDD CM+3
  8859. STM FCKD+1,CI
  8860. LDD CM+4
  8861. STM FCKD+2,CI
  8862. UJP UPIX RETURN
  8863. WNP SPACE 4,20
  8864. ** WNP - WRITE NEW PERMIT BUFFER.
  8865. *
  8866. * ENTRY (PB) = ADDRESS OF PERMIT BUFFER.
  8867. * (RI - RI+1) = RANDOM ADDRESS OF NEW PERMIT SECTOR.
  8868. * (UI - UI+1) = USER INDEX OF PERMITTED FILE.
  8869. * (PI - PI+1) = USER INDEX OF PERMITTED USER.
  8870. * (EIOA) SET WITH ADDRESS OF NEW EOI SECTOR.
  8871. * (WNPB) = LINKAGE TO NEW EOI SECTOR.
  8872. * PERMIT ALLOCATION INTERLOCK SET.
  8873. *
  8874. * EXIT NEW PERMIT SECTOR FORMED AND WRITTEN.
  8875. * NEW EOI WRITTEN.
  8876. * PERMIT ALLOCATION INTERLOCK CLEARED.
  8877. *
  8878. * CALLS CAI, CSA, FPE, WBI.
  8879. *
  8880. * MACROS ENDMS.
  8881.  
  8882.  
  8883. WNP SUBR ENTRY/EXIT
  8884. LDD PB SET BUFFER ADDRESS
  8885. ADN 1
  8886. STM WNPA
  8887. LDC 500
  8888. STD T1
  8889. WNP1 LDN 0 CLEAR PERMIT BUFFER
  8890. STM *,T1
  8891. WNPA EQU *-1 (ADDRESS OF BUFFER + 1)
  8892. SOD T1
  8893. PJN WNP1 IF MORE BYTES TO CLEAR
  8894. LDC * SET LINKAGE TO EOI
  8895. WNPB EQU *-1
  8896. STI PB
  8897. LDN NWPH SET WORD COUNT FOR HEADER
  8898. STM 1,PB
  8899. RJM CSA COMPUTE ADDRESS OF NEW PERMIT SECTOR
  8900. LDD T6 SET CURRENT TRACK AND SECTOR
  8901. STM -2,PB
  8902. LDD T7
  8903. STM -1,PB
  8904. LDD UI SET USER INDEX
  8905. STM FPUI,PB
  8906. LDD UI+1
  8907. STM FPUI+1,PB
  8908. LDD PB SET INDEX FOR FIRST PERMIT ENTRY
  8909. ADN NWPH*5+2 SKIP HEADER AND CONTROL BYTES
  8910. RJM FPE FORM PERMIT ENTRY
  8911. LDD PB WRITE NEW PERMIT SECTOR
  8912. RJM WBI
  8913. LDC EOIB WRITE NEW EOI
  8914. RJM WBI
  8915. ENDMS
  8916. RJM CAI CLEAR ALLOCATION INTERLOCK
  8917. LJM WNPX RETURN
  8918. EOI SPACE 4,10
  8919. ** EOI - EOI SECTOR BUFFER.
  8920.  
  8921.  
  8922. EOIA CON 0,0 END OF INFORMATION DISK ADDRESS
  8923. EOIB CON 0,0 END OF INFORMATION CONTROL BYTES
  8924. VFD 60/3LPFM FNT WORD
  8925. EOIFS BSSZ 5 FST WORD
  8926. EOIDT BSSZ 5 DATE/TIME WORD
  8927. SPACE 4,10
  8928. * CHECK FOR OVERFLOW.
  8929.  
  8930.  
  8931. OVERFLOW OVLU,OVLC OVERFLOW INTO COMMAND OVERLAY AREA
  8932. SPACE 4,10
  8933. OVERFLOW OVLU,BUF2-2 OVERFLOW INTO CATALOG BUFFER
  8934. EJECT
  8935. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  8936.  
  8937.  
  8938. QUAL *
  8939.  
  8940. CPE EQU /".O"/CPE
  8941. UPI EQU /".O"/UPI
  8942. UPIB EQU /".O"/UPIB
  8943. OVERLAY (GET/OLD/UGET PROCESSING.)
  8944. SPACE 4,10
  8945. ** THIS OVERLAY PROCESSES *GET*, *OLD*, AND *UGET* REQUESTS.
  8946. *
  8947. * ENTRY (P0) = PROCESSING ADDRESS.
  8948.  
  8949.  
  8950. OVL BSS 0 ENTRY
  8951. LDD EQ RESET MASTER DEVICE EST ORDINAL
  8952. STD T5
  8953. LJM 0,P0 PROCESS REQUEST
  8954. TITLE COMMAND PROCESSING.
  8955. GET SPACE 4,10
  8956. *** PROCESS *GET* REQUEST.
  8957. *
  8958. * GENERATE WORKING COPY OF INDIRECT ACCESS FILE *PF NAME*.
  8959. * THIS COPY WILL NOT BE PERMANENT UNTIL *SAVE* *REPLACE*
  8960. * OR *DEFINE* REQUEST FOR LOCAL FILE IS ISSUED.
  8961.  
  8962.  
  8963. GET BSS 0 ENTRY
  8964. LDN 0 CLEAR REWRITE ON FILE COPY
  8965. STM DTMD
  8966. LDM ACCM ACTUAL ACCESS MODE
  8967. LMN PTEX
  8968. NJN GET1 IF MORE THAN EXECUTE PERMISSION
  8969. LDN 4 RESTRICT LOCAL FILE TO EXECUTE-ONLY
  8970. RAM GETG
  8971. GET1 LDM FCEC,CI CHECK CATALOG ERROR STATUS
  8972. SHN -4
  8973. LPN 34
  8974. ZJN GET3 IF NO ERRORS
  8975. SBN 4
  8976. RAM GETL MODIFY ERROR CODE
  8977. GETL EQU *+2
  8978. ERROR EDA * ERROR IN FILE DATA.*
  8979. * ERROR EPT * ERROR IN PERMIT DATA.*
  8980. * ERROR EDP * DATA/PERMIT ERRORS.*
  8981.  
  8982. ERRNZ /ERRMSG/EPT-/ERRMSG/EDA-1 ERRORS MUST BE CONTIGUOUS
  8983. ERRNZ /ERRMSG/EDP-/ERRMSG/EPT-1 ERRORS MUST BE CONTIGUOUS
  8984.  
  8985. GET3 RJM CML CHECK MASS STORAGE LIMITS
  8986. LDD PB
  8987. ZJN GET3.1 IF NO PERMIT BUFFER
  8988. EXECUTE 3PE LOAD PERMIT UPDATE ROUTINES
  8989. RJM UPI UPDATE PERMISION INFORMATION
  8990. GET3.1 RJM UCE UPDATE CATALOG ENTRY
  8991. ENDMS
  8992. LDD CI SET CONTROL WORD POINTER FOR CATALOG
  8993. RAM GETE
  8994. LDM FCFS,CI PROCESS SUBSYSTEM INDEX
  8995. LPN 77
  8996. STM PFSS
  8997. ZJN GET4 IF NO SUBSYSTEM INDEX
  8998. LDD CC
  8999. LMN CCOD
  9000. NJN GET4 IF NOT *OLD* REQUEST
  9001. LDM PFSS
  9002. RJM SSF SET SUBSYSTEM FLAG IN CP AREA
  9003.  
  9004. * RETURN FIELDS TO FET.
  9005. * ENTER HERE FOR *UGET* REQUEST.
  9006.  
  9007. GET4 LDK STNS INHIBIT JOB SUSPENSION AFTER THIS POINT
  9008. RAM STAT
  9009. LDM PFSP CHECK FOR SECURITY PROCESSING BIT
  9010. ZJN GET5 IF SECURITY PROCESSING BIT NOT SPECIFIED
  9011. RJM SFA RETURN ACCESS LEVEL TO FET
  9012. ADN CFAL
  9013. CRD CM
  9014. LDD CM+1
  9015. SCN 7
  9016. LMM FCAL,CI
  9017. STD CM+1
  9018. RJM SFA
  9019. ADN CFAL
  9020. CWD CM
  9021. GET5 LDM MODE RETURN ACCESS MODE TO FET
  9022. SCN 77
  9023. LMM ACCM ACTUAL MODE FILE ACCESSED IN
  9024. STM MODE
  9025. LDN CFMD
  9026. SBM FETL
  9027. PJN GET6 IF FET NOT LONG ENOUGH FOR MODE
  9028. RJM SFA RETURN ACCESS MODE TO FET
  9029. ADN CFMD
  9030. CWM MODE-4,ON
  9031. LDN CFUC
  9032. SBM FETL
  9033. PJN GET6 IF FET NOT LONG ENOUGH FOR UCW
  9034. RJM SFA RETURN USER CONTROL WORD TO FET
  9035. ADN CFUC
  9036. CWM FCCW,ON
  9037. GETE EQU *-1 (ADDRESS OF *UCW* FROM *PFC*)
  9038. LDN CFSS
  9039. SBM FETL
  9040. PJN GET6 IF FET NOT LONG ENOUGH FOR SUBSYSTEM
  9041. RJM SFA RETURN SUBSYSTEM TO FET
  9042. ADN CFSS
  9043. CWM PFSS,ON
  9044.  
  9045. * UPDATE FNT/FST.
  9046.  
  9047. GET6 LDC PFSN SET SYSTEM FILE NAME
  9048. RJM SFN
  9049. GETG LDN 0 SET FILE ACCESS INFORMATION
  9050. * LDN 4 (EXECUTE-ONLY FILE)
  9051. RAD FN+3
  9052. GETH LDN LOFT SET FILE TYPE
  9053. * LDN PTFT (*OLD* PROCESSING)
  9054. SHN 6
  9055. RAD FN+4
  9056. LDM FNTA SET FST INFORMATION
  9057. STD FA
  9058. NFA FA,R
  9059. ADK FNTL
  9060. CWD FN
  9061. ADN FSTL-FNTL
  9062. CRD FS
  9063.  
  9064. * ALLOCATE MASS STORAGE SPACE ON LOCAL FILE DEVICE.
  9065.  
  9066. LDN 0
  9067. STD CM+1
  9068. LDD LF+1 ADJUST LENGTH FOR SYSTEM SECTOR AND EOI
  9069. ADN 2
  9070. STD CM+4
  9071. SHN -14
  9072. ADD LF
  9073. STD CM+3
  9074. LDM FCAL,CI SET ACCESS LEVEL IN REQUEST
  9075. ADN 40 SELECT ON ACCESS LEVEL
  9076. SHN 6
  9077. RAD CM+3
  9078. GETI LDN 0 SET TYPE OF FILE SPACE NEEDED
  9079. * LDN PRIS (*OLD* - REQUEST PRIMARY FILE SPACE)
  9080. STD CM+2
  9081. MONITOR RTCM ASSIGN MASS STORAGE SPACE
  9082. LDN ZERL
  9083. CRD FS
  9084. LDD CM+1 SET EST ORDINAL
  9085. STM RTKE
  9086. STD FS
  9087. LDD CM+4
  9088. NJN GET8 IF TRACKS ASSIGNED
  9089. LDD CM+3
  9090. SBN 2
  9091. ZJN GET7 IF NO TEMP DEVICE VALID FOR ACCESS LEVEL
  9092. ERROR TKL,CH,,FS *EQXXX,DNYY, TRACK LIMIT.*
  9093.  
  9094. GET7 ERROR NTD,CH *(FILE NAME) - NO TEMP DEVICE FOUND.*
  9095.  
  9096. GET8 STM RTKT SET FIRST TRACK
  9097. STD FS+1
  9098. LDM CPTF
  9099. NJN GET9 IF FILE TO BE TRANSFERRED VIA CPU
  9100. LDD FS+1
  9101. STD FS+2
  9102. LDN FSMS
  9103. STD FS+3
  9104. GET9 LDN 4 SET STATUS
  9105. STD FS+4
  9106. NFA FA,R WRITE FST
  9107. ADN FSTL
  9108. CWD FS
  9109. ADN FUTL-FSTL
  9110. CRD CM
  9111. LDM FCAL,CI SET ACCESS LEVEL IN FNT
  9112. LMD CM+2
  9113. LPN 7
  9114. LMD CM+2
  9115. STD CM+2
  9116. NFA FA,R
  9117. ADN FUTL
  9118. CWD CM
  9119. RJM SFA SET FNT POINTER IN FET
  9120. ADN 4
  9121. CRD CM
  9122. LDD FA
  9123. STD CM
  9124. RJM SFA
  9125. ADN 4
  9126. CWD CM
  9127.  
  9128. * UPDATE PRIMARY FILE FST POINTER IN CONTROL POINT AREA.
  9129.  
  9130. LDD CC
  9131. LMN CCOD
  9132. NJN GET10 IF NOT *OLD* REQUEST
  9133. RJM POF PROCESS OLD PRIMARY FILE
  9134. LDD CP SET NEW PRIMARY FILE FST POINTER
  9135. ADN TFSW
  9136. CRD CM
  9137. LDM FNTA RESTORE FST AND FST ADDRESS
  9138. STD FA
  9139. STD CM+1
  9140. NFA FA,R
  9141. ADN FSTL
  9142. CRD FS
  9143. LDD CP
  9144. ADN TFSW
  9145. CWD CM
  9146.  
  9147. * UPDATE PRIMARY FILE POINTERS IN EJT ENTRY.
  9148.  
  9149. EXECUTE 0PT,OVL0 CALL *0PT* TO UPDATE EJT POINTERS
  9150.  
  9151. GET10 LDD FS RESTORE EST ORDINAL
  9152. STD T5
  9153. SETMS STATUS,NS
  9154. LDD CM+4 SET TRT ADDRESS
  9155. SHN 3
  9156. ADN TRLL
  9157. RJM CTA CALCULATE FWA OF TRT
  9158. SBD TH
  9159. STM SNTA+1
  9160. STM SEIA+1
  9161. SHN -14
  9162. LMC ADCI
  9163. STM SNTA
  9164. STM SEIA
  9165. LDM SLM INCREMENT PRU COUNT FOR FIRST TRACK
  9166. RAM AIPR+1
  9167. SHN -14
  9168. RAM AIPR
  9169.  
  9170. * DETERMINE WHETHER TO USE CPU TO TRANSFER FILE.
  9171.  
  9172. LDM CPTF
  9173. ZJN GET11 IF FILE NOT TO BE TRANSFERRED VIA CPU
  9174. LDD EQ SET SYSTEM SECTOR EST/TRACK/SECTOR
  9175. STD T5
  9176. LDM SDAB
  9177. STD T6
  9178. LDM SDAC
  9179. STD T7
  9180. RJM VSS VERIFY SYSTEM SECTOR
  9181. ENDMS
  9182. GETA BSS 0 (OVERFLOW POINT FOR *3PS* LOAD)
  9183. EXECUTE 3PS TRANSFER FILE VIA CPU
  9184.  
  9185. * SET UP SYSTEM SECTOR.
  9186.  
  9187. ERRNG *-BUF-502 SYSTEM SECTOR BUFFER OVERFLOWS CODE
  9188.  
  9189. GET11 EXECUTE 3PP LOAD DEVICE TO DEVICE TRANSFER OVERLAY
  9190. AOD LF+1 ADJUST LENGTH FOR SYSTEM SECTOR
  9191. SHN -14
  9192. RAD LF
  9193. AOM /3PP/SNSA TURN ON PRU ACCUMULATION
  9194. LDC 3777 SET SYSTEM SECTOR CONTROL BYTE
  9195. STM BUF
  9196. LDN 77 SET WORD COUNT BYTE
  9197. STM BUF+1
  9198. LDD FA
  9199. STM FASS+BUF-BFMS
  9200. NFA FA,R READ FILE NAME
  9201. ADK FNTL
  9202. CRM BUF+FNSS-BFMS,ON
  9203. LDC LOFT*100 SET LOCAL FILE TYPE IN SYSTEM SECTOR
  9204. STM FNSS+4+BUF-BFMS
  9205. STM PFSN+4
  9206. LDD FS SET EST ORDINAL
  9207. STM EQSS+BUF-BFMS
  9208. STD T5
  9209. LDD FS+1 SET FIRST TRACK
  9210. STM FTSS+BUF-BFMS
  9211. STD T6
  9212. LDN PDTL ENTER PACKED DATE
  9213. CRM DTSS+BUF-BFMS,ON
  9214. AOM DTSS+BUF-BFMS SET ENHANCED EOI FLAG
  9215. LDN 0 SET SECTOR
  9216. STD T7
  9217. RJM SDP SWAP DISK PARAMETERS
  9218. RJM IBA INCREMENT BUFFER ADDRESS
  9219. RJM VSS VERIFY SYSTEM SECTOR
  9220. LJM DTD ENTER DEVICE TO DEVICE TRANSFER LOOP
  9221. TITLE SUBROUTINES.
  9222. VSS SPACE 4,10
  9223. ** VSS - VERIFY SYSTEM SECTOR.
  9224. *
  9225. * ENTRY (T5 - T7) = SYSTEM SECTOR DISK ADDRESS.
  9226. *
  9227. * EXIT SYSTEM SECTOR READ.
  9228. * TO *ERR* IF BAD SYSTEM SECTOR OR READ ERROR.
  9229. * ERROR IDLE SET IF BAD SYSTEM SECTOR.
  9230. *
  9231. * CALLS PDV, PES, RSS.
  9232. *
  9233. * MACROS ERROR, SETMS.
  9234.  
  9235.  
  9236. VSS SUBR ENTRY/EXIT
  9237. SETMS READSTR,NS
  9238. RJM PDV PROCESS DEVICE STATUS
  9239. LDN 0 DO NOT VALIDATE FILE NAME
  9240. RJM RSS READ SYSTEM SECTOR
  9241. MJN VSS1 IF READ ERROR
  9242. ZJN VSSX IF VALID SYSTEM SECTOR
  9243. ERROR SSE,CH,,T5,,EI *EQXXX,DNYY, SYSTEM SECTOR ERROR.*
  9244.  
  9245. VSS1 RJM PES PROCESS ERROR STATUS
  9246. ERROR MSE,CH,,T5 *EQXXX,DNYY, MASS STORAGE ERROR.*
  9247. SPACE 4,10
  9248. * COMMON DECKS.
  9249.  
  9250. RIS$ SET 1 READ IAPF SYSTEM SECTOR
  9251. *CALL COMPRSS
  9252. SPACE 4,10
  9253. USE OVERLAY
  9254. OVL0 EQU *+1 LOAD ADDRESS FOR *0PT*
  9255. ERRNG BUF1-OVL0-ZPTL *0PT* OVERFLOW INTO *BUF1*
  9256. TITLE COMMAND PROCESSING (OVERLAYABLE).
  9257. OLD SPACE 4,10
  9258. *** PROCESS *OLD* REQUEST.
  9259. *
  9260. * GENERATE PRIMARY-TERMINAL FILE (*PTFT*) COPY OF INDIRECT
  9261. * ACCESS FILE *PF NAME*. THIS COPY WILL NOT BE PERMANENT
  9262. * UNTIL *SAVE* OR *REPLACE* REQUEST FOR LOCAL FILE
  9263. * IS ISSUED.
  9264.  
  9265.  
  9266. OLD BSS 0 ENTRY
  9267. LCN -PTFT+LOFT FORCE PRIMARY-FILE PROCESSING
  9268. RAM GETH
  9269. LDN PRIS
  9270. RAM GETI
  9271. LJM GET PROCESS REQUEST
  9272. UGT SPACE 4,15
  9273. *** PROCESS *UGET* REQUEST.
  9274. *
  9275. * THE *UGET* REQUEST OBTAINS A LOCAL FILE COPY OF AN INDIRECT
  9276. * ACCESS FILE WITHOUT CHANGING ANY DATES IN THE CATALOG ENTRY.
  9277. * A COPY OF THE CATALOG ENTRY IS RETURNED TO *FIRST*. THE
  9278. * *AFLOK* FLAG IS SET IN THE CATALOG ENTRY TO INDICATE THAT
  9279. * THE FILE IS ABOUT TO BE DESTAGED (ANY SUBSEQUENT *REPLACE*
  9280. * OR *APPEND* WILL CLEAR THIS FLAG, WHICH WILL THEN INDICATE
  9281. * THAT ANOTHER *UGET* MUST BE PERFORMED IF THE FILE IS STILL
  9282. * TO BE DESTAGED).
  9283.  
  9284.  
  9285. UGT BSS 0 ENTRY
  9286. LDN 0 CLEAR REWRITE ON FILE COPY
  9287. STM DTMD
  9288.  
  9289. * CHECK THE FILE RESIDENCE.
  9290.  
  9291. LDM FCBS,CI
  9292. STM SDAC SET SECTOR ADDRESS
  9293. SHN 21-13
  9294. PJN UGT1 IF INDIRECT ACCESS FILE
  9295. ERROR FDA *FILE IS DIRECT ACCESS.*
  9296.  
  9297. UGT1 LDM FCBT,CI
  9298. STM SDAB SET TRACK ADDRESS OF FILE
  9299. NJN UGT2 IF FILE DISK RESIDENT
  9300. ERROR FND *FILE NOT DISK RESIDENT.*
  9301.  
  9302. UGT2 LDM FCLF,CI SET FILE LENGTH
  9303. STD LF
  9304. LDM FCLF+1,CI
  9305. STD LF+1
  9306.  
  9307. * UPDATE CATALOG ENTRY.
  9308.  
  9309. LDM FCAF,CI SET *AFLOK* FLAG
  9310. LPC -AFLOKM
  9311. LMC AFLOKM
  9312. STM FCAF,CI
  9313. LDD CB REWRITE CATALOG ENTRY
  9314. RJM WBI
  9315. ENDMS
  9316.  
  9317. * RETURN COPY OF THE *PFC* ENTRY TO THE BUFFER.
  9318.  
  9319. RJM SFA READ *FIRST* POINTER
  9320. ADN 1
  9321. CRD CM
  9322. LDD CM+3 VERIFY *FIRST* POINTER
  9323. LPN 77
  9324. SHN 6
  9325. ADD RA
  9326. SHN 6
  9327. ADD CM+4
  9328. ADN NWCE
  9329. SBN 1
  9330. SHN -6
  9331. SBD RA
  9332. SBD FL
  9333. MJN UGT3 IF BUFFER WITHIN JOB FL
  9334. ERROR ILR,CH,,,EC3 * PFM INCORRECT REQUEST.*
  9335.  
  9336. UGT3 LDD CI COPY CATALOG ENTRY TO BUFFER
  9337. STM UGTA
  9338. RAM GETE SET CONTROL WORD POINTER FOR CATALOG
  9339. LDN NWCE NUMBER OF PFC WORDS
  9340. STD T1
  9341. LDD CM+3 FORM *CM* ADDRESS
  9342. LPN 77
  9343. SHN 6
  9344. ADD RA
  9345. SHN 6
  9346. ADD CM+4
  9347. CWM **,T1
  9348. UGTA EQU *-1 (CATALOG ENTRY ADDRESS)
  9349. LJM GET4 PROCESS FILE TRANSFER
  9350. TITLE SUBROUTINES (OVERLAYABLE).
  9351. CML SPACE 4,15
  9352. ** CML - CHECK MASS STORAGE LIMIT.
  9353. *
  9354. * ENTRY (LF - LF+1) = VALUE OF DECREMENT.
  9355. * (CMLA) = UPPER 6 (OF 18 BITS) MASS STORAGE LIMIT.
  9356. * (CMLB) = LOWER 12 BITS OF MASS STORAGE LIMIT.
  9357. *
  9358. * EXIT TO *ERR* IF ERROR IN PRU LIMITS.
  9359. *
  9360. * USES T0, CM - CM+4.
  9361.  
  9362.  
  9363. CML SUBR
  9364. LDD CP READ MASS STORAGE LIMIT
  9365. ADK ACLW
  9366. CRD CM
  9367. LDD LF
  9368. LPN 77
  9369. STD T0
  9370. LDD CM+3
  9371. LPN 77
  9372. SBD T0
  9373. MJN CML1 IF LIMIT EXCEEDED
  9374. NJN CMLX IF LIMIT NOT EXCEEDED
  9375. LDD CM+4
  9376. SBD LF+1
  9377. PJN CMLX IF LIMIT NOT EXCEEDED
  9378. CML1 ERROR PRL *PRU LIMIT.*
  9379. POF SPACE 4,15
  9380. ** POF - PROCESS OLD PRIMARY FILE.
  9381. *
  9382. * ENTRY FNT ADDRESS OF CURRENT PRIMARY FILE IN *TFSW*.
  9383. *
  9384. * EXIT OLD PRIMARY FILE CHANGED TO *LOFT*.
  9385. *
  9386. * USES FA, CM - CM+4, FS - FS+4.
  9387. *
  9388. * CALLS SFB.
  9389. *
  9390. * MACROS ERROR.
  9391.  
  9392.  
  9393. POF SUBR ENTRY/EXIT
  9394. LDD CP GET FNT ADDRESS OF OLD PRIMARY FILE
  9395. ADK TFSW
  9396. CRD CM
  9397. LDD CM+1
  9398. ZJN POFX IF NO OLD PRIMARY FILE
  9399.  
  9400. * CHANGE OLD PRIMARY FILE TO TYPE *LOFT*.
  9401.  
  9402. STD FA SET FILE BUSY
  9403. NFA FA,R
  9404. ADK FNTL
  9405. CRD FS
  9406. RJM SFB
  9407. NJN POF1 IF FILE NOT INTERLOCKED
  9408. LDC LOFT*100-PTFT*100 CHANGE FILE TYPE
  9409. RAD CM+4
  9410. AOD FS+4 SET FST COMPLETE
  9411. NFA FA,R
  9412. ADK FNTL
  9413. CWD CM
  9414. ADN FSTL-FNTL
  9415. CWD FS
  9416. UJN POFX RETURN
  9417.  
  9418. * PROCESS *I/O SEQUENCE ERROR* ON OLD PRIMARY FILE. CHANGE THE
  9419. * NEW LOCAL FILE FROM *PTFT* TO *LOFT*, SO THAT *0DF* WILL NOT
  9420. * CLEAR THE PRIMARY FILE POINTER IN THE CPA AND THE EJT WHEN
  9421. * THE NEW LOCAL FILE IS RETURNED.
  9422.  
  9423. POF1 LDM FNTA RESET FST AND FST POINTER
  9424. STD FA
  9425. NFA FA,R
  9426. ADK FNTL
  9427. CRD FN
  9428. LDD FN+4
  9429. LPN 77
  9430. LMC LOFT*100
  9431. STD FN+4
  9432. NFA FA,R
  9433. ADK FNTL
  9434. CWD FN
  9435. ERROR IOE * I/O SEQUENCE ERROR.*
  9436. SPACE 4,10
  9437. * OVERLAYABLE COMMON DECKS.
  9438.  
  9439. *CALL COMPSFB
  9440. *CALL COMPSSF
  9441. SPACE 4,10
  9442. OVERFLOW OVLC,BUF1-2 OVERFLOW INTO CATALOG BUFFER
  9443. SPACE 4,10
  9444. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  9445.  
  9446.  
  9447. QUAL *
  9448.  
  9449. GETA EQU /".O"/GETA
  9450. OVERLAY (SAVE/REPLACE/UREPLAC PROCESSING.)
  9451. SPACE 4,10
  9452. ** THIS OVERLAY PROCESSES *SAVE*/*REPLACE*/*UREPLAC* REQUESTS.
  9453. *
  9454. * ENTRY (P0) = PROCESSING ADDRESS.
  9455.  
  9456.  
  9457. OVL BSS 0 ENTRY
  9458. LJM 0,P0 PROCESS REQUEST
  9459. TITLE COMMAND PROCESSING.
  9460. REP SPACE 4,10
  9461. *** PROCESS *REPLACE* REQUEST.
  9462. *
  9463. * PURGE EXISTING PERMANENT FILE *PF NAME* AND GENERATE COPY
  9464. * OF FILE *FILE NAME* AS INDIRECT ACCESS FILE *PF NAME*.
  9465.  
  9466.  
  9467. REP BSS 0 ENTRY
  9468. LDM FCBS,CI
  9469. SHN 21-13
  9470. PJN REP1 IF NOT DIRECT ACCESS FILE
  9471. ERROR FDA * FILE IS DIRECT ACCESS.*
  9472.  
  9473. * CHECK LOCAL FILE ACCESS LEVEL AGAINST *PFC*.
  9474.  
  9475. REP1 LDM SSOM CHECK SYSTEM SECURITY MODE
  9476. ZJN REP2 IF SYSTEM OPERATING IN UNSECURED MODE
  9477. LDM FCAL,CI ALLOW SAVING DATA AT HIGHER LEVEL
  9478. SBM LFAL
  9479. PJN REP2 IF ACCESS LEVEL OKAY
  9480. LDM SVAL
  9481. LPN 40
  9482. NJN REP2 IF WRITE-DOWN PERMITTED
  9483. LDM SSID CHECK SUBSYSTEM ID
  9484. SBK LSSI+1
  9485. PJN REP2 IF SUBSYSTEM
  9486. ERROR WDP,,,,SVE * WRITE-DOWN OF DATA PROHIBITED.*
  9487.  
  9488. * UPDATE PERMITS.
  9489.  
  9490. REP2 RJM CUC CHECK USER CONTROLS
  9491. LDD PB
  9492. ZJN REP2.1 IF NO PERMIT BUFFER
  9493. EXECUTE 3PE LOAD PERMIT UPDATE ROUTINES
  9494. RJM UPI UPDATE PERMISSION INFORMATION
  9495. ENDMS
  9496.  
  9497. * UPDATE CATALOG.
  9498.  
  9499. REP2.1 LDD CI CLEAR ALTERNATE STORAGE INFORMATION IN PFC
  9500. RAM REPA+1
  9501. LDN ZERL
  9502. REPA CRM FCAF,ON
  9503. LDD CI CLEAR TAPE ALTERNATE STORAGE INFORMATION
  9504. RAM REPC+1
  9505. LDN ZERL
  9506. REPC CRM FCTF,ON
  9507. REP3 AOM FCAC+1,CI INCREMENT ACCESS COUNT
  9508. SHN -14
  9509. RAM FCAC,CI
  9510. EXECUTE 3PD LOAD CATALOG UPDATE ROUTINES
  9511. RJM IIA INTERLOCK INDIRECT ALLOCATION
  9512. LDK STNS SET *NO JOB SUSPENSION* AFTER THIS POINT
  9513. RAM STAT
  9514. RJM CCS CREATE NEW CATALOG SECTOR
  9515. LDD HP
  9516. LMD CI
  9517. ZJN REP4 IF HOLE IS FILE BEING REPLACED
  9518. RJM DCE DELETE CATALOG ENTRY
  9519. ZJN REP4 IF FILE WITHIN CHAIN AND NO DELINK
  9520. RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  9521. UJN REP6 TRANSFER FILE
  9522.  
  9523. * REWRITE OLD FILE-S CATALOG ENTRY.
  9524. * ENTER HERE ON *UREPLAC* REQUEST.
  9525.  
  9526. REP4 RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  9527. LDD CB REWRITE CATALOG ENTRY
  9528. RJM WBI
  9529. ENDMS
  9530. REP6 LJM SAV2 TRANSFER FILE
  9531. SAV SPACE 4,10
  9532. *** PROCESS *SAVE* REQUEST.
  9533. *
  9534. * GENERATE COPY OF FILE *FILE NAME* AS INDIRECT ACCESS FILE
  9535. * *PF NAME*. IF *PF NAME* EXISTS REQUEST IS ABORTED.
  9536.  
  9537.  
  9538. SAV BSS 0 ENTRY
  9539. LDM LFAL
  9540. STD CM+4
  9541. LDD EQ CHECK MASTER DEVICE ACCESS LEVEL
  9542. STD CM+2
  9543. LDN VAES
  9544. STD CM+1
  9545. MONITOR VSAM
  9546. LDD CM+1
  9547. ZJN SAV1 IF FILE ACCESS VALID FOR DEVICE
  9548. ERROR LNP,,,,SVE * ACCESS LEVEL NOT VALID ON PF DEVICE.*
  9549.  
  9550. SAV1 RJM CUC CHECK USER CONTROLS
  9551. EXECUTE 3PD LOAD CATALOG UPDATE ROUTINES
  9552. RJM IIA INTERLOCK INDIRECT ALLOCATION
  9553. LDK STNS SET *NO JOB SUSPENSION* AFTER THIS POINT
  9554. RAM STAT
  9555. RJM CCS CREATE CATALOG SECTOR
  9556. RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  9557.  
  9558. * ENTER HERE ON *REPLACE* OR *UREPLAC* REQUEST.
  9559.  
  9560. SAV2 LDM CPTF
  9561. ZJN SAV3 IF FILE NOT TO BE TRANSFERRED VIA CPU
  9562. SAVA BSS 0 (OVERFLOW POINT FOR *3PS* LOAD)
  9563. EXECUTE 3PS TRANSFER FILE VIA CPU
  9564.  
  9565. SAV3 EXECUTE 3PP LOAD DEVICE TO DEVICE TRANSFER OVERLAY
  9566.  
  9567. LDD FS SET EST ORDINAL
  9568. STD T5
  9569. LDD FS+1 SET FIRST TRACK
  9570. STD T6
  9571. LDN FSMS SET FIRST SECTOR
  9572. STD T7
  9573. SETMS READSTR,NS
  9574. RJM PDV PROCESS DEVICE STATUS
  9575. LDC BUF SET STARTING BUFFER ADDRESS
  9576. STD BB
  9577. AOD LF+1 ADJUST FILE LENGTH FOR SYSTEM SECTOR
  9578. SHN -14
  9579. RAD LF
  9580.  
  9581. ERRNG *-BUF-502 SYSTEM SECTOR BUFFER OVERFLOWS CODE
  9582.  
  9583. RJM CSS CREATE SYSTEM SECTOR IN BUFFER
  9584. RJM IBA INCREMENT BUFFER ADDRESS
  9585. LJM DTD ENTER DEVICE TO DEVICE TRANSFER LOOP
  9586. URE SPACE 4,20
  9587. *** PROCESS *UREPLAC* REQUEST.
  9588. *
  9589. * MAKE ALTERNATE STORAGE RESIDENT FILE DISK RESIDENT
  9590. * BY CREATING A PERMANENT COPY OF THE DATA TO BE
  9591. * ASSOCIATED WITH THE EXISTING PFC ENTRY.
  9592. *
  9593. * THE DATA WILL EITHER BE PLACED IN A PREVIOUSLY
  9594. * EXISTING IAPF HOLE OR SPACE WILL BE ALLOCATED
  9595. * AT THE END OF THE INDIRECT CHAIN. IF A HOLE IS
  9596. * FOUND THE TRACK AND SECTOR FROM THE HOLE WILL BE
  9597. * PLACED IN THE EXISTING PFC AND THE HOLE WILL BE
  9598. * CONVERTED TO A DAPF HOLE. THIS IS DONE SO THAT
  9599. * THE POSITION OF THE ORIGINAL PFC DOES NOT CHANGE,
  9600. * SINCE THE RESCAN CODE IN *PFDUMP* REQUIRES THAT
  9601. * THE POSITION OF THE PFC REMAIN CONSTANT.
  9602.  
  9603.  
  9604. URE BSS 0 ENTRY
  9605. EXECUTE 3PD LOAD CATALOG UPDATE ROUTINES
  9606. LDC LJMI BYPASS HOLE CHECK IN *CCS*
  9607. STM CCSE
  9608. LDC CCS5.1
  9609. STM CCSE+1
  9610. RJM IIA INTERLOCK INDIRECT ALLOCATION
  9611. LDK STNS SET *NO JOB SUSPENSION* AFTER THIS POINT
  9612. RAM STAT
  9613. LDD HP HOLE POINTER
  9614. NJN URE1 IF HOLE AVAILABLE
  9615. RJM AFS ALLOCATE FILE SPACE
  9616. LDD LF+1
  9617. STD HL SIMULATE EXACT FIT HOLE (FOR *CCS*)
  9618. LDD CB
  9619. STD HB
  9620. UJN URE2 SET DISK ADDRESS IN ORIGINAL PFC
  9621.  
  9622. * PROCESS HOLE ENTRY.
  9623.  
  9624. URE1 LDM FCBT,HP SAVE FIRST TRACK FROM HOLE ENTRY
  9625. STM SDAB
  9626. LDM FCBS,HP SAVE FIRST SECTOR FROM HOLE ENTRY
  9627. STM SDAC
  9628. LDC 4000 MARK HOLE AS DAPF HOLE
  9629. STM FCBS,HP
  9630. LDN 0
  9631. STM FCBT,HP CLEAR TRACK IN HOLE ENTRY
  9632. STM FCLF,HP CLEAR HOLE ENTRY LENGTH
  9633. STM FCLF+1,HP
  9634. LDD CI SET HOLE POINTER TO POINT TO PFC FOR *FHE*
  9635. STD HP
  9636.  
  9637. * SET NEW VALUES IN ORIGINAL PFC ENTRY.
  9638.  
  9639. URE2 LDM SDAB
  9640. STM FCBT,CI FIRST TRACK
  9641. LDM SDAC
  9642. STM FCBS,CI FIRST SECTOR
  9643. LDD LF SET NEW FILE LENGTH
  9644. STM FCLF,CI
  9645. LDD LF+1
  9646. STM FCLF+1,CI
  9647. LDM STAT
  9648. LPK STTA
  9649. NJN URE3 IF TAPE ALTERNATE STORAGE REQUEST
  9650. LDM FCAF,CI CLEAR *AFVER*, *AFPDR* AND *AFTMP* FLAGS
  9651. SCN AFPDRM+AFTMPM+AFVERM
  9652. STM FCAF,CI
  9653. UJN URE4 UPDATE CATALOG ENTRY
  9654.  
  9655. URE3 LDM FCTF,CI CLEAR *TFVER* FLAG
  9656. SCN TFVERM
  9657. STM FCTF,CI
  9658. URE4 RJM CCS CREATE CATALOG SECTOR
  9659. LJM REP4 PROCESS FILE TRANSFER
  9660. RSS SPACE 4,10
  9661. TITLE SUBROUTINES.
  9662. CSS SPACE 4,10
  9663. ** CSS - CREATE SYSTEM SECTOR IN BUFFER.
  9664. *
  9665. * ENTRY (FA) = FNT OFFSET FOR LOCAL FILE.
  9666. * (PFCA) = ADDRESS OF NEW CATALOG ENTRY.
  9667. *
  9668. * EXIT (BUF - BUF+502) = INITIALIZED SYSTEM SECTOR.
  9669. *
  9670. * USES T1, T2, T3.
  9671.  
  9672.  
  9673. CSS SUBR ENTRY/EXIT
  9674. LDC 77*5-1 CLEAR SYSTEM SECTOR
  9675. STD T1
  9676. CSS1 LDN 0
  9677. STM BUF+2,T1
  9678. SOD T1
  9679. PJN CSS1 IF NOT END OF SECTOR
  9680. LDC 3777 SET CONTROL BYTES
  9681. STM BUF
  9682. LDN 77
  9683. STM BUF+1
  9684. NFA FA,R COPY FNT TO BUFFER
  9685. ADK FNTL
  9686. CRM FNSS+BUF-BFMS,ON
  9687. LDM FNSS+3+BUF-BFMS
  9688. SCN 77
  9689. STM FNSS+3+BUF-BFMS
  9690. LDC PMFT*100 SET FILE TYPE
  9691. STM FNSS+4+BUF-BFMS
  9692. LDM SDAA SET EST ORDINAL
  9693. STM EQSS+BUF-BFMS
  9694. LDM SDAA+1 SET FIRST TRACK
  9695. STM FTSS+BUF-BFMS
  9696. LDN PDTL ENTER PACKED DATE
  9697. CRM DTSS+BUF-BFMS,ON
  9698.  
  9699. * COPY CATALOG ENTRY INTO SYSTEM SECTOR.
  9700.  
  9701. LDM PFCA ADDRESS OF CATALOG ENTRY
  9702. STD T1
  9703. LDC CTSS+BUF-BFMS ADDRESS IN SYSTEM SECTOR
  9704. STD T2
  9705. ADC NWCE*5 NUMBER OF BYTES TO COPY
  9706. STD T3
  9707. CSS2 LDI T1 TRANSFER ENTRY
  9708. STI T2
  9709. AOD T1
  9710. AOD T2
  9711. LMD T3
  9712. NJN CSS2 IF MORE BYTES TO TRANSFER
  9713. LJM CSSX RETURN
  9714. CUC SPACE 4,20
  9715. ** CUC - CHECK USER CONTROLS.
  9716. *
  9717. * CHECK NUMBER OF FILES.
  9718. * CHECK CUMULATIVE SIZE OF INDIRECT ACCESS FILES.
  9719. *
  9720. * ENTRY (ACNF - ACFN+1) = NUMBER OF FILES IN CATALOG.
  9721. * (CIFS - CIFS+1) = CUMULATIVE SIZE OF INDIRECT FILES.
  9722. * (MXCS - MXCS+1) = CUMULATIVE SIZE OF INDIRECTS ALLOWED.
  9723. * (MXNF) = MAXIMUM NUMBER OF FILES.
  9724. * (LF - LF+1) = LENGTH OF NEW FILE.
  9725. * (CI) = INDEX TO EXISTING CATALOG ENTRY OF FILE REPLACED
  9726. *
  9727. * USES CM - CM+4.
  9728. *
  9729. * MACROS ERROR.
  9730.  
  9731.  
  9732. CUC SUBR ENTRY/EXIT
  9733. LDD MA SET CUMULATED TOTALS
  9734. CWM ACNF,ON
  9735. SBN 1
  9736. CRD CM
  9737.  
  9738. * CHECK NUMBER OF FILES ALLOWED.
  9739.  
  9740. LDM MXNF
  9741. ZJN CUC1 IF NO LIMIT ON NUMBER OF FILES
  9742. LDD CM
  9743. SHN 14
  9744. ADD CM+1
  9745. ADN 7 ROUND UP
  9746. SHN -3
  9747. SBM MXNF
  9748. MJN CUC1 IF NUMBER OF FILES ALLOWED NOT EXCEEDED
  9749. ZJN CUC1 IF NUMBER OF FILES ALLOWED NOT EXCEEDED
  9750. ERROR COF * TOO MANY PERMANENT FILES.*
  9751.  
  9752. * CHECK CUMULATIVE SIZE OF INDIRECT FILES.
  9753.  
  9754. CUC1 LDM MXCS
  9755. NJN CUC2 IF SIZE CONTROL SET
  9756. LDM MXCS+1
  9757. ZJN CUCX IF NO SIZE CONTROL SET
  9758.  
  9759. * DECREMENT ACCUMULATED SIZE BY SIZE OF FILE REPLACED.
  9760.  
  9761. CUC2 LDD CI
  9762. ZJN CUC4 IF NO PREVIOUS FILE
  9763. LDD CM+3
  9764. SBM FCLF+1,CI
  9765. STD CM+3
  9766. PJN CUC3 IF NO 12 BIT OVERFLOW
  9767. AOD CM+3
  9768. SOD CM+2
  9769. CUC3 LDD CM+2
  9770. SBM FCLF,CI
  9771. STD CM+2
  9772.  
  9773. * INCREMENT CUMULATIVE SIZE FOR NEW FILE.
  9774.  
  9775. CUC4 LDD LF+1
  9776. RAD CM+3
  9777. SHN -14
  9778. ADD LF
  9779. RAD CM+2
  9780. SHN -14
  9781. ZJN CUC6 IF NO OVERFLOW
  9782. CUC5 ERROR COS * TOO MUCH INDIRECT ACCESS FILE SPACE.*
  9783.  
  9784. CUC6 LDD CM+2 CHECK SIZE AGAINST THAT ALLOWED
  9785. SBM MXCS
  9786. MJN CUC7 IF NO OVERFLOW
  9787. NJN CUC5 IF OVERFLOW
  9788. LDD CM+3
  9789. SBM MXCS+1
  9790. MJN CUC7 IF NO OVERFLOW
  9791. NJN CUC5 IF OVERFLOW
  9792. CUC7 LJM CUCX
  9793. SPACE 4,10
  9794. * CHECK FOR OVERFLOW.
  9795.  
  9796.  
  9797. OVERFLOW OVLC,BUF2-2 OVERFLOW INTO CATALOG BUFFER
  9798. SPACE 4,10
  9799. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  9800.  
  9801.  
  9802. QUAL *
  9803.  
  9804. SAVA EQU /".O"/SAVA
  9805. OVERLAY (APPEND PROCESSING.)
  9806. APP SPACE 4,10
  9807. ** THIS OVERLAY PROCESSES THE INDIRECT ACCESS FILE
  9808. * COMMAND *APPEND*.
  9809.  
  9810.  
  9811. OVL BSS 0 ENTRY
  9812. * LJM 0,P0 PROCESS REQUEST
  9813. TITLE COMMAND PROCESSING.
  9814. SPACE 4,10
  9815. *** PROCESS *APPEND* REQUEST.
  9816. *
  9817. * APPEND LOCAL FILE *FILE NAME* AT EOI OF INDIRECT ACCESS
  9818. * PERMANENT FILE *PF NAME*.
  9819.  
  9820.  
  9821. APP BSS 0 ENTRY
  9822. LDD CI CLEAR ALTERNATE STORAGE INFORMATION IN PFC
  9823. RAM APPA+1
  9824. LDN ZERL
  9825. APPA CRM FCAF,ON
  9826. LDD CI CLEAR TAPE ALTERNATE STORAGE INFORMATION
  9827. RAM APPI+1
  9828. LDN ZERL
  9829. APPI CRM FCTF,ON
  9830.  
  9831. * CHECK LOCAL FILE ACCESS LEVEL AGAINST *PFC*.
  9832.  
  9833. LDM SSOM CHECK SYSTEM SECURITY MODE
  9834. ZJN APP1 IF SYSTEM OPERATING IN UNSECURED MODE
  9835. LDM FCAL,CI
  9836. SBM LFAL
  9837. PJN APP1 IF ACCESS LEVEL ACCEPTABLE
  9838. LDM SVAL
  9839. LPN 40
  9840. NJN APP1 IF WRITE-DOWN ALLOWED
  9841. LDM SSID CHECK SUBSYSTEM ID
  9842. SBK LSSI+1
  9843. PJN APP1 IF SUBSYSTEM
  9844. ERROR WDP,,,,SVE * WRITE-DOWN OF DATA PROHIBITED.*
  9845.  
  9846. APP1 LDM FCEC,CI CHECK CATALOG ERROR STATUS
  9847. SHN -4
  9848. LPN 34
  9849. ZJN APP3 IF NO ERRORS
  9850. SBN 4
  9851. RAM APPH MODIFY ERROR CODE
  9852. APPH EQU *+2
  9853. ERROR EDA * ERROR IN FILE DATA.*
  9854. * ERROR EPT * ERROR IN PERMIT DATA.*
  9855. * ERROR EDP * DATA/PERMIT ERRORS.*
  9856.  
  9857. ERRNZ /ERRMSG/EPT-/ERRMSG/EDA-1 ERRORS MUST BE CONTIGUOUS
  9858. ERRNZ /ERRMSG/EDP-/ERRMSG/EPT-1 ERRORS MUST BE CONTIGUOUS
  9859.  
  9860. APP3 LDM STAT CHECK FOR PREVIOUS ERROR
  9861. LPN STAB
  9862. ZJN APP4 IF NO PREVIOUS ERROR
  9863. ERROR FTL *FILE TOO LONG.*
  9864.  
  9865. * UPDATE PERMITS.
  9866.  
  9867. APP4 RJM CUC CHECK USER CONTROLS
  9868. LDD PB
  9869. ZJN APP4.1 IF NO PERMIT BUFFER
  9870. EXECUTE 3PE LOAD PERMIT UPDATE ROUTINES
  9871. RJM UPI UPDATE PERMISSION INFORMATION
  9872. ENDMS
  9873.  
  9874. * UPDATE CATALOG.
  9875.  
  9876. APP4.1 EXECUTE 3PD LOAD CATALOG UPDATE ROUTINES
  9877. LDD CI SAVE CURRENT VALUE OF (FCKD)
  9878. RAM APPG
  9879. LDD MA
  9880. CWM FCKD,ON
  9881. APPG EQU *-1
  9882. SBN 1
  9883. CRM APPF,ON
  9884. LDN PSNI FORCE SPECIAL *APPEND* PROCESSING IN *DCE*
  9885. STM DCEC
  9886. STM DCED
  9887. STM DCEE
  9888. RJM IIA INTERLOCK INDIRECT ALLOCATION
  9889. LDK STNS SET *NO JOB SUSPENSION* AFTER THIS POINT
  9890. RAM STAT
  9891. RJM DCE DELETE CATALOG ENTRY
  9892. LMN 2
  9893. ZJP APP9 IF FILE AT END OF CHAIN
  9894.  
  9895. * PROCESS FILE WITHIN CHAIN.
  9896.  
  9897. AOM FCAC+1,CI INCREMENT ACCESS COUNT
  9898. SHN -14
  9899. RAM FCAC,CI
  9900. RJM CCS CREATE CATALOG SECTOR
  9901. LDM APDK+1
  9902. NJN APP4.2 IF DELAYED DELINK PENDING
  9903. RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  9904.  
  9905. * REWRITE OLD FILE-S CATALOG ENTRY.
  9906.  
  9907. APP4.2 LDD CB REWRITE OLD FILE-S CATALOG SECTOR
  9908. RJM WBI
  9909. ENDMS
  9910. LDM CPTF
  9911. ZJN APP7 IF FILE NOT TO BE TRANSFERRED VIA CPU
  9912. RJM VSS VERIFY SYSTEM SECTOR
  9913. ENDMS
  9914. APPB BSS 0 (OVERFLOW POINT FOR *3PS* LOAD)
  9915. EXECUTE 3PS TRANSFER FILE VIA CPU
  9916.  
  9917. ERRNG *-BUFA-502 SYSTEM SECTOR BUFFER OVERFLOWS CODE
  9918.  
  9919. APP7 EXECUTE 3PP LOAD DEVICE TO DEVICE TRANSFER OVERLAY
  9920. EXECUTE 3PQ LOAD TRANSFER ORIGINAL FILE OVERLAY
  9921. AOM DPCA DISABLE SRU ACCUMULATION
  9922. LDC BUFA SET BUFFER ADDRESS
  9923. STD BB
  9924. STM SDPA
  9925. RJM CSS CREATE SYSTEM SECTOR IN *BUFA*
  9926. RJM IBA INCREMENT BUFFER ADDRESS
  9927. AOD LF+1 ADJUST LENGTH TO ACCOUNT FOR SYSTEM SECTOR
  9928. SHN -14
  9929. RAD LF
  9930. RJM VSS VERIFY SYSTEM SECTOR
  9931. LJM ADT TRANSFER ORIGINAL FILE AND LOCAL FILE
  9932.  
  9933. * PROCESS APPEND TO FILE AT END OF DATA CHAIN AS A *SAVE*
  9934. * OF THE APPENDAGE.
  9935.  
  9936. APP9 LDC STEC SET *APPEND TO END OF CHAIN* FLAG
  9937. RAM STAT
  9938. LDD CI SAVE CATALOG ADDRESS
  9939. STM PFCA
  9940. LDD T6 SAVE CURRENT EOI OF DATA CHAIN (TRACK)
  9941. STM APPD
  9942. LDM FCBT,CI
  9943. STD T6
  9944. LDD T1 SAVE CURRENT EOI SECTOR
  9945. STM APPE
  9946. LDD LF SET LENGTH OF NEW FILE IN CATALOG
  9947. STM FCLF,CI
  9948. LDD LF+1
  9949. STM FCLF+1,CI
  9950. LDM APLF SET LENGTH OF APPENDAGE
  9951. STD LF
  9952. LDM APLF+1
  9953. STD LF+1
  9954. ISTORE AFSB,(PSN) DO NOT ALLOCATE FOR SYSTEM SECTOR OR EOI
  9955. RJM AFS ALLOCATE SPACE FOR APPENDAGE
  9956. RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  9957. LDD UI RESET USER INDEX IN DELETED PFC
  9958. RAM FCUI,CI
  9959. LDD UI+1
  9960. STM FCUI+1,CI
  9961. LDD CI RESTORE PREVIOUS VALUE OF *FCKD*
  9962. RAM APPC
  9963. LDD MA
  9964. CWM APPF,ON
  9965. SBN 1
  9966. CRM FCKD,ON
  9967. APPC EQU *-1
  9968. LDC STMI+CI FORCE UPDATE OF FCUD/FCMD IN *UCE*
  9969. STM UCEA
  9970. RJM UCE UPDATE CATALOG ENTRY
  9971. LDC ** SET FIRST TRACK TO PLACE APPENDAGE
  9972. APPD EQU *-1
  9973. STM SDAB
  9974. LDC **
  9975. APPE EQU *-1
  9976. STM SDAC
  9977. ENDMS
  9978. LDM CPTF
  9979. ZJN APP10 IF FILE NOT TO BE TRANSFERRED VIA CPU
  9980. EXECUTE 3PS TRANSFER FILE VIA CPU
  9981.  
  9982. APP10 EXECUTE 3PP LOAD DEVICE TO DEVICE TRANSFER OVERLAY
  9983.  
  9984. LDD FS SET LOCAL FILE EST ORDINAL
  9985. STD T5
  9986. LDD FS+1 SET FIRST TRACK
  9987. STD T6
  9988. LDN FSMS SET FIRST SECTOR
  9989. STD T7
  9990. SETMS READSTR,NS
  9991. RJM PDV PROCESS DEVICE STATUS
  9992. LDC BUF SET STARTING BUFFER ADDRESS
  9993. STD BB
  9994. LJM DTD ENTER DEVICE TO DEVICE TRANSFER LOOP
  9995.  
  9996. APPF BSS 5 BUFFER TO SAVE (FCKD)
  9997. TITLE SUBROUTINES.
  9998. CSS SPACE 4,10
  9999. ** CSS - CREATE SYSTEM SECTOR IN BUFFER.
  10000. *
  10001. * ENTRY (PFCA) = ADDRESS OF NEW CATALOG ENTRY.
  10002. *
  10003. * EXIT (BUFA - BUFA+502) = INITIALIZED SYSTEM SECTOR.
  10004. *
  10005. * USES T1, T2, T3.
  10006.  
  10007.  
  10008. CSS SUBR ENTRY/EXIT
  10009. LDC 77*5-1 CLEAR SYSTEM SECTOR
  10010. STD T1
  10011. CSS1 LDN 0
  10012. STM BUFA+2,T1
  10013. SOD T1
  10014. PJN CSS1 IF NOT END OF SECTOR
  10015. LDC 3777 SET CONTROL BYTES
  10016. STM BUFA
  10017. LDN 77
  10018. STM BUFA+1
  10019. LDD CI+FCFN* SET PERMANENT FILE NAME
  10020. STM CSSA
  10021. LDD MA COPY FILE NAME TO BUFFER
  10022. CWM *,ON
  10023. CSSA EQU *-1
  10024. SBN 1
  10025. CRM FNSS+BUFA-BFMS,ON
  10026. LDM FNSS+3+BUFA-BFMS
  10027. SCN 77
  10028. STM FNSS+3+BUFA-BFMS
  10029. LDC PMFT*100 SET FILE TYPE
  10030. STM FNSS+4+BUFA-BFMS
  10031. LDM SDAA SET EST ORDINAL
  10032. STM EQSS+BUFA-BFMS
  10033. LDM SDAA+1 SET FIRST TRACK
  10034. STM FTSS+BUFA-BFMS
  10035. LDN PDTL ENTER PACKED DATE
  10036. CRM DTSS+BUFA-BFMS,ON
  10037.  
  10038. * COPY CATALOG ENTRY INTO SYSTEM SECTOR.
  10039.  
  10040. LDM PFCA ADDRESS OF CATALOG ENTRY
  10041. STD T1
  10042. LDC CTSS+BUFA-BFMS ADDRESS IN SYSTEM SECTOR
  10043. STD T2
  10044. ADC NWCE*5 NUMBER OF BYTES TO COPY
  10045. STD T3
  10046. CSS2 LDI T1 TRANSFER ENTRY
  10047. STI T2
  10048. AOD T1
  10049. AOD T2
  10050. LMD T3
  10051. NJN CSS2 IF MORE BYTES TO TRANSFER
  10052. LJM CSSX RETURN
  10053. CUC SPACE 4,21
  10054. ** CUC - CHECK USER CONTROLS.
  10055. *
  10056. * CHECK NUMBER OF FILES.
  10057. * CHECK CUMULATIVE SIZE OF INDIRECT ACCESS FILES.
  10058. *
  10059. * ENTRY (ACNF - ACFN+1) = NUMBER OF FILES IN CATALOG.
  10060. * (MXNF) = MAXIMUM NUMBER OF FILES.
  10061. * (CIFS - CIFS+1) = CUMULATIVE SIZE OF INDIRECT FILES.
  10062. * (MXCS - MXCS+1) = CUMULATIVE SIZE OF INDIRECTS ALLOWED.
  10063. * (LF - LF+1) = LENGTH OF NEW FILE.
  10064. * (CI) = INDEX TO EXISTING CATALOG ENTRY
  10065. * OF FILE REPLACED.
  10066. *
  10067. * USES CM - CM+4.
  10068. *
  10069. * MACROS ERROR.
  10070.  
  10071.  
  10072. CUC SUBR ENTRY/EXIT
  10073. LDD MA SET CUMULATED TOTALS
  10074. CWM ACNF,ON
  10075. SBN 1
  10076. CRD CM
  10077.  
  10078. * CHECK NUMBER OF FILES ALLOWED.
  10079.  
  10080. LDM MXNF
  10081. ZJN CUC1 IF NO LIMIT ON NUMBER OF FILES
  10082. LDD CM
  10083. SHN 14
  10084. ADD CM+1
  10085. ADN 7 ROUND UP
  10086. SHN -3
  10087. SBM MXNF
  10088. MJN CUC1 IF NUMBER OF FILES ALLOWED NOT EXCEEDED
  10089. ZJN CUC1 IF NUMBER OF FILES ALLOWED NOT EXCEEDED
  10090. ERROR COF * TOO MANY PERMANENT FILES.*
  10091.  
  10092. * CHECK CUMULATIVE SIZE OF INDIRECT FILES.
  10093.  
  10094. CUC1 LDM MXCS
  10095. NJN CUC2 IF SIZE CONTROL SET
  10096. LDM MXCS+1
  10097. ZJN CUCX IF NO SIZE CONTROL SET
  10098.  
  10099. * DECREMENT ACCUMULATED SIZE BY SIZE OF FILE REPLACED.
  10100.  
  10101. CUC2 LDD CI
  10102. ZJN CUC4 IF NO PREVIOUS FILE
  10103. LDD CM+3
  10104. SBM FCLF+1,CI
  10105. STD CM+3
  10106. PJN CUC3 IF NO 12 BIT OVERFLOW
  10107. AOD CM+3
  10108. SOD CM+2
  10109. CUC3 LDD CM+2
  10110. SBM FCLF,CI
  10111. STD CM+2
  10112.  
  10113. * INCREMENT CUMULATIVE SIZE FOR NEW FILE.
  10114.  
  10115. CUC4 LDD LF+1
  10116. RAD CM+3
  10117. SHN -14
  10118. ADD LF
  10119. RAD CM+2
  10120. SHN -14
  10121. ZJN CUC6 IF NO OVERFLOW
  10122. CUC5 ERROR COS * TOO MUCH INDIRECT ACCESS FILE SPACE.*
  10123.  
  10124. CUC6 LDD CM+2 CHECK SIZE AGAINST THAT ALLOWED
  10125. SBM MXCS
  10126. MJN CUC7 IF NO OVERFLOW
  10127. NJN CUC5 IF OVERFLOW
  10128. LDD CM+3
  10129. SBM MXCS+1
  10130. MJN CUC7 IF NO OVERFLOW
  10131. NJN CUC5 IF OVERFLOW
  10132. CUC7 LJM CUCX EXIT
  10133. VSS SPACE 4,10
  10134. ** VSS - VERIFY SYSTEM SECTOR.
  10135. *
  10136. * ENTRY (APTK - APSC) = SYSTEM SECTOR DISK ADDRESS.
  10137. *
  10138. * EXIT SYSTEM SECTOR READ.
  10139. * TO *ERR* IF BAD SYSTEM SECTOR OR READ ERROR.
  10140. * ERROR IDLE SET IF BAD SYSTEM SECTOR OR READ ERROR.
  10141. *
  10142. * CALLS PDV, PES, RSS.
  10143. *
  10144. * MACROS ERROR.
  10145.  
  10146.  
  10147. VSS SUBR ENTRY/EXIT
  10148. LDD EQ SET EST ORDINAL
  10149. STD T5
  10150. LDM APTK SET BEGINNING TRACK
  10151. STD T6
  10152. LDM APSC SET BEGINNING SECTOR
  10153. STD T7
  10154. SETMS READSTR,NS
  10155. RJM PDV PROCESS DEVICE STATUS
  10156. LDN 0 DO NOT VALIDATE FILE NAME
  10157. RJM RSS READ SYSTEM SECTOR
  10158. MJN VSS1 IF READ ERROR
  10159. ZJN VSSX IF VALID SYSTEM SECTOR
  10160. ERROR SSE,CH,,T5,,EI *EQXXX,DNYY, SYSTEM SECTOR ERROR.*
  10161.  
  10162. VSS1 RJM PES PROCESS ERROR STATUS
  10163. ERROR MSE,CH,,T5,,EI *EQXXX,DNYY, MASS STORAGE ERROR.*
  10164. SPACE 4,10
  10165. * COMMON DECKS.
  10166.  
  10167.  
  10168. RIS$ SET 1 READ INDIRECT-ACCESS FILE SYSTEM SECTOR
  10169. *CALL COMPRSS
  10170. SPACE 4,10
  10171. * CHECK FOR OVERFLOW.
  10172.  
  10173.  
  10174. OVERFLOW OVLC,BUF2-2 OVERFLOW INTO CATALOG BUFFER
  10175. SPACE 4,10
  10176. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  10177.  
  10178.  
  10179. QUAL *
  10180.  
  10181. APPB EQU /".O"/APPB
  10182. OVERLAY (ATTACH/UATTACH PROCESSING.)
  10183. SPACE 4,10
  10184. ** THIS OVERLAY PROCESSES THE DIRECT ACCESS FILE
  10185. * COMMANDS *ATTACH* AND *UATTACH*.
  10186.  
  10187.  
  10188. OVL BSS 0 ENTRY
  10189. LDD EQ RESET MASTER DEVICE EST ORDINAL
  10190. STD T5
  10191. LJM 0,P0 CALL FUNCTION PROCESSOR
  10192. TITLE COMMAND PROCESSING.
  10193. UAT SPACE 4,10
  10194. *** PROCESS *UATTACH* REQUEST.
  10195. *
  10196. * ATTACH DIRECT ACCESS FILE SPECIFIED BY *PFID* TO JOB,
  10197. * WITH LOCAL FILE NAME *FILE NAME*. DO NOT UPDATE ANY
  10198. * ACCESS COUNTS OR DATES, SINCE THIS IS NOT A USER ACCESS.
  10199.  
  10200.  
  10201. UAT BSS 0
  10202. LDM FNMD
  10203. SHN 21-1
  10204. MJN ATT IF WRITEABLE MODE ACCESS
  10205. ISTORE UCEA,(UJN UCE3) FORCE BYPASS OF DATE/TIME UPDATES
  10206. * UJN ATT ATTACH FILE
  10207. ATT SPACE 4,10
  10208. *** PROCESS *ATTACH* REQUEST.
  10209. *
  10210. * ATTACH DIRECT ACCESS FILE *PF NAME* TO JOB, WITH LOCAL
  10211. * FILE NAME *FILE NAME*.
  10212.  
  10213.  
  10214. ATT BSS 0 ENTRY
  10215. LDM FCDN,CI CHECK DEVICE NUMBER
  10216. LPN 77
  10217. ZJN ATT3 IF FILE ON MASTER DEVICE
  10218.  
  10219. * PROCESS ALTERNATE DEVICE ACCESS.
  10220.  
  10221. STD CM
  10222. LDM PFPN+4 SET FAMILY EST ORDINAL
  10223. RJM SDN SEARCH FOR DEVICE NUMBER
  10224. PJN ATT2 IF DEVICE FOUND
  10225. ADN 1
  10226. RJM PDA PROCESS DEVICE AVAILABILITY
  10227. ATT1 ERROR DAD,CH * DIRECT ACCESS DEVICE ERROR.*
  10228.  
  10229. ATT2 RJM IRA PRESET COMMON DECKS FOR FILE DEVICE
  10230. LDD CC
  10231. LMN CCUA
  10232. ATT3 ZJN ATT5 IF *UATTACH* REQUEST
  10233. SFA EST,T5 CHECK ERROR IDLE
  10234. ADK EQDE
  10235. CRD CM
  10236. LDD CM+4
  10237. SHN 3
  10238. ADN ACGL
  10239. CRD CM
  10240. LDD CM+4
  10241. LPN 20
  10242. ZJN ATT5 IF NO ERROR IDLE ON EQUIPMENT
  10243. LDM SSJS
  10244. ZJN ATT4 IF NOT *SSJ=* JOB
  10245. LDM PFSR
  10246. LPN 77
  10247. LMN SRIE
  10248. ZJN ATT5 IF *IGNORE ERROR IDLE* SPECIAL REQUEST
  10249. ATT4 ERROR PFN,CH * DEVICE UNAVAILABLE.*
  10250.  
  10251. ATT4.1 ERROR TNR,CH,,T5 * EQXXX,DNYY,TRACK NOT RESERVED.*
  10252.  
  10253. * INITIALIZE FOR SYSTEM SECTOR PROCESSING.
  10254.  
  10255. ATT5 LDM FCBT,CI SET FILE FIRST TRACK
  10256. STD P2
  10257. STD T6
  10258. STM PFFT
  10259. RJM ITC INTERLOCK TRACK CHAIN FOR FILE
  10260. NJN ATT4.1 IF TRACK NOT RESERVED
  10261. LDD T5 SAVE THE FILES EST ORDINAL
  10262. STD FS
  10263. STM PFEQ
  10264. AOM DAIF SET INTERLOCK FLAG
  10265. RJM CSL CHECK SIZE LIMITS
  10266. LDD P2 RESET FIRST TRACK
  10267. STD T6
  10268. SETMS IO
  10269. RJM PDV PROCESS DEVICE STATUS
  10270. LDN 0 DONT VERIFY FILE NAME IN SYSTEM SECTOR
  10271. RJM RSS READ SYSTEM SECTOR
  10272. ZJN ATT8 IF LEGAL SYSTEM SECTOR
  10273. MJN ATT7 IF READ ERROR
  10274. LDC /ERRMSG/DAF*4 *EQXXX,DNYY, DIRECT ACCESS FILE ERROR.*
  10275. UJN ATT9 PROCESS FILE ERROR
  10276.  
  10277. ATT7 RJM PES PROCESS ERROR STATUS
  10278. LDC /ERRMSG/MSE*4 *EQXXX,DNYY, MASS STORAGE ERROR.*
  10279. UJN ATT9 PROCESS FILE ERROR
  10280.  
  10281. * CHECK FOR AN EXISTING UTILITY ACTIVE FILE CONDITION.
  10282.  
  10283. ATT8 LDM CASS CHECK CURRENT ACCESS MODE
  10284. SHN 21-6
  10285. PJN ATT11 IF UTILITY MODE NOT SET
  10286. LDD CC CHECK FOR ANOTHER UTILITY ATTACH REQUEST
  10287. LMN CCUA
  10288. NJN ATT11 IF NOT UTILITY ATTACH
  10289. LDN /ERRMSG/FBS*4 * FILE BUSY.*
  10290. ATT9 LJM PFE PROCESS FILE ERROR
  10291.  
  10292. ATT10 LDC /ERRMSG/FSE*4 * FILE BOI/EOI/UI MISMATCH.*
  10293. UJN ATT9 PROCESS FILE ERROR
  10294.  
  10295. * PROCESS USER INDEX/CREATION DATE VALIDATION.
  10296.  
  10297. ATT11 LDM FCUI,CI COMPARE USER INDEX FIELDS
  10298. LMM CTSS+FCUI
  10299. LPN 77
  10300. NJN ATT10 IF MISMATCH ON USER INDEX
  10301. LDM FCUI+1,CI
  10302. LMM CTSS+FCUI+1
  10303. NJN ATT10 IF MISMATCH ON USER INDEX
  10304. LDN 2 SET UP CHECK ON CREATION DATE
  10305. STD P0
  10306. ATT12 LDM FCCD+2,CI
  10307. ATTA EQU *-1
  10308. LMM CTSS+FCCD,P0
  10309. NJN ATT10 IF NO MATCH ON CREATION DATE
  10310. SOM ATTA
  10311. SOD P0
  10312. PJN ATT12 IF MORE DATA TO CHECK
  10313.  
  10314. * PROCESS ERROR STATUS FIELDS.
  10315.  
  10316. LDM FCEC,CI GET ERROR STATUS FROM PFC
  10317. SHN -6
  10318. STD T1
  10319. RAM ATTC
  10320. LDM CTSS+FCEC GET ERROR STATUS FROM SYSTEM SECTOR
  10321. SHN -6
  10322. STD P0
  10323. NJN ATT12.1 IF ERROR STATUS SET IN SYSTEM SECTOR
  10324. LDD T1
  10325. NJN ATT13 IF ERROR STATUS SET IN PFC
  10326. UJN ATT14 CHECK FILE MODE
  10327.  
  10328. ATT12.1 SCN ** COMBINE BOTH ERROR STATUS FIELDS
  10329. * SCN (T1)
  10330. ATTC EQU *-1
  10331. LMD T1
  10332. SHN 6
  10333. STD P0
  10334. LDM FCEC,CI
  10335. LPN 77
  10336. STM CTSS+FCEC CLEAR CODE IN SYSTEM SECTOR
  10337. LMD P0
  10338. STM FCEC,CI SET ERROR CODE IN CATALOG
  10339. ENDMS
  10340. LDD EQ SET MASTER DEVICE EST ORDINAL
  10341. STD T5
  10342. LDD CB REWRITE CATALOG ENTRY
  10343. RJM WBI
  10344. ENDMS
  10345. LDD FS RESET FILE EST ORDINAL
  10346. STD T5
  10347. LDD P2
  10348. STD T6
  10349. ATT13 LJM ATT15 REWRITE SYSTEM SECTOR
  10350.  
  10351. * CHECK FILE MODE AND UPDATE FIELDS IN SYSTEM SECTOR.
  10352.  
  10353. ATT14 RJM CFM CHECK FILE MODE
  10354.  
  10355. * SAVE JSN, MAINFRAME ID, AND DATE/TIME FOR WRITEABLE ACCESS.
  10356.  
  10357. LDM FNMD CHECK MODE REQUESTED
  10358. SHN 21-1
  10359. PJN ATT14.1 IF NOT WRITEABLE MODE ACCESS
  10360. LDN PDTL SET CURRENT DATE AND TIME
  10361. CRM WDSS,ON
  10362. LDK MMFL GET MAINFRAME ID
  10363. CRD CM
  10364. LDD CM SET MAINFRAME ID
  10365. STM WDSS
  10366. LDD CP GET EJT ORDINAL
  10367. ADN TFSW
  10368. CRD CM
  10369. SFA EJT,CM SET *JSNE* WORD OF EJT
  10370. ADK JSNE
  10371. CRM WJSS,ON
  10372.  
  10373. * CHECK FOR BOI/EOI MISMATCH. THIS IS DONE AFTER THE CALL TO
  10374. * *CFM*, TO AVOID THE CHECK IF THE FILE IS CURRENTLY ATTACHED
  10375. * IN WRITE MODE. THE EOI MAY NOT BE VALID IN THAT CASE.
  10376.  
  10377. * ROUTINES RESIDENT IN *BUF2* MAY NOT BE USED AFTER THIS POINT.
  10378.  
  10379. ATT14.1 LDN SSTL CHECK BOI/EOI VALIDATION ENABLED
  10380. CRD CM
  10381. LDD CM
  10382. SHN 21-4
  10383. MJN ATT15 IF VALIDATION NOT ENABLED
  10384. LDD P2 SET FIRST TRACK
  10385. STD T6
  10386. RJM SEI SKIP TO END OF INFORMATION
  10387. SETMS IO
  10388. RJM PDV PROCESS DEVICE STATUS
  10389. LDC BUF2 PERFORM BOI/EOI VALIDATION
  10390. RJM RDS READ EOI SECTOR
  10391. MJP ATT7 IF READ ERROR
  10392. LDM BUF2+FTEI CHECK FIRST TRACK POINTER
  10393. LMD P2
  10394. ADM BUF2 CHECK LINKAGE BYTES
  10395. ADM BUF2+1
  10396. NJP ATT10 IF BOI/EOI MISMATCH
  10397.  
  10398. * REWRITE SYSTEM SECTOR.
  10399.  
  10400. ATT15 LDD MA SET PROPER FILE TYPE IN SYSTEM SECTOR
  10401. CWD FN
  10402. CRM FNSS,ON
  10403. LDC PMFT*100
  10404. STM FNSS+4
  10405. LDD P2 RESET FIRST TRACK
  10406. STD T6
  10407. SETMS IO,RW
  10408. RJM PDV PROCESS DEVICE STATUS
  10409. RJM WSS UPDATE SYSTEM SECTOR
  10410. PJN ATT15.1 IF NO ERROR
  10411. RJM PES PROCESS ERROR STATUS
  10412. LDC /ERRMSG/MSE*4 *EQXXX,DNYY, MASS STORAGE ERROR.*
  10413. LJM PFE PROCESS FILE ERROR
  10414.  
  10415. ATT15.1 ENDMS
  10416. LDD T6 RELEASE FILE INTERLOCK
  10417. RJM CTI
  10418. LDN 0 CLEAR INTERLOCK FLAG
  10419. STM DAIF
  10420.  
  10421. * PROCESS CATALOG ERROR STATUS.
  10422.  
  10423. LDM FCEC,CI CHECK CATALOG ERROR STATUS
  10424. SHN 0-4 FORM ERROR CODE
  10425. LPN 34
  10426. ZJN ATT16 IF NO ERROR
  10427. SBN 4
  10428. RAM ATTD SET ERROR CODE FOR MESSAGE
  10429. ATTD EQU *+2
  10430. ERROR EDA * ERROR IN FILE DATA.*
  10431. * ERROR EPT * ERROR IN PERMIT DATA.*
  10432. * ERROR EDP * DATA/PERMIT ERRORS.*
  10433. * ERROR FLC * EOI CHANGED BY RECOVERY.*
  10434.  
  10435. ERRNZ /ERRMSG/EPT-/ERRMSG/EDA-1 ERRORS MUST BE CONTIGUOUS
  10436. ERRNZ /ERRMSG/EDP-/ERRMSG/EPT-1 ERRORS MUST BE CONTIGUOUS
  10437. ERRNZ /ERRMSG/FLC-/ERRMSG/EDP-1 ERRORS MUST BE CONTIGUOUS
  10438.  
  10439. * CREATE FNT/FST FOR FILE ATTACHED.
  10440.  
  10441. ATT16 RJM CFE CREATE FNT/FST ENTRY
  10442.  
  10443. * RESET TO MASTER DEVICE.
  10444.  
  10445. LDD T5 CHECK FILE EST ORDINAL
  10446. LMD EQ
  10447. ZJN ATT17 IF FILE RESIDES ON MASTER DEVICE
  10448. LDD EQ RESET EST ORDINAL
  10449. STD T5
  10450. RJM IRA PRESET COMMON DECKS FOR MASTER DEVICE
  10451.  
  10452. * UPDATE PERMITS AND CATALOG ENTRY.
  10453.  
  10454. ATT17 LDD CC CHECK COMMAND CODE
  10455. LMN CCUA
  10456. ZJN ATT18 IF *UATTACH* REQUEST
  10457. LDD PB
  10458. ZJN ATT19 IF NO PERMIT BUFFER
  10459. EXECUTE 3PE LOAD PERMIT UPDATE ROUTINES
  10460. AOM UPIB INDICATE THAT *BFMS* WAS USED
  10461. RJM UPI UPDATE PERMISSION INFORMATION
  10462. UJN ATT19 CHECK ACCESS MODE
  10463.  
  10464. ATT18 ISTORE UCEB,(UJN UCE3) FORCE BYPASS OF FCMD, FCAD UPDATE
  10465. ISTORE UCEC,(UJN UCE4) FORCE BYPASS OF FCAC UPDATE
  10466. ATT19 LDM FNMD CHECK MODE REQUESTED
  10467. SHN 21-1
  10468. PJN ATT20 IF NOT WRITEABLE MODE ACCESS
  10469. LDC STMI+CI FORCE FCUD UPDATE (ALSO FCMD ON *ATTACH*)
  10470. STM UCEA
  10471. LDN 0 CLEAR FILE LENGTH
  10472. STM FCLF,CI
  10473. STM FCLF+1,CI
  10474. LDD CI CLEAR ALTERNATE STORAGE INFORMATION IN PFC
  10475. RAM ATTH+1
  10476. LDN ZERL
  10477. ATTH CRM FCAF,ON
  10478. LDD CI CLEAR TAPE ALTERNATE STORAGE INFORMATION
  10479. RAM ATTI+1
  10480. LDN ZERL
  10481. ATTI CRM FCTF,ON
  10482. UJN ATT21 UPDATE CATALOG ENTRY
  10483.  
  10484. ATT20 LDM MODE
  10485. LPN 37
  10486. LMN PTRD
  10487. NJN ATT21 IF NOT READ MODE ACCESS
  10488. LDD LF UPDATE FILE LENGTH IN CATALOG
  10489. STM FCLF,CI
  10490. LDD LF+1
  10491. STM FCLF+1,CI
  10492. ATT21 RJM UCE UPDATE CATALOG ENTRY
  10493. ENDMS
  10494. RJM CCI CLEAR CATALOG INTERLOCK
  10495.  
  10496. * UPDATE FET WITH PARAMETERS FROM CATALOG.
  10497.  
  10498. LDC PFSN SET FILE NAME
  10499. RJM SFN
  10500. LDM PFSP
  10501. ZJN ATT22 IF SECURITY PROCESSING BIT NOT SET
  10502. RJM SFA RETURN ACCESS LEVEL TO FET
  10503. ADN CFAL
  10504. CRD CM
  10505. LDM FCAL,CI
  10506. LMD CM+1
  10507. LPN 7
  10508. LMD CM+1
  10509. STD CM+1
  10510. RJM SFA
  10511. ADN CFAL
  10512. CWD CM
  10513. ATT22 LDD CI SET USER CONTROL WORD ADDRESS
  10514. RAM ATTE
  10515. LDN CFUC
  10516. SBM FETL
  10517. PJN ATT23 IF FET TOO SHORT
  10518. RJM SFA
  10519. ADN CFUC
  10520. CWM FCCW,ON RETURN USER CONTROL WORD TO FET
  10521. ATTE EQU *-1
  10522.  
  10523. * IF *UATTACH* REQUEST, WRITE COPY OF THE *PFC* ENTRY.
  10524.  
  10525. ATT23 LDD CC CHECK COMMAND CODE
  10526. LMN CCUA
  10527. ZJN ATT24 IF *UATTACH* COMMAND
  10528. LJM ATT26 TERMINATE PROGRAM
  10529.  
  10530. ATT24 RJM SFA READ FET *FIRST* POINTER
  10531. ADN 1
  10532. CRD CM
  10533. LDD CM+3 VERIFY *FIRST* POINTER
  10534. LPN 77
  10535. SHN 6
  10536. ADD RA
  10537. SHN 6
  10538. ADD CM+4
  10539. ADN NWCE
  10540. SBN 1
  10541. SHN -6
  10542. SBD RA
  10543. SBD FL
  10544. MJN ATT25 IF BUFFER WITHIN JOB FL
  10545. ERROR ILR,CH,IW,,EC3 * PFM INCORRECT REQUEST.*
  10546.  
  10547. ATT25 LDD CI COPY CATALOG ENTRY TO BUFFER
  10548. STM ATTF
  10549. LDN NWCE NUMBER OF PFC WORDS
  10550. STD T1
  10551. LDD CM+3 FORM *CM* ADDRESS
  10552. LPN 77
  10553. SHN 6
  10554. ADD RA
  10555. SHN 6
  10556. ADD CM+4
  10557. CWM **,T1
  10558. ATTF EQU *-1 (CATALOG ENTRY ADDRESS)
  10559. ATT26 EXECUTE 3PU TERMINATE PROGRAM
  10560. TITLE SUBROUTINES.
  10561. CFE SPACE 4,20
  10562. ** CFE - CREATE FNT/FST ENTRY FOR ATTACHED FILE.
  10563. *
  10564. * ENTRY (CC) = COMMAND CODE.
  10565. * (CI) = POINTER TO CATALOG ENTRY FOR FILE.
  10566. * (FNMD) = FNT STATUS MODE.
  10567. * (FNTA) = FNT ADDRESS IN NFL.
  10568. * (PFEQ) = EST ORDINAL FOR FILE.
  10569. * (PFSN) = SYSTEM FILE NAME.
  10570. * (PFUC) = USER CONTROLS.
  10571. *
  10572. * EXIT FNT/FST WRITTEN TO CENTRAL MEMORY.
  10573. * PERMANENT FILE USER COUNT INCREMENTED.
  10574. *
  10575. * USES FA, CM - CM+4, FN - FN+4, FS - FS+4.
  10576. *
  10577. * CALLS SFN.
  10578. *
  10579. * MACROS MONITOR, NFA.
  10580.  
  10581.  
  10582. CFE SUBR ENTRY/EXIT
  10583. LDC PFSN SET FILE NAME
  10584. RJM SFN
  10585. LDC PMFT*100 SET FILE TYPE
  10586. RAD FN+4
  10587. LDM FNTA SET FNT ADDRESS
  10588. STD FA
  10589. LDM PFEQ SET EST ORDINAL FOR FILE
  10590. STD FS
  10591. LDM FCBT,CI SET FIRST TRACK FOR FILE
  10592. STD FS+1
  10593. STD FS+2
  10594. LDD CC CHECK COMMAND CODE
  10595. LMN CCUA
  10596. ZJN CFE1 IF *UATTACH* COMMAND
  10597. LDN FSMS SET SECTOR
  10598. STD FS+3
  10599. LDN 4 SET OPERATION COMPLETE
  10600. STD FS+4
  10601. LDM FNMD
  10602. LPN 35
  10603. UJN CFE2 SET STATUS MODE
  10604.  
  10605. CFE1 LDN 0 SET SECTOR
  10606. STD FS+3
  10607. LDC 4004 SET OPERATION COMPLETE
  10608. STD FS+4
  10609. LDM FNMD
  10610. LPN 35
  10611. LMN 2
  10612. CFE2 ADM PFSN+3 SET STATUS MODE
  10613. STD FN+3
  10614. LDN ZERL SET FILE SIZE CONTROL
  10615. CRD CM
  10616. LDM PFUC SET *FS* INDEX IN *FUTL* WORD
  10617. SHN -11
  10618. SHN 6
  10619. STD CM+2
  10620. LDM FCAL,CI SET ACCESS LEVEL IN FNT
  10621. RAD CM+2
  10622. NFA FA,R RESTORE FNT ENTRY
  10623. ADK FNTL
  10624. CWD FN
  10625. ADN FSTL-FNTL
  10626. CWD FS
  10627. ADN FUTL-FSTL
  10628. CWD CM
  10629. RJM SFA SET FNT POINTER IN FET
  10630. ADN 4
  10631. CRD CM
  10632. LDD FA
  10633. STD CM
  10634. RJM SFA
  10635. ADN 4
  10636. CWD CM
  10637. LDM PFEQ INCREMENT PERMANENT FILE USER COUNT
  10638. STD CM+1
  10639. LDN IUCS
  10640. STD CM+3
  10641. MONITOR SMDM
  10642. UJP CFEX RETURN
  10643. PFE SPACE 4,15
  10644. ** PFE - PROCESS FILE ERROR CONDITION.
  10645. *
  10646. * ENTRY (A) = ERROR CODE AND EXIT CASE.
  10647. * (PFEQ) = EST ORDINAL FOR FILE.
  10648. * (PFFT) = FIRST TRACK FOR FILE.
  10649. *
  10650. * EXIT *TERW* UPDATED WITH TIMED/EVENT DATA.
  10651. *
  10652. * USES CM - CM+4.
  10653. *
  10654. *
  10655. * MACROS ENDMS, ERROR.
  10656.  
  10657.  
  10658. PFE BSS 0 ENTRY
  10659. STM PFEA SET ERROR CODE AND EXIT CASE
  10660. ENDMS
  10661. LDM PFEQ SET EVENT EST ORDINAL
  10662. STM ERRE
  10663. LDM PFFT SET EVENT TRACK
  10664. STM ERRC
  10665. LDC ART SET EVENT TIME
  10666. STM ERRD
  10667. PFEA EQU *+3
  10668. ERROR FBS,,,FS *(FILE NAME) BUSY.*
  10669. * ERROR FSE,,,FS * FILE BOI/EOI/UI MISMATCH.*
  10670. * ERROR ILR,,,FS * PFM INCORRECT REQUEST.*
  10671. * ERROR FIN,,,FS,EC2 *(FILE NAME) INTERLOCKED.*
  10672. * ERROR DAF,,,FS *EQXXX,DNYY, DIRECT ACCESS FILE ERROR.*
  10673. * ERROR MSE,,,FS *EQXXX,DNYY, MASS STORAGE ERROR.*
  10674. SPACE 4,10
  10675. * COMMON DECKS.
  10676.  
  10677.  
  10678. *CALL COMPWSS
  10679. TITLE OVERLAYABLE SUBROUTINES.
  10680. * THE FOLLOWING ROUTINES MAY BE OVERLAID BY *BUF2*.
  10681.  
  10682. ERRNG BUF2-* OVERFLOW INTO EOI SECTOR BUFFER
  10683. CFM SPACE 4,30
  10684. ** CFM - CHECK FILE MODE.
  10685. *
  10686. * ENTRY (CASS) = CURRENT ACCESS MODE.
  10687. * (FISS) = FAST ATTACH FILE INDEX.
  10688. * (CC) = COMMAND CODE.
  10689. * (MODE) = DESIRED ACCESS MODE.
  10690. * (UCSS+1) - (UCSS+4) = USER COUNTS.
  10691. * (FS) = EST ORDINAL OF FILE.
  10692. * (T6) = FIRST TRACK OF FILE.
  10693. *
  10694. * EXIT SYSTEM SECTOR UPDATED FOR NEW ACCESS MODE.
  10695. * (T1) = REQUESTED MODE.
  10696. * TO *PFE* FOR ERROR PROCESSING IF ACCESS NOT ALLOWED.
  10697. *
  10698. * CALLS DLT.
  10699. *
  10700. * USES P0, P1, T1, T3.
  10701. *
  10702. * DEFINE (P1) = CURRENT ACCESS MODE FLAGS.
  10703. * (T3) = ADDRESS OF GLOBAL USER COUNTS.
  10704. * (T7) = ADDRESS OF LOCAL USER COUNTS.
  10705. *
  10706. * NOTES IF A WRITEABLE MODE *ATTACH* IS ATTEMPTED ON A
  10707. * FILE THAT IS ALREADY UTILITY ATTACHED, A *FILE
  10708. * INTERLOCKED* STATUS WILL BE RETURNED.
  10709.  
  10710.  
  10711. CFM SUBR ENTRY/EXIT
  10712. LDC UCSS+1 ADDRESS OF GLOBAL USER COUNTS
  10713. STD T3
  10714. LDM CASS SET CURRENT ACCESS MODE
  10715. LPC 132
  10716. STD P1
  10717. LDM MODE
  10718. LPN 37
  10719. STD T1 DESIRED ACCESS MODE
  10720. LDM FISS
  10721. NJN CFM4 IF FAST ATTACH FILE
  10722. RJM DLT DETERMINE LOCAL USER TABLE ADDRESS
  10723. LDD CC CHECK FOR *UATTACH* REQUEST
  10724. LMN CCUA
  10725. NJN CFM1 IF NOT *UATTACH* REQUEST
  10726. LDD HN SET UTILITY MODE
  10727. RAM CASS
  10728. LDN 2 SET LOCAL *UATTACH* FLAG
  10729. RAM -1,T7
  10730. CFM1 LDM CFMT,T1 SET PROCESSOR ADDRESS
  10731. STD P0
  10732. ZJN CFM2 IF INCORRECT MODE
  10733. LDD P1
  10734. LJM 0,P0
  10735.  
  10736. CFM2 LDN /ERRMSG/ILR*4 * PFM INCORRECT REQUEST.*
  10737. LJM PFE PROCESS FILE ACCESS ERROR
  10738.  
  10739. * WRITE ACCESS REQUESTED.
  10740.  
  10741. CFM3 ADI T3 CHECK IF ANY ACTIVE USERS ON FILE
  10742. ADM 1,T3
  10743. ADM 2,T3
  10744. ADM 3,T3
  10745. CFM4 NJN CFM9 IF ACCESS NOT ALLOWED
  10746. LDN 32 SET WRITE USER
  10747.  
  10748. * SET NEW FILE MODE.
  10749.  
  10750. CFM5 RAM CASS SET NEW FILE MODE
  10751. AOM -1,T7 SET LOCAL WRITE FLAG
  10752. LJM CFMX RETURN
  10753.  
  10754. * MODIFY ACCESS REQUESTED.
  10755.  
  10756. CFM6 ADI T3 CHECK FOR W, M, A, U, R/A, R/U OR R USERS
  10757. ADM 1,T3
  10758. ADM 2,T3
  10759. NJN CFM9 IF ACCESS NOT ALLOWED
  10760. LDN 12 SET MODIFY USER
  10761. UJN CFM5 SET NEW FILE MODE
  10762.  
  10763. * APPEND ACCESS REQUESTED.
  10764.  
  10765. CFM7 ADI T3 CHECK FOR W, M, A, U, R/U OR R USERS
  10766. ADM 1,T3
  10767. NJN CFM9 IF ACCESS NOT ALLOWED
  10768. LDN 2 SET APPEND USER
  10769. UJN CFM5 SET NEW FILE MODE
  10770.  
  10771. * UPDATE ACCESS REQUESTED.
  10772.  
  10773. CFM8 ADI T3 CHECK FOR W, M, A, U, R/A OR R USERS
  10774. ADM 2,T3
  10775. NJN CFM9 IF ACCESS NOT ALLOWED
  10776. LDN 10 SET UPDATE USER
  10777. UJN CFM5 SET NEW FILE MODE
  10778.  
  10779. * ACCESS NOT ALLOWED.
  10780.  
  10781. CFM9 LDD P1 CHECK FOR UTILITY ATTACH MODE
  10782. SHN 21-6
  10783. PJN CFM10 IF FILE NOT CURRENTLY UTILITY ATTACHED
  10784. LDC EC2*1000+/ERRMSG/FIN*4 *(FILE NAME) INTERLOCKED.*
  10785. UJN CFM11 PROCESS FILE INTERLOCKED CONDITION
  10786.  
  10787. CFM10 LDN /ERRMSG/FBS*4 *(FILE NAME) BUSY.*
  10788. CFM11 LJM PFE PROCESS FILE BUSY EXIT
  10789.  
  10790. * READ OR EXECUTE ACCESS REQUESTED.
  10791.  
  10792. CFM12 LPN 32 DO NOT ALLOW W, M, A OR U USERS
  10793. CFM13 NJN CFM9 IF ACCESS NOT ALLOWED
  10794. * LDN 0
  10795.  
  10796. * INCREMENT USER COUNTS.
  10797.  
  10798. CFM14 STM CFMA+1
  10799. STM CFMB+1
  10800. STM CFMC+1
  10801. CFMA LDM *,T3 CHECK GLOBAL USER COUNT
  10802. * LDM 0,T3 (READ MODE)
  10803. * LDM 1,T3 (READ/ALLOW UPDATE MODE)
  10804. * LDM 2,T3 (READ/ALLOW APPEND MODE)
  10805. * LDM 3,T3 (READ/ALLOW MODIFY MODE)
  10806. LMC 7777
  10807. ZJN CFM10 IF USER COUNT OVERFLOW
  10808. CFMB AOM *,T3 INCREMENT GLOBAL USER COUNT
  10809. * AOM 0,T3 (READ MODE)
  10810. * AOM 1,T3 (READ/ALLOW UPDATE MODE)
  10811. * AOM 2,T3 (READ/ALLOW APPEND MODE)
  10812. * AOM 3,T3 (READ/ALLOW MODIFY MODE)
  10813. CFMC AOM *,T7 INCREMENT LOCAL USER COUNT
  10814. * AOM 0,T7 (READ MODE)
  10815. * AOM 1,T7 (READ/ALLOW UPDATE MODE)
  10816. * AOM 2,T7 (READ/ALLOW APPEND MODE)
  10817. * AOM 3,T7 (READ/ALLOW MODIFY MODE)
  10818. LJM CFMX RETURN
  10819.  
  10820. * READ / ALLOW MODIFY ACCESS REQUESTED.
  10821.  
  10822. CFM15 LPN 20 DO NOT ALLOW W USERS
  10823. NJN CFM13 IF ACCESS NOT ALLOWED
  10824. LDN 3
  10825. UJN CFM14 INCREMENT USER COUNTS
  10826.  
  10827. * READ / ALLOW APPEND ACCESS REQUESTED.
  10828.  
  10829. CFM16 LPN 30 DO NOT ALLOW W, M OR U USERS
  10830. NJN CFM13 IF ACCESS NOT ALLOWED
  10831. LDN 2
  10832. UJN CFM14 INCREMENT USER COUNTS
  10833.  
  10834. * READ / ALLOW UPDATE ACCESS REQUESTED.
  10835.  
  10836. CFM17 LPN 22 DO NOT ALLOW W, M OR A USERS
  10837. NJN CFM13 IF ACCESS NOT ALLOWED
  10838. LDN 1
  10839. UJN CFM14 INCREMENT USER COUNTS
  10840. CFMT SPACE 4,15
  10841. CFMT BSS 0 FILE MODE PROCESSORS
  10842. LOC 0
  10843. CON CFM3 WRITE
  10844. CON CFM12 READ
  10845. CON CFM7 APPEND
  10846. CON CFM12 EXECUTE
  10847. CON 0 NULL
  10848. CON CFM6 MODIFY
  10849. CON CFM15 READ / ALLOW MODIFY
  10850. CON CFM16 READ / ALLOW APPEND
  10851. CON CFM8 UPDATE
  10852. CON CFM17 READ / ALLOW UPDATE
  10853. LOC *O
  10854. ERRNZ *-CFMT-PTLM
  10855. CSL SPACE 4,20
  10856. ** CSL - CHECK SIZE LIMITS.
  10857. *
  10858. * ENTRY (T5) = EST ORDINAL OF FILE.
  10859. * (T6) = FIRST TRACK OF FILE.
  10860. * (P2) = FIRST TRACK OF FILE.
  10861. * (MXDS - MXDS+1) = MAXIMUM SIZE FOR DIRECT ACCESS FILE.
  10862. * (FNMD) = FNT STATUS EQUIVALENCED MODE.
  10863. *
  10864. * EXIT TO ERR IF SIZE LIMIT EXCEDED.
  10865. * (LF - LF+1) = FILE LENGTH FOR *PFC* ENTRY.
  10866. * (T6) = TRACK FOR EOI.
  10867. * (T7) = SECTOR FOR EOI.
  10868. *
  10869. * USES T2, T3.
  10870. *
  10871. * CALLS SEI.
  10872. *
  10873. * MACROS ERROR.
  10874.  
  10875.  
  10876. CSL SUBR ENTRY/EXIT
  10877. LDM FNMD
  10878. LPN 2
  10879. ZJN CSL1 IF NOT WRITE FUNCTION
  10880. AOM CSLA SET WRITEABLE MODE
  10881. LDN 0 CLEAR FILE LENGTH FOR WRITE MODE
  10882. STD LF
  10883. STD LF+1
  10884. CSL1 LDM FCLF,CI CHECK FILE LENGTH IN *PFC*
  10885. STD T2
  10886. LDM FCLF+1,CI
  10887. STD T3
  10888. ADD T2
  10889. NJN CSL2 IF FILE LENGTH DEFINED IN *PFC*
  10890. RJM SEI SKIP TO END OF INFORMATION
  10891. CSL2 LDN 0 TEST ACCESS MODE
  10892. * LDN 1 (SET IF WRITEABLE MODE)
  10893. CSLA EQU *-1
  10894. NJN CSL4 IF WRITEABLE MODE
  10895. LDD T2 SET FILE LENGTH
  10896. STD LF
  10897. LDD T3
  10898. STD LF+1
  10899. CSL3 UJN CSLX RETURN
  10900.  
  10901. CSL4 LDM MXDS CHECK FILE LENGTH
  10902. ADM MXDS+1
  10903. ZJN CSL3 IF UNLIMITED ACCESS
  10904. LDM MXDS
  10905. SBD T2
  10906. MJN CSL5 IF LENGTH LIMIT EXCEEDED
  10907. NJN CSL3 IF LIMIT NOT EXCEEDED
  10908. LDM MXDS+1
  10909. SBD T3
  10910. PJN CSL3 IF LIMIT NOT EXCEEDED
  10911. CSL5 ERROR FTL,CH * FILE TOO LONG.*
  10912. DLT SPACE 4,10
  10913. ** DLT - DETERMINE LOCAL USER TABLE TO UPDATE.
  10914. *
  10915. * ENTRY (BFMS - BFMS+500) - SYSTEM SECTOR.
  10916. * (T5) = EST ORDINAL.
  10917. *
  10918. * EXIT (T7) - ADDRESS OF LOCAL USER COUNTS.
  10919. *
  10920. * USES T7.
  10921. *
  10922. * CALLS SMI.
  10923.  
  10924.  
  10925. DLT SUBR ENTRY/EXIT
  10926. RJM SMI COMPUTE LOCAL USER COUNT BASE ADDRESS
  10927. STD T0
  10928. SHN 2
  10929. ADD T0
  10930. ADC UCSS+1
  10931. STD T7
  10932. UJN DLTX
  10933. SPACE 4,10
  10934. * OVERLAYABLE COMMON DECKS.
  10935.  
  10936.  
  10937. EJT$ SET 0 DEFINE EJT ACCESS
  10938. *CALL COMPGFP
  10939. *CALL COMPRSS
  10940. *CALL COMPSDN
  10941. *CALL COMPSMI
  10942. SPACE 4,10
  10943. * CHECK FOR OVERFLOW.
  10944.  
  10945.  
  10946. OVERFLOW OVLC,BUF1-2 OVERFLOW INTO CATALOG BUFFER
  10947. OVERLAY (CATLIST PROCESSING.),OVLA
  10948. SPACE 4,10
  10949. ** THIS OVERLAY READS PERMANENT FILE CATALOG ENTRIES
  10950. * OR PERMIT ENTRIES FOR A CENTRAL PROCESSOR PROGRAM.
  10951.  
  10952.  
  10953. OVL BSS 0 ENTRY
  10954. * LJM CAT PROCESS REQUEST
  10955. SPACE 4,10
  10956. *** PROCESS *CATLIST* REQUEST.
  10957. *
  10958. * CALL.
  10959. *
  10960. *T 18/PFM,6/P,12/CCCT,24/FET
  10961. *
  10962. *T FET 42/ *FILENAME*,18/ STATUS
  10963. *T, 60/ FIRST
  10964. *T, 60/ IN
  10965. *T, 60/ OUT
  10966. *T, 60/ LIMIT
  10967. *T, 60/
  10968. *T, 60/ RESERVED
  10969. *T, 60/
  10970. *T, 42/ *PF NAME*, 6/ SR, 12/ MODE
  10971. *T, 42/ OUAN, 6/ DN, 12/
  10972. *
  10973. * STATUS RETURNED,
  10974. * 33 BUFFER FULL.
  10975. * 1033 REQUEST COMPLETED.
  10976. * BUFFER IS FILLED FROM IN TO LIMIT - 1.
  10977. *
  10978. * FET+6 RESERVED FOR RECALL INFORMATION TO *PFM*.
  10979. *
  10980. * PF NAME = PERMANENT FILE NAME.
  10981. *
  10982. * SR = SPECIAL REQUEST.
  10983. * IF SR = SRDN, LIST ONLY FILES ON SPECIFIED DEVICE.
  10984. *
  10985. * MODE = 0 SEARCH FOR CATALOG ENTRIES.
  10986. * MODE = 1 SEARCH FOR PERMIT ENTRIES.
  10987. * MODE = 2 SEARCH FOR CATALOG ENTRIES/*PFID* ACCESS.
  10988. *
  10989. * OUAN = ALTERNATE CATALOG SEARCHED.
  10990. *
  10991. SPACE 4,10
  10992. *** EXIT.
  10993. *
  10994. * PF CATALOG ENTRIES WRITTEN TO CM.
  10995. *
  10996. * FOR NORMAL CATALOG SEARCH FULL CATALOG ENTRY
  10997. * WRITTEN TO CM (SEE COMSPFM)
  10998. *
  10999. * FOR ALTERNATE CATALOG SEARCH ENTIRE CATALOG IS
  11000. * RETURNED WITH THE FOLLOWING FIELDS CLEARED-
  11001. * USER INDEX.
  11002. * PASSWORD AND PASSWORD EXPIRATION DATE.
  11003. * ACCESS LEVEL AND ACCESS CATEGORY SET.
  11004. *
  11005. * FOR *PFID* ACCESS CATALOG SEARCH, THE FULL CATALOG
  11006. * ENTRY IS WRITTEN TO CM, WITH A WORD PRECEDING
  11007. * EACH ENTRY CONTAINING THE *PFID* (DISK ADDRESS)
  11008. * FOR THAT ENTRY.
  11009. *
  11010. * IN ALL OF THE ABOVE CASES, IF THE FILE ACCESS
  11011. * LEVEL IS ABOVE THE JOB ACCESS LEVEL, THE FOLLOWING
  11012. * FIELDS ARE ALSO CLEARED -
  11013. * PASSWORD (REPLACED BY ASTERISKS).
  11014. * PASSWORD EXPIRATION DATE.
  11015. * ACCESS CATEGORY SET.
  11016. * USER CONTROL WORD.
  11017. *
  11018. * FOR A PERMIT DATA REQUEST, THE FULL PERMIT ENTRY IS
  11019. * WRITTEN TO CM. THIS TYPE OF REQUEST IS NOT ALLOWED
  11020. * ON A FILE WITH AN ACCESS LEVEL HIGHER THAN THAT OF THE
  11021. * CALLING JOB, UNLESS THE JOB IS A SUBSYSTEM.
  11022. SPACE 4,10
  11023. **** DIRECT LOCATION ASSIGNMENTS.
  11024.  
  11025.  
  11026. CF EQU P0 CONTINUATION FLAG
  11027. DN EQU 35 DEVICE NUMBER FOR CATALOG LIST
  11028. ST EQU 45 CATALOG SEARCH TRACK
  11029. SS EQU 46 CATALOG SEARCH SECTOR
  11030. SI EQU 47 CATALOG SEARCH INDEX
  11031. EQ EQU 60 MASTER DEVICE EST ORDINAL
  11032. RI EQU 61 - 62 RANDOM INDEX
  11033. WC EQU 63 WORD COUNT
  11034. IN EQU 64 - 65 FET POINTER
  11035. LM EQU 66 - 67 FET LIMIT POINTER
  11036. ****
  11037. TITLE COMMAND PROCESSING.
  11038. CAT SPACE 4,10
  11039. ** CAT - CATALOG MAIN PROGRAM.
  11040. *
  11041. * ENTRY (PFUI - PFUI+1) = USER INDEX.
  11042. * (UI - UI+1) = USER INDEX OF CALLING USER
  11043. * (PI - PI+1) = USER INDEX OF ALTERNATE CATALOG.
  11044. * (PFFN - PFFN+3) = FILE NAME FOR SELECTED FILE CATALOG.
  11045. * (PFOU - PFOU+3) = CALL BLOCK USER NAME.
  11046. * (PFFN+4) = MODE OF CALL.
  11047. *
  11048. * USES T1.
  11049. *
  11050. * CALLS SBS.
  11051. *
  11052. * MACROS ENDMS, ERROR.
  11053.  
  11054.  
  11055. CAT LDM PFFN+4 SET FUNCTION TYPE
  11056. SBN CTMX
  11057. MJN CAT1 IF VALID MODE
  11058. ERROR ILR,CH,IW * PFM INCORRECT REQUEST.*
  11059.  
  11060. CAT1 ADN CTMX
  11061. NJN CAT2 IF NOT ALTERNATE USER
  11062. LDD PI CHECK FOR ALTERNATE USER
  11063. ADD PI+1
  11064. ZJN CAT2 IF NORMAL CATALOG SEARCH
  11065. LDN CTCA ALTERNATE CATALOG SEARCH
  11066. CAT2 STD T1
  11067. STM CATA SET ACCESS MODE
  11068.  
  11069. * PROCESS REQUEST.
  11070.  
  11071. LDM CATC,T1
  11072. STM CATC
  11073. LJM NCS NORMAL CATALOG SEARCH
  11074. CATC EQU *-1
  11075. CON PDS PERMIT DATA SEARCH
  11076. CON PAS *PFID* ACCESS SEARCH
  11077. CON ACS ALTERNATE CATALOG SEARCH
  11078.  
  11079. ** CATX - TERMINATE PROGRAM.
  11080.  
  11081. CATX ENDMS
  11082. LDC 1031 SET BUFFER STATUS TO EOI
  11083. RJM SBS
  11084. UJN DPP DROP PP
  11085.  
  11086. CATA CON 0 FUNCTION
  11087. CATB CON 0 MASTER DEVICE NUMBER
  11088. DPP SPACE 4,10
  11089. ** DPP - DROP PP.
  11090.  
  11091.  
  11092. DPP BSS 0 ENTRY
  11093. LDK STDP SET *DROP PP* STATUS BIT
  11094. RAM STAU
  11095. EXECUTE 3PU DROP PP
  11096. PAS SPACE 4,15
  11097. ** PAS - *PFID* ACCESS SEARCH.
  11098.  
  11099.  
  11100. PAS BSS 0 ENTRY
  11101. LDC LDNI+NWCE+1 SET FOR SIZE OF OUTPUT
  11102. STM SHBC
  11103. * UJN NCS (PERFORM NORMAL CATALOG SEARCH)
  11104. NCS SPACE 4,10
  11105. ** NCS - NORMAL CATALOG SEARCH.
  11106.  
  11107.  
  11108. NCS RJM ISP INITIALIZE FOR CATALOG SEARCH
  11109. NCS1 RJM RBS READ BUFFER FOR CATALOG SEARCH
  11110. RJM SHB SEARCH CATALOG BUFFER
  11111. ZJN NCS1 LOOP FOR NEXT SECTOR OF CATALOGS
  11112. UJN CATX EXIT
  11113. ACS SPACE 4,10
  11114. ** ACS - ALTERNATE CATALOG SEARCH.
  11115.  
  11116.  
  11117. ACS RJM CSU CHECK FOR SPECIAL USER ACCESS
  11118. LDD UI SWAP USER INDEXES
  11119. STD T1
  11120. LDD PI
  11121. STD UI
  11122. LDD T1
  11123. STD PI
  11124. LDD UI+1
  11125. STD T1
  11126. LDD PI+1
  11127. STD UI+1
  11128. LDD T1
  11129. STD PI+1
  11130. RJM ISP INITIALIZE FOR CATALOG SEARCH
  11131. ACS1 RJM RBS READ BUFFER FOR SEARCH
  11132. RJM SHB SEARCH CATALOG BUFFER
  11133. ZJN ACS1 LOOP FOR NEXT SECTOR
  11134. LJM CATX EXIT
  11135. PDS SPACE 4,10
  11136. ** PDS - PERMIT DATA SEARCH.
  11137.  
  11138.  
  11139. PDS LDM PFFN ENTRY
  11140. NJN PDS1 IF PERMANENT FILE NAME SPECIFIED
  11141. ERROR ILR,CH,IW * PFM INCORRECT REQUEST.*
  11142.  
  11143. PDS1 RJM ISP INITIALIZE FOR CATALOG SEARCH
  11144. LDD CF CHECK CONTINUATION FLAG
  11145. ZJN PDS2 IF INITIAL CALL
  11146. LJM PDS5 CONTINUE READ
  11147.  
  11148. PDS2 RJM RBS READ BUFFER FOR SEARCH
  11149. RJM SHB SEARCH CATALOG BUFFER
  11150. ZJN PDS2 IF FILE NOT FOUND
  11151.  
  11152. * A PERMIT DATA CATLIST IS NOT ALLOWED ON A FILE WITH AN
  11153. * ACCESS LEVEL ABOVE THAT OF THE JOB UNLESS THE CALLER IS
  11154. * A SUBSYSTEM.
  11155.  
  11156. LDM SSOM
  11157. ZJN PDS2.1 IF UNSECURED SYSTEM
  11158. LDM FCAL,P2 GET FILE ACCESS LEVEL
  11159. LPN 7
  11160. STD T1
  11161. LDM PFAL GET JOB ACCESS LEVEL
  11162. SBD T1
  11163. PJN PDS2.1 IF FILE ACCESS LEVEL NOT ABOVE JOB LEVEL
  11164. LDM SSID
  11165. SBK LSSI+1
  11166. PJN PDS2.1 IF SUBSYSTEM
  11167. ERROR IUA,,IW * USER ACCESS NOT VALID.*
  11168.  
  11169. PDS2.1 LDM FCRI,P2 SET PERMIT RANDOM INDEX
  11170. STD RI
  11171. LDM FCRI+1,P2
  11172. STD RI+1
  11173. ADD RI
  11174. NJN PDS4 IF PERMITS AVAILABLE
  11175.  
  11176. * NO PERMITS AVALABLE - SET MESSAGE.
  11177.  
  11178. PDS3 LDM PFOU
  11179. ZJP CATX IF NOT SPECIFIC USER REQUEST
  11180. LDD MA SET OPTIONAL USER IN FILE NAME
  11181. CWM PFOU,ON
  11182. SBN 1
  11183. CRD FN
  11184. ERROR FNF,,IW *(USER NAME) NOT FOUND.*
  11185.  
  11186. PDS4 LDN NWPH SET SECTOR WORD INDEX
  11187. STD SI
  11188. LDN 0
  11189. RJM CSA COMPUTE SECTOR ADDRESS
  11190. MJN PDS3 IF ERROR ON POSITION TO PERMIT SECTOR
  11191.  
  11192. PDS5 LDC BUFB READ SECTOR
  11193. RJM RDS
  11194. MJN PDS3 IF ERROR TREAT AS EOI
  11195. LDM BUFB
  11196. ZJN PDS3 IF EOF/EOI
  11197. LDM BUFB+1
  11198. SBN NWPH+NWPE
  11199. MJN PDS6.1 IF INCORRECT SECTOR LENGTH
  11200. LPN NWPE-1
  11201. ERRNZ NWPH-NWPE HEADER SIZE MUST EQUAL ENTRY SIZE
  11202. NJN PDS6.1 IF NOT INTEGRAL NUMBER OF PERMIT ENTRIES
  11203. LDC BUFB CHECK USER INDEX
  11204. STD T1
  11205. LDD UI
  11206. LMM FPUI,T1
  11207. NJN PDS6 IF INCORRECT UI
  11208. LDD UI+1
  11209. LMM FPUI+1,T1
  11210. ZJN PDS7 IF CORRECT UI
  11211. PDS6 LDD CF
  11212. ZJN PDS6.0 IF NOT CONTINUATION CALL
  11213. PDSA LDC 0
  11214. * LDC (NONZERO) (NOT FIRST SECTOR)
  11215. ZJN PDS6.2 IF FIRST SECTOR
  11216. PDS6.0 ERROR RIN,,IW,T5 *EQXXX,DNYY,RANDOM INDEX ERROR.*
  11217.  
  11218. PDS6.1 ERROR BCS,,IW,T5,,EI *EQXXX,DNYY,BAD CATALOG/PERMIT SECTOR*
  11219.  
  11220. PDS6.2 ERROR ECD,,IW * ERROR IN CATLIST CONTINUATION DATA.*
  11221.  
  11222. PDS7 LDM PFOU
  11223. NJN PDS8 IF SPECIFIC USER REQUEST
  11224. LJM PDS12 CONTINUE SEARCH OF PERMITS
  11225.  
  11226. * PROCESS SPECIFIC USER PERMIT REQUEST.
  11227.  
  11228. PDS8 LDD MA SET USER NAME FOR SEARCH
  11229. CWM PFOU,ON
  11230. SBN 1
  11231. CRD CM
  11232. RJM SPB SEARCH PERMIT BUFFER
  11233. ZJN PDS10 IF ENTRY NOT FOUND
  11234. LDN NWPE WRITE ENTRY TO CM
  11235. STD T1
  11236. LDM FPMD,T2
  11237. SHN 21-5
  11238. MJN PDS9 IF EXPIRATION DATE PRESENT
  11239. LDM FPXD,T2 CLEAR EXPIRATION DATE FIELD
  11240. SCN 77
  11241. STM FPXD,T2
  11242. LDN 0
  11243. STM FPXD+1,T2
  11244. PDS9 LDD T2 WRITE ENTRY TO CM
  11245. RJM WDB
  11246. LJM CATX EXIT
  11247.  
  11248. PDS10 LDM BUFB+FPRI SET ADDRESS OF NEXT BUFFER
  11249. STD RI
  11250. LDM BUFB+FPRI+1
  11251. STD RI+1
  11252. ADD RI
  11253. ZJN PDS11 IF NO MORE PERMITS
  11254. AOM PDSA+1 INDICATE NOT FIRST SECTOR
  11255. LJM PDS4 LOOP TO READ NEXT SECTOR
  11256.  
  11257. PDS11 LJM PDS3 EXIT
  11258.  
  11259. PDS12 LDN NWPE SET WORD COUNT
  11260. STD T1
  11261. PDS13 LDD SI
  11262. SHN 2
  11263. ADD SI
  11264. ADC BUFB+2
  11265. STD T2 SAVE BASE ADDRESS
  11266. LDM FPMD,T2
  11267. SHN 21-5
  11268. MJN PDS14 IF EXPIRATION DATE PRESENT
  11269. LDM FPXD,T2 CLEAR EXPIRATION DATE FIELD
  11270. SCN 77
  11271. STM FPXD,T2
  11272. LDN 0
  11273. STM FPXD+1,T2
  11274. PDS14 LDD T2 WRITE ENTRY TO CM
  11275. RJM WDB
  11276. LDN NWPE ADVANCE WORD INDEX
  11277. RAD SI
  11278. LMM BUFB+1
  11279. NJN PDS13 IF MORE ENTRIES
  11280. LJM PDS10 LOOP FOR NEXT SECTOR
  11281. TITLE SUBROUTINES.
  11282. SBS SPACE 4,15
  11283. ** SBS - SET STATUS OF BUFFER.
  11284. *
  11285. * ENTRY (A) = STATUS TO BE SET.
  11286. * (IN - IN+1) = CURRENT ADDRESS IN FET.
  11287. *
  11288. * EXIT FET STATUS SET.
  11289. * (IN) UPDATED IN FET.
  11290. *
  11291. * USES T1, CM - CM+4.
  11292. *
  11293. * CALLS SFA.
  11294.  
  11295.  
  11296. SBS SUBR ENTRY/EXIT
  11297. STD T1 SAVE STATUS TO BE SET
  11298. RJM SFA SET FET ADDRESS
  11299. CRD CM
  11300. LDD CM+4 SET STATUS
  11301. LPN 2
  11302. LMD T1
  11303. STD CM+4
  11304. LDD CM+3 CLEAR UPPER BITS OF STATUS FIELD
  11305. SCN 77
  11306. STD CM+3
  11307. RJM SFA
  11308. CWD CM WRITE FET STATUS
  11309. LDN ZERL UPDATE FET IN POINTER
  11310. CRD CM
  11311. LDD IN
  11312. STD CM+3
  11313. LDD IN+1
  11314. STD CM+4
  11315. RJM SFA
  11316. ADN 2
  11317. CWD CM
  11318. UJN SBSX RETURN
  11319. RBS SPACE 4,15
  11320. ** RBS - READ BUFFER FOR SEARCH.
  11321. *
  11322. * ENTRY (T6) = TRACK.
  11323. * (T7) = SECTOR.
  11324. * DEVICE POSITIONED AND CHANNEL RESERVED.
  11325. * AT RBS1 IF SEARCH TERMINATION DESIRED.
  11326. *
  11327. * EXIT (A) = WORD COUNT OF SECTOR READ.
  11328. * (T6) = NEXT TRACK.
  11329. * (T7) = NEXT SECTOR.
  11330. * (WBDB - WDBC) SET TO CURRENT POSITION
  11331. *
  11332. * CALLS DPP, RNS, SBS.
  11333. *
  11334. * MACROS ENDMS, ERROR.
  11335.  
  11336.  
  11337. RBS SUBR ENTRY/EXIT
  11338. LDC ** COUNT OF DA FILES FOUND IN BUFFER
  11339. RBSA EQU *-1
  11340. ZJN RBS1 IF NO DA FILES FOUND IN LAST PRU
  11341. LDN 0 CLEAR PRU COUNT
  11342. STM RBSA
  11343.  
  11344. RBS1 LDD T6 SET CURRENT POSITION FOR RECALL
  11345. STM WDBB
  11346. STM ERRC
  11347. LDD T7
  11348. STM WDBC
  11349. STM ERRD
  11350. LDC BUFA SET BUFFER FOR READ
  11351. RJM RNS READ SECTOR
  11352. ZJN RBS2 EOF/EOI SECTOR
  11353. LPN NWCE-1
  11354. NJN RBS4 IF NOT INTEGRAL NUMBER OF CATALOG ENTRIES
  11355. LDD T1
  11356. UJN RBSX RETURN
  11357.  
  11358. RBS2 LDD FN
  11359. ZJN RBS3 IF NOT FILE NAME SEARCH
  11360. ERROR FNF,,IW *(FILE NAME) NOT FOUND.*
  11361.  
  11362. RBS3 LDC 1031 SET EOI BUFFER STATUS
  11363. RJM SBS
  11364. ENDMS
  11365. LJM DPP TERMINATE PROGRAM
  11366.  
  11367. RBS4 ERROR BCS,,IW,T5,,EI *EQXXX,DNYY,BAD CATALOG/PERMIT SECTOR*
  11368. MSR SPACE 4,10
  11369. ** MSR - MASS STORAGE READ ERROR PROCESSOR.
  11370.  
  11371.  
  11372. MSR SUBR ENTRY/EXIT
  11373. RJM PES PROCESS ERROR STATUS
  11374. ERROR MSE,CH,IW,T5 *EQXXX,DNYY, MASS STORAGE ERROR.*
  11375. SHB SPACE 4,15
  11376. ** SHB - SEARCH CATALOG BUFFER.
  11377. *
  11378. * ENTRY (A) = NUMBER OF WORDS IN BUFFER.
  11379. * (SI) = SEARCH INDEX.
  11380. * (FN - FN+3) = SELECTED FILE NAME FOR SEARCH
  11381. * (UI - UI+1) = USER INDEX OF CATALOG TO SEARCH.
  11382. *
  11383. * EXIT (A) " 0 IF SPECIFIC ENTRY FOUND
  11384. * (P2) = FWA OF CATALOG ENTRY
  11385. *
  11386. * USES T1, P1, P2, RI - RI+1.
  11387. *
  11388. * CALLS WDB, CIP.
  11389.  
  11390.  
  11391. SHB SUBR ENTRY/EXIT
  11392. STD P1 SAVE WORD COUNT
  11393. LDM CATA SET CONTROL FOR SEARCH MODE
  11394. STD T1
  11395. LDM SHBF,T1
  11396. STM SHBB
  11397. LDC BUFA+2 SET BUFFER DATA BASE
  11398. STD P2
  11399. LDD SI SET SEARCH INDEX
  11400. SHN 2 MULTIPLY BY FIVE
  11401. ADD SI
  11402. RAD P2 SET DATA ADDRESS TO NEXT CATALOG ENTRY
  11403. SHB1 LDM FCUI,P2 CHECK USER INDEX
  11404. LPN 37
  11405. SHN 14
  11406. LMM FCUI+1,P2
  11407. ZJN SHB2 IF EMPTY CATALOG ENTRY
  11408. SHBA PSN
  11409. * UJN SHB4 (SET IF PRIVATE DEVICE)
  11410. LMD UI+1
  11411. SHN 6
  11412. LMD UI
  11413. ZJN SHB4 USER INDEX MATCH
  11414.  
  11415. * INCREMENT FOR NEXT ENTRY.
  11416.  
  11417. SHB2 LDC NWCE*5 ADVANCE ENTRY INDEX
  11418. RAD P2
  11419. LDN NWCE INCREMENT WORD COUNT
  11420. RAD SI ADVANCE SEARCH INDEX
  11421. ADN NWCE-1 CHECK FOR ANOTHER CATALOG ENTRY
  11422. SBD P1
  11423. MJN SHB1 IF NOT END OF BUFFER
  11424. LDN 0
  11425. STD SI CLEAR SEARCH INDEX
  11426. SHB3 LJM SHBX RETURN
  11427.  
  11428. SHB4 LDD FN CHECK AGAINST SELECTED FILE NAME
  11429. ZJN SHB6 IF NO SELECTED FILE REQUESTED
  11430. LMI P2
  11431. NJN SHB2 NO MATCH
  11432. LDM 1,P2
  11433. LMD FN+1
  11434. NJN SHB2 NO MATCH
  11435. LDM 2,P2
  11436. LMD FN+2
  11437. NJN SHB2 NO MATCH
  11438. LDM 3,P2
  11439. LMD FN+3
  11440. SCN 77
  11441. SHB5 NJN SHB2 IF NOT MATCH
  11442. SHB6 BSS 0
  11443. SHBE UJN SHB7
  11444. * PSN IF CATLIST OF DEVICE NUMBER SPECIFIED.
  11445.  
  11446. LDM FCDN,P2 CHECK DEVICE NUMBER
  11447. LPN 77
  11448. SBD DN
  11449. NJN SHB5 IF NO MATCH
  11450. SHB7 LDN 1 SET FOR *CTPM* EXIT CASE
  11451. UJN * PERFORM SEARCH DEPENDING ON MODE
  11452. SHBB EQU *-1
  11453. * UJN SHB9 (IF NORMAL CATALOG SEARCH, *CTNC*)
  11454. * UJN SHB3 (IF PERMIT DATA SEARCH, *CTPM*)
  11455. * UJN SHB9 (IF *PFID* ACCESS SEARCH, *CTID*)
  11456. * UJN SHB8 (IF ALTERNATE CATALOG SEARCH, *CTCA*)
  11457.  
  11458. * VALIDATE ACCESS AND PREPARE THE *PFC* ENTRY FOR OUTPUT.
  11459.  
  11460. SHB8 RJM CCP CHECK CATALOG PERMISSION
  11461. ZJP SHB11 IF NOT PERMITTED
  11462. SHB9 LDM SSOM
  11463. ZJN SHB9.1 IF UNSECURED SYSTEM
  11464. LDM SSJS
  11465. NJN SHB9.1 IF *SSJ=* CALLER
  11466. LDM FCAL,P2 GET FILE ACCESS LEVEL
  11467. LPN 7
  11468. STD T1
  11469. LDM PFAL GET JOB ACCESS LEVEL
  11470. SBD T1
  11471. MJN SHB9.2 IF FILE ACCESS LEVEL ABOVE JOB
  11472. SHB9.1 LJM SHB9.4 WRITE CATALOG TO CM
  11473.  
  11474. * IF THE FILE ACCESS LEVEL IS HIGHER THAN THE JOB ACCESS LEVEL,
  11475. * CLEAR THE FOLLOWING PFC FIELDS (UNLESS CALLER IS *SSJ=*).
  11476. * 1. PASSWORD (REPLACE WITH ASTERISKS).
  11477. * 2. PASSWORD EXPIRATION DATE.
  11478. * 3. ACCESS CATEGORY SET.
  11479. * 4. USER CONTROL WORD.
  11480.  
  11481. SHB9.2 LDK FCCW SET ADDRESS OF USER CONTROL WORD
  11482. ADD P2
  11483. STM SHBG
  11484. LDM FCPW,P2
  11485. ZJN SHB9.3 IF NO PASSWORD DEFINED
  11486. LDC 2R** REPLACE PASSWORD WITH ASTERISKS
  11487. STM FCPW,P2
  11488. STM FCPW+1,P2
  11489. STM FCPW+2,P2
  11490. SCN 77 CLEAR PASSWORD EXPIRATION DATE
  11491. STM FCPW+3,P2
  11492. * STM FCXD,P2
  11493. LDN 0
  11494. STM FCXD+1,P2
  11495. SHB9.3 STM FCFC+1,P2 CLEAR ACCESS CATEGORY SET
  11496. STM FCFC+2,P2
  11497. LDM FCFC,P2
  11498. LPC 7400
  11499. STM FCFC,P2
  11500. LDN ZERL CLEAR USER CONTROL WORD
  11501. CRM *,ON
  11502. SHBG EQU *-1 (ADDRESS OF USER CONTROL WORD)
  11503.  
  11504. * WRITE CATALOG TO CM.
  11505.  
  11506. SHB9.4 LDM FCBS,P2
  11507. SHN 6
  11508. PJN SHB10 IF NOT DIRECT ACCESS FILE
  11509. RJM DFS DETERMINE FILE SIZE
  11510. SHB10 LDN NWCE WRITE CATALOG TO CM
  11511. SHBC EQU *-1
  11512. * LDN NWCE+1 (IF *PFID* ACCESS SEARCH, *CTID*)
  11513. STD T1
  11514. LDD P2
  11515. RJM WDB
  11516. LDD FN
  11517. ZJN SHB11 IF NOT SELECTED FILE SEARCH
  11518. LJM SHBX RETURN FILE FOUND
  11519.  
  11520. SHB11 STM RBSA CLEAR DA FILE COUNT
  11521. SHB13 LJM SHB2 LOOP FOR NEXT CATALOG ENTRY
  11522.  
  11523.  
  11524. SHBF BSS 0 BRANCH TABLE
  11525. LOC SHBB
  11526. UJN SHB9 *CTNC* MODE OF SEARCH
  11527. LOC SHBB
  11528. UJN SHB3 *CTPM* MODE OF SEARCH
  11529. LOC SHBB
  11530. UJN SHB9 *CTID* MODE OF SEARCH
  11531. LOC SHBB
  11532. UJN SHB8 *CTCA* MODE OF SEARCH
  11533. LOC *O
  11534. WDB SPACE 4,20
  11535. ** WDB - WRITE BUFFER TO CENTRAL.
  11536. *
  11537. * ENTRY (A) = CATALOG ENTRY ADDRESS.
  11538. * (T1) = WORD COUNT OF ENTRY TO WRITE
  11539. * (IN - IN+1) = CURRENT POSITION IN FET.
  11540. * (LM - LM+1) = FET LIMIT.
  11541. * (SI) = CURRENT SECTOR WORD INDEX.
  11542. * (T6 - T7) CURRENT PERMIT BUFFER ADDRESS IF PERMIT LIST.
  11543. * (WDBB - WDBC) SET TO CURRENT CATALOG SEARCH POS.
  11544. *
  11545. * EXIT CATALOG ENTRY WRITTEN TO BUFFER.
  11546. * (IN - IN+1) ADVANCED
  11547. * TO DPP IF BUFFER FULL (EOF STATUS SET IN FET)
  11548. *
  11549. * USES T2, CM - CM+4.
  11550. *
  11551. * CALLS PCA, SBS, SFA, SRA.
  11552. *
  11553. * MACROS ENDMS, ERROR.
  11554.  
  11555.  
  11556. WDB SUBR ENTRY/EXIT
  11557. STD T2 SET ADDRESS FOR WRITE
  11558. STM WDBA
  11559. LDD IN CHECK FOR ROOM IN BUFFER FOR NEXT ENTRY
  11560. SHN 14
  11561. ADD IN+1
  11562. ADD T1
  11563. STD CM+4
  11564. SHN -14
  11565. STD CM+3
  11566. SBD LM
  11567. SHN 14
  11568. ADD CM+4
  11569. SBD LM+1
  11570. PJN WDB1 IF BUFFER FULL
  11571. RJM PCA PROCESS CATALOG ADDRESS ACCESS MODE
  11572. LDD IN WRITE ENTRY TO BUFFER
  11573. SHN 6
  11574. ADD RA
  11575. SHN 6
  11576. ADD IN+1
  11577. CWM *,T1
  11578. WDBA EQU *-1
  11579. LDD CM+3 ADVANCE IN POINTER
  11580. STD IN
  11581. LDD CM+4
  11582. STD IN+1
  11583. LDN IPCE PF INCREMENT FOR CATALOG ENTRY RETURNED
  11584. RAM AIPF+1
  11585. LJM WDBX EXIT
  11586.  
  11587. * BUFFER FULL.
  11588.  
  11589. WDB1 ENDMS
  11590. LDM CATA
  11591. LMN CTPM
  11592. ZJN WDB2 IF PERMIT FILE POSITION TO BE SAVED
  11593. LDC * SET CURRENT POSITION
  11594. WDBB EQU *-1
  11595. STD T6
  11596. LDC *
  11597. WDBC EQU *-1
  11598. STD T7
  11599. LDM DVLW+1 SET ALLOCATOR TRACK
  11600. UJN WDB3
  11601. WDB2 LDM DVLW+2 SET PERMIT FILE
  11602. WDB3 RJM SRA SET RANDOM ADDRESS
  11603. ZJN WDB4 IF NO ERROR
  11604. ERROR RIN,CH,IW,EQ *EQXXX,DNYY, RANDOM INDEX ERROR.*
  11605.  
  11606. WDB4 LDN ZERL CLEAR ASSEMBLY AREA
  11607. CRD CM
  11608. LDD RI+1 REPOSITION RANDOM ADDRESS
  11609. SHN 6
  11610. STD CM+2
  11611. LPC 770000
  11612. ADD RI
  11613. SHN 6
  11614. STD CM+1
  11615. LPC 770000
  11616. ADD SI
  11617. SHN 6
  11618. STD CM
  11619. RJM SFA SET FET ADDRESS
  11620. ADN CFCN
  11621. CWD CM WRITE ADDRESS TO FET
  11622. LDN 31 SET END OF FILE STATUS
  11623. RJM SBS SET STATUS OF BUFFER
  11624. LJM DPP TERMINATE PROGRAM
  11625.  
  11626. CCP SPACE 4,20
  11627. ** CCP - CHECK CATALOG PERMISSION.
  11628. *
  11629. * CATALOG ENTRY RETURNED IF ALTERNATE CATLIST PERMISSION HAS
  11630. * BEEN GRANTED AND USER IS VALID TO ACCESS FILE.
  11631. *
  11632. * ENTRY (P2) = ADDRESS OF CATALOG ENTRY.
  11633. *
  11634. * EXIT (A) = 0 IF USER NOT PERMITTED TO FILE.
  11635. * CATALOG ENTRY ADJUSTED IF USER PERMITTED.
  11636. *
  11637. * USES T1, T2, T6, T7, P3, ST, SS.
  11638. *
  11639. * CALLS CSA, MSR, PDV, RDS, SPB.
  11640. *
  11641. * MACROS MONITOR, SETMS.
  11642.  
  11643.  
  11644. CCP10 LDN 0 DENY ACCESS TO USER
  11645. CCP11 ZJP CCPX IF USER NOT PERMITTED
  11646. CCP12 LDM FCAM,P2 CHECK PERMISSION MODE
  11647. LPN 77
  11648. LMN PTNU
  11649. ZJN CCP11 IF *NULL* PERMISSION
  11650.  
  11651. * CHECK FOR EXPIRED PERMIT.
  11652.  
  11653. LDD P3
  11654. ZJN CCP13 IF NO PERMIT ENTRY FOUND
  11655. LDM FPMD,T2 CHECK FOR EXPIRED PERMIT
  11656. SHN 21-5
  11657. PJN CCP13 IF NO EXPIRATION DATE PRESENT
  11658. LDM FPXD,T2
  11659. LPN 77
  11660. STD CM+3
  11661. SHN 14
  11662. LMM FPXD+1,T2
  11663. ZJN CCP13 IF NON-EXPIRING PERMIT
  11664. STD CM+4
  11665. LDN VEDS VALIDATE EXPIRATION DATE
  11666. STD CM+1
  11667. MONITOR VSAM
  11668. LDD CM+1
  11669. NJN CCP10 IF EXPIRED
  11670.  
  11671. * VALIDATE ACCESS LEVEL/CATEGORY SET OF USER.
  11672.  
  11673. CCP13 LDN ZERL
  11674. CRD CM
  11675. LDM FCAL,P2 SET ACCESS LEVEL
  11676. LPN 7
  11677. STD CM+1
  11678. LDM FCFC,P2 SET ACCESS CATEGORY
  11679. LPC 377
  11680. STD CM+2
  11681. LDM FCFC+1,P2
  11682. STD CM+3
  11683. LDM FCFC+2,P2
  11684. STD CM+4
  11685. LDD MA
  11686. CWD CM
  11687. LDN ZERL
  11688. CRD CM
  11689. LDN 3 CHECK ACCESS LEVEL/ACCESS CATEGORY SET
  11690. STD CM+4
  11691. LDN VAJS CHECK AGAINST USER-S VALIDATION
  11692. STD CM+1
  11693. MONITOR VSAM
  11694. LDD CM+1
  11695. NJP CCP10 IF NOT VALID ACCESS
  11696.  
  11697. * CLEAR FIELDS IN CATALOG ENTRY.
  11698.  
  11699. LDN FCPW SET FWA OF PASSWORD
  11700. ADD P2
  11701. STM CCPC
  11702. ADN FCAL-1-FCPW SET FWA OF ACCESS LEVEL AND CATEGORY SET
  11703. STM CCPD
  11704. ADN FCCN-FCAL SET FWA OF CHARGE NUMBER
  11705. STM CCDF
  11706. ADK FCP1-FCCN SET FWA OF PROJECT NUMBER
  11707. STM CCDG
  11708. ADK FCP2-FCP1 SET FWA OF WORD 2 OF PROJECT NUMBER
  11709. STM CCDH
  11710. LDN ZERL CLEAR PASSWORD AND EXPIRATION DATE
  11711. CRM *,ON
  11712. CCPC EQU *-1 (FWA OF PASSWORD)
  11713. LDN ZERL CLEAR ACCESS LEVEL AND CATEGORIES
  11714. CRM *,ON
  11715. CCPD EQU *-1
  11716. LDN 0
  11717. STM FCUI+1,P2 CLEAR USER INDEX
  11718. LDM FCUI,P2
  11719. SCN 77
  11720. STM FCUI,P2
  11721. LDM SSJS
  11722. NJN CCP14 IF CALLER IS *SSJ=* PROGRAM
  11723. LDN ZERL CLEAR CHARGE/PROJECT FIELDS
  11724. CRM *,ON
  11725. CCDF EQU *-1
  11726. LDN ZERL
  11727. CRM *,ON
  11728. CCDG EQU *-1
  11729. LDN ZERL
  11730. CRM *,ON
  11731. CCDH EQU *-1
  11732. CCP14 LDN 1 RETURN PERMISSION FLAG
  11733.  
  11734. CCP SUBR ENTRY/EXIT
  11735. LDM FCAP,P2 CHECK ALTERNATE CATLIST PERMISSION
  11736. SHN 0-12
  11737. NJN CCP1 IF ALTERNATE CATLIST PERMISSION PRESENT
  11738. LDN ACEX USE DEFAULT PERMISSION FOR EXISTING FILES
  11739. CCP1 LMN ACNO
  11740. ZJN CCPX IF ALTERNATE CATLIST NOT PERMITTED
  11741. LDN 0 CLEAR PERMIT SEARCH STATUS
  11742. STD P3
  11743.  
  11744. * SEARCH FOR PERMIT ENTRY.
  11745.  
  11746. LDM FCRI,P2 SET PERMIT INDEX
  11747. STD RI
  11748. LDM FCRI+1,P2
  11749. STD RI+1
  11750. ADD RI
  11751. NJN CCP4 IF PERMIT INDEX PRESENT
  11752. LDM FCCT,P2 CHECK FILE CATEGORY
  11753. SHN -6
  11754. LMN FCPR
  11755. ZJN CCPX IF PRIVATE FILE
  11756. LJM CCP12 CHECK PERMISSION MODE IN PFC
  11757.  
  11758. CCP4 LDN IPPA PF INCREMENT FOR PERMIT FILE ACCESS
  11759. RAM AIPF+1
  11760. LDD T6 SAVE POSITION OF CATALOGS
  11761. STD ST
  11762. LDD T7
  11763. STD SS
  11764. LDD P2
  11765. CCP5 RJM CSA COMPUTE SECTOR ADDRESS
  11766. SETMS IO
  11767. RJM PDV PROCESS DEVICE STATUS
  11768. LDC BUFB READ PERMIT BUFFER
  11769. RJM RDS
  11770. PJN CCP6 IF NO ERROR
  11771. RJM MSR PROCESS READ ERROR
  11772.  
  11773. CCP6 LDM BUFB CHECK CONTROL BYTES
  11774. ZJN CCP8 IF TERMINATING SEARCH
  11775. LDM BUFB+1
  11776. SBN NWPH+NWPE
  11777. MJN CCP6.0 IF INCORRECT SECTOR LENGTH
  11778. LPN NWPE-1
  11779. ERRNZ NWPH-NWPE HEADER SIZE MUST EQUAL ENTRY SIZE
  11780. ZJN CCP6.1 IF INTEGRAL NUMBER OF PERMIT ENTRIES
  11781. CCP6.0 ERROR BCS,,IW,T5,,EI *EQXXX,DNYY,BAD CATALOG/PERMIT SECTOR*
  11782.  
  11783. CCP6.1 LDD CP SET USER NAME FOR SEARCH
  11784. ADN UIDW
  11785. CRD CM
  11786. RJM SPB SEARCH PERMIT BUFFER
  11787. NJN CCP8 IF PERMIT FOUND
  11788. CCP7 LDM BUFB+FPRI CHECK FOR PERMIT LINK
  11789. STD RI
  11790. LDM BUFB+FPRI+1
  11791. STD RI+1
  11792. ADD RI
  11793. NJP CCP5 IF MORE PERMITS TO CHECK
  11794. CCP8 STD P3 SAVE SEARCH STATUS
  11795. ZJN CCP9 IF TERMINATING PERMIT SEARCH
  11796. LDM FPMD,T2 CHECK PERMIT TYPE
  11797. SHN 21-4
  11798. MJN CCP7 IF ACCOUNTING PERMIT
  11799. SHN 4-4-21+4 SET PERMIT MODE
  11800. LPN 17
  11801. STD T1
  11802. LDM FCAM,P2
  11803. SCN 77
  11804. ADD T1
  11805. STM FCAM,P2
  11806. CCP9 LDD ST RESET SEARCH ADDRESS
  11807. STD T6
  11808. LDD SS
  11809. STD T7
  11810. SETMS READSTR
  11811. RJM PDV PROCESS DEVICE STATUS
  11812. LDD P3
  11813. NJN CCP9.1 IF PERMIT ENTRY FOUND
  11814. LDM FCCT,P2 CHECK FILE CATEGORY
  11815. SHN -6
  11816. LMN FCPR
  11817. ZJP CCPX IF PRIVATE FILE
  11818. CCP9.1 LJM CCP12 CHECK PERMISSION MODE IN PERMIT OR PFC
  11819. DFS SPACE 4,15
  11820. ** DFS - DETERMINE FILE SIZE.
  11821. *
  11822. * ENTRY (P2) = ADDRESS OF CATALOG ENTRY.
  11823. * (EQ) = MASTER DEVICE EST ORDINAL.
  11824. *
  11825. * EXIT LENGTH OF FILE SET IN CATALOG ENTRY.
  11826. *
  11827. * USES P3, SS, ST, CM - CM+4, T1 - T7.
  11828. *
  11829. * CALLS CTA, PDV, SDN, SEI.
  11830. *
  11831. * MACROS ENDMS, SETMS.
  11832.  
  11833.  
  11834. DFS2 ADD T2
  11835. ZJN DFS3 IF ZERO LENGTH
  11836. DFS2.1 SOM FCLF+1,P2 DISCOUNT EOI
  11837. PJN DFS3 IF NO OVERFLOW
  11838. AOM FCLF+1,P2
  11839. SOM FCLF,P2
  11840. DFS3 LDD ST RESTORE CATALOG TRACK/SECTOR/EQ
  11841. STD T6
  11842. LDD SS
  11843. STD T7
  11844. LDD T5
  11845. LMD EQ
  11846. ZJN DFSX IF SAME DEVICE
  11847. LDD EQ RESET MASTER DEVICE DRIVER
  11848. STD T5
  11849. SETMS READSTR
  11850. RJM PDV PROCESS DEVICE STATUS
  11851.  
  11852. DFS SUBR ENTRY/EXIT
  11853. LDD T6 SAVE CATALOG TRACK
  11854. STD ST
  11855. LDD T7 SAVE CATALOG SECTOR
  11856. STD SS
  11857. LDM FCLF,P2 CHECK LENGTH IN CATALOG
  11858. ADM FCLF+1,P2
  11859. NJP DFS2.1 IF FILE LENGTH ALREADY AVAILABLE
  11860. ENDMS
  11861. LDM FCDN,P2 GET DEVICE NUMBER
  11862. LPN 77
  11863. STD P3
  11864. ZJN DFS1 IF DA FILE ON MASTER DEVICE
  11865. STD CM
  11866. LDM PFPN+4
  11867. RJM SDN SEARCH FOR DEVICE NUMBER
  11868. PJN DFS1 IF DEVICE FOUND
  11869. LJM DFS3 RETURN LENGTH OF ZERO
  11870.  
  11871. DFS1 AOM RBSA ADVANCE DA FILE COUNT
  11872. SETMS STATUS
  11873. LDD CM+4 SET TRT ADDRESS
  11874. SHN 3
  11875. ADN TRLL
  11876. RJM CTA CALCULATE FWA OF TRT
  11877. SBD TH
  11878. STM SEIA+1
  11879. SHN -14
  11880. LMC ADCI
  11881. STM SEIA
  11882. LDM FCBT,P2 SET FIRST TRACK OF FILE
  11883. STD T6
  11884. LDM DFSA,P3 REQUEST TRT UPDATE IF FIRST FILE ON DEVICE
  11885. RJM SEI GET FILE LENGTH
  11886. AOM DFSA,P3 PREVENT TRT UPDATE ON SUBSEQUENT FILES
  11887. LDD T2
  11888. STM FCLF,P2
  11889. LDD T3
  11890. STM FCLF+1,P2
  11891. LJM DFS2 DISCOUNT EOI
  11892.  
  11893.  
  11894. DFSA BSSZ 100B TRT UPDATE FLAGS FOR EACH DEVICE IN FAMILY
  11895. SPB SPACE 4,10
  11896. ** SPB - SEARCH PERMIT BUFFER.
  11897. *
  11898. * ENTRY PERMIT BUFFER LOADED TO *BUFB*
  11899. * (CM - CM+3) = USER NAME FOR SEARCH.
  11900. *
  11901. * EXIT (A) = 0 IF PERMIT NOT FOUND.
  11902. * (T2) = INDEX TO PERMIT ENTRY, IF FOUND.
  11903. *
  11904. * USES T1, T2.
  11905.  
  11906.  
  11907. SPB SUBR ENTRY/EXIT
  11908. SPB1 LDN NWPH ADVANCE WORD COUNT PAST HEADER
  11909. STD T1
  11910. LDC BUFB+2 SET DATA ADDRESS
  11911. ADN NWPH*5
  11912. STD T2
  11913. SPB2 LDD CM
  11914. ZJN SPBX IF NO USER NAME
  11915. LMM FPAN,T2 COMPARE USER NAME
  11916. NJN SPB3 IF NO MATCH
  11917. LDM FPAN+1,T2
  11918. LMD CM+1
  11919. NJN SPB3 IF NO MATCH
  11920. LDM FPAN+2,T2
  11921. LMD CM+2
  11922. NJN SPB3 IF NO MATCH
  11923. LDM FPAN+3,T2
  11924. LMD CM+3
  11925. SCN 77
  11926. ZJN SPB5 IF USER FOUND
  11927. SPB3 LDN NWPE*5 ADVANCE TO NEXT ENTRY
  11928. RAD T2
  11929. LDN NWPE
  11930. RAD T1
  11931. LMM BUFB+1
  11932. NJN SPB2 IF NOT END OF BUFFER
  11933. UJN SPB6 EXIT
  11934.  
  11935. SPB5 LCN 1 SET ENTRY FOUND EXIT
  11936. SPB6 LJM SPBX RETURN
  11937. CSA SPACE 4,15
  11938. ** CSA - COMPUTE SECTOR ADDRESS.
  11939. *
  11940. * ENTRY (RI - RI+1) = RANDOM INDEX OF PERMIT SECTOR.
  11941. * (DVLW - DVLW+4) = DEVICE LAYOUT WORD.
  11942. * (A) = ADDRESS OF FILE NAME IF NAME NOT
  11943. * IN FN - FN+3 OTHERWISE (A) = 0.
  11944. *
  11945. * EXIT (T6) = TRACK OF RANDOM SECTOR
  11946. * (T7) = SECTOR OF RANDOM SECTOR.
  11947. *
  11948. * USES T6, T7, RI - RI+1.
  11949. *
  11950. * CALLS CRA, PDV.
  11951. *
  11952. * MACROS ENDMS, ERROR, SETMS.
  11953.  
  11954.  
  11955. CSA2 SETMS IO
  11956. RJM PDV PROCESS DEVICE STATUS
  11957.  
  11958. CSA SUBR ENTRY/EXIT
  11959. STM CSAA
  11960. STM CSAB
  11961. LDM DVLW+2 SET FIRST TRACK IN PERMIT CHAIN
  11962. STD T6
  11963. ENDMS
  11964. LDN 0 SET TRT UPDATE REQUESTED
  11965. RJM CRA COVERT RANDOM ADDRESS
  11966. PJN CSA2 IF NO ERROR
  11967.  
  11968. * PROCESS ERROR IN RANDOM INDEX.
  11969.  
  11970. LDC **
  11971. CSAA EQU *-1
  11972. ZJN CSA1 IF NO NAME TO COPY
  11973. LDD MA COPY FILE NAME
  11974. CWM *,ON
  11975. CSAB EQU *-1
  11976. SBN 1
  11977. CRD FN
  11978. CSA1 ERROR RIN,,IW,EQ *EQXXX,DNYY, RANDOM INDEX ERROR.*
  11979. PCA SPACE 4,15
  11980. ** PCA - PROCESS CATALOG ADDRESS ACCESS MODE.
  11981. *
  11982. * ENTRY (IN - IN+1) = CURRENT POSITION IN FET.
  11983. * (T1) = OUTPUT ENTRY LENGTH FOR CATALOG AND *PFID*.
  11984. * (T2) = *PFC* ENTRY POINTER.
  11985. * (CATA) = SEARCH MODE.
  11986. * (CATB) = MASTER DEVICE NUMBER.
  11987. * (WDBB) = CURRENT CATALOG TRACK.
  11988. * (WDBC) = CURRENT CATALOG SECTOR.
  11989. * BUFA+2 = BEGINNING OF CATALOG SECTOR BUFFER.
  11990. *
  11991. * EXIT (T1) = DECREMENTED BY ONE FOR *PFID*.
  11992. * *PFID* WRITTEN TO CENTRAL USER BUFFER.
  11993.  
  11994.  
  11995. PCA SUBR ENTRY/EXIT
  11996. LDM CATA CHECK SEARCH MODE
  11997. LMN CTID
  11998. NJN PCAX IF NOT *PFID* ACCESS
  11999.  
  12000. * SETUP *PFID* FOR OUTPUT.
  12001.  
  12002. LDM WDBC SET CATALOG SECTOR ADDRESS
  12003. STM PCAA+4
  12004. LDM WDBB SET CATALOG TRACK ADDRESS
  12005. STM PCAA+3
  12006. LDD T2 SET *PEO* VALUE
  12007. ADC -BUFA-2
  12008. SHN -NWCES CALCULATE *PEO* VALUE
  12009. LPN 1S"NWCEM"-1
  12010. SHN 6
  12011. LMM CATB SET MASTER DEVICE NUMBER
  12012. STM PCAA+2
  12013.  
  12014. * WRITE *PFID* TO CENTRAL BUFFER.
  12015.  
  12016. LDD IN FORM DESTINATION ADDRESS
  12017. SHN 6
  12018. ADD RA
  12019. SHN 6
  12020. ADD IN+1
  12021. ADN NWCE OFFSET FOR *PFC* ENTRY
  12022. CWM PCAA,ON WRITE *PFID*
  12023. SOD T1 ADJUST OUTPUT LENGTH
  12024. LJM PCAX RETURN
  12025.  
  12026. PCAA CON 0,0,0,0,0 *PFID* BUFFER
  12027. SPACE 4,10
  12028. * COMMON DECKS.
  12029.  
  12030.  
  12031. CRA$ SET 0 FORCE TRT UPDATE ON *CRA* CALLS
  12032. *CALL COMPCRA
  12033. *CALL COMPSRA
  12034. SEI$ SET 0 FORCE TRT UPDATE ON *SEI* CALLS
  12035. *CALL COMPSEI
  12036. *CALL COMPRNS
  12037. *CALL COMPSDN
  12038. SPACE 4,10
  12039. * BUFFERS
  12040.  
  12041.  
  12042. BUFA EQU * CATALOG BUFFER
  12043. BUFB EQU BUFA+502 PERMIT BUFFER
  12044. ERRNG EPFW-BUFB-502 BUFFER OVERFLOW
  12045. TITLE OVERLAYABLE SUBROUTINES.
  12046. CSU SPACE 4,10
  12047. ** CSU - CHECK FOR SPECIAL USER.
  12048. *
  12049. * ENTRY USER NAME WORD (UIDW) SET.
  12050. * (PFOU - PFOU+3) = USER NAME FROM CALL BLOCK.
  12051. *
  12052. * EXIT (UI - UI+1) CLEARED IF SPECIAL USER.
  12053. *
  12054. * USES T1, T2, CM - CM+4.
  12055.  
  12056.  
  12057. CSU SUBR ENTRY/EXIT
  12058. LDD CP GET USER USER NAME
  12059. ADN UIDW
  12060. CRD CM
  12061. LDD CM+3 CLEAR LOWER USER NAME
  12062. SCN 77
  12063. STD CM+3
  12064. LDN 0 INITIALIZE COUNT
  12065. STD T1
  12066. CSU1 AOD T1 ADVANCE BYTE
  12067. LMN 5
  12068. ZJN CSU3 IF END OF USER NAME
  12069. LDM CM-1,T1 USER NAME BYTE
  12070. STD T2
  12071. LMC 2R**
  12072. ZJN CSU1 IF ** SKIP COMPARE OF CHARACTERS
  12073. SCN 77
  12074. ZJN CSU2 IF UPPER CHARACTER *
  12075. LDD T2 COMPARE UPPER CHARACTER
  12076. LMM PFOU-1,T1
  12077. SCN 77
  12078. NJN CSUX IF USER NAME DO NOT MATCH
  12079. LDD T2 CHECK LOWER CHARACTER
  12080. LMN 1R*
  12081. LPN 77
  12082. ZJN CSU1 IF LOWER CHARACTER = *
  12083. CSU2 LDD T2 COMPARE LOWER CHARACTER
  12084. LMM PFOU-1,T1
  12085. LPN 77
  12086. ZJN CSU1 IF LOWER CHARACTER COMPARE
  12087. UJN CSU4 USER NAMES DO NOT MATCH
  12088.  
  12089. CSU3 STD UI CLEAR USER INDEX
  12090. STD UI+1
  12091. LDN CTNC SET MODE TO NORMAL CATALOG SEARCH
  12092. STM CATA
  12093. CSU4 LJM CSUX EXIT
  12094. ISP SPACE 4,20
  12095. ** ISP - INITIALIZE SEARCH OF PERMANENT FILES.
  12096. *
  12097. * ENTRY (SFAA - SFAA+1) = CALL BLOCK ADDRESS.
  12098. * (UI - UI+1) = USER INDEX.
  12099. *
  12100. * EXIT (T5) = (EQ) = MASTER DEVICE EST ORDINAL.
  12101. * (T6) = CATALOG TRACK.
  12102. * (T7) = CATALOG SECTOR.
  12103. * (SI) = SEARCH INDEX.
  12104. * (CF) = CONTINUATION FLAG.
  12105. * (DVLW - DVLW+4) = DEVICE LAYOUT WORD.
  12106. * (CATB) = MASTER DEVICE NUMBER.
  12107. * *SETMS IO* PERFORMED.
  12108. *
  12109. * USES T4 - T7, RI - RI+1, CM - CM+4.
  12110. *
  12111. * CALLS CRA, CTA, PDV, SCA, SFA.
  12112. *
  12113. * MACROS ERROR, SETMS.
  12114.  
  12115.  
  12116. ISP SUBR ENTRY/EXIT
  12117.  
  12118. * INITIALIZE CATALOG SEARCH.
  12119.  
  12120. LDN 0 SELECT NO INTERLOCK OF CATALOG TRACK
  12121. STD T1
  12122. LDC PFPN SET CATALOG ADDRESS
  12123. RJM SCA
  12124. PJN ISP1 IF DEVICE AVAILABLE
  12125. ERROR PFN,CH,IW *PERMANENT FILES NOT AVAILABLE.*
  12126.  
  12127. ISP1 SHN 3 READ DEVICE LAYOUT WORD
  12128. ADN ALGL
  12129. CRM DVLW,ON
  12130. ADN PUGL-ALGL-1 READ USER NAME
  12131. CRD CM
  12132. SBN PUGL-PFGL GET DEVICE NUMBER FOR MASTER DEVICE
  12133. CRD FN
  12134. LDD FN+3 PRESERVE DEVICE NUMBER
  12135. LPN 77
  12136. STM CATB
  12137. LDM PFSR
  12138. LPN 77
  12139. ZJN ISP3 IF NO SPECIAL REQUESTS
  12140. SBN SRDN
  12141. NJN ISP3 IF NOT DEVICE NUMBER LIST
  12142. LDD FN+3 CHECK DEVICE NUMBER
  12143. LMM CTDN
  12144. LPN 77
  12145. ZJN ISP2 IF MASTER DEVICE
  12146. LDM CTDN
  12147. LPN 77
  12148. ZJN ISP3 IF DEVICE NUMBER NOT SPECIFIED
  12149. ISP2 STD DN
  12150. LDN PSNI ENABLE DEVICE NUMBER SEARCH
  12151. STM SHBE
  12152. ISP3 LDM PFPN
  12153. ZJN ISP4 IF NOT AUXILIARY DEVICE
  12154. LDD CM
  12155. ZJN ISP4 IF NOT PRIVATE DEVICE
  12156. LDC UJNI+SHB4-SHBA SET TO BYPASS USER INDEX CHECK
  12157. STM SHBA
  12158.  
  12159. ISP4 LDN IPCS PF INCREMENT OF CATALOG SEARCH
  12160. RAM AIPF+1
  12161. LDD T5 SET MASTER DEVICE EST ORDINAL
  12162. STD EQ
  12163. SETMS READSTR
  12164. RJM PDV PROCESS DEVICE STATUS
  12165. LDN 0 SET SECTOR
  12166. STD T7
  12167. STD SI CLEAR SEARCH INDEX
  12168. LDD CM+4 SET FWA OF TRT
  12169. SHN 3
  12170. ADN TRLL
  12171. RJM CTA CALCULATE FWA OF TRT
  12172. SBD TH SET *ADC TRTS-(4000/2)*
  12173. STM CRAA+1 COMMON DECK -COMPCRA-
  12174. STM SRAA+1 COMMON DECK -COMPSRA-
  12175. SHN -14
  12176. LMC ADCI
  12177. STM CRAA COMMON DECK -COMPCRA-
  12178. STM SRAA COMMON DECK -COMPSRA-
  12179. LDD MA SET FILE NAME IF SPECIFIED
  12180. CWM PFFN,ON
  12181. SBN 1
  12182. CRD FN
  12183. RJM SFA SET FET ADDRESS
  12184. ADN CFCN CONTINUATION CATALOG DATA ADDRESS
  12185. CRD CM
  12186. LDD CM+2
  12187. SCN 77
  12188. ADD CM
  12189. ADD CM+1
  12190. STD CF SET CONTINUATION FLAG
  12191. NJN ISP5 IF CONTINUATION
  12192. LJM ISP10 CHECK FET REQUEST POINTERS
  12193.  
  12194. ISP5 LDD CM RESTORE SEARCH INDEX
  12195. SHN 14
  12196. STD SI
  12197. SCN 77
  12198. ADD CM+1 SET UPPER 12 BITS OF RANDOM INDEX
  12199. SHN 14
  12200. STD RI
  12201. LMD RI
  12202. ADD CM+2
  12203. SHN -6
  12204. STD RI+1
  12205. LDM CATA CHECK REQUEST TYPE
  12206. LMN CTPM
  12207. NJN ISP6 IF NOT PERMIT REQUEST
  12208. LDN NWPE-1 SET MASK FOR SEARCH INDEX
  12209. STM ISPB
  12210. AOM ISPC SET PERMIT SEARCH STATUS
  12211. AOM ISPD
  12212. AOM ISPE
  12213. ISP6 LDD SI VALIDATE SEARCH INDEX
  12214. LPC NWCE-1
  12215. * LPC NWPE-1 (PERMIT SEARCH)
  12216. ISPB EQU *-1
  12217. NJN ISP7 IF INCORRECT SEARCH INDEX
  12218. LDM DVLW+1 SET LABEL TRACK
  12219. * LDM DVLW+2 (SET PERMIT TRACK)
  12220. ISPC EQU *-1
  12221. STD T6
  12222. LDN 0 REQUEST TRT UPDATE
  12223. RJM CRA CALCULATE RANDOM ADDRESS
  12224. MJN ISP7 IF ERROR IN CONVERSION
  12225. LDD T6 CHECK FOR INDEX INTO LABEL/PERMITS TRACK
  12226. LMM DVLW+1
  12227. * LMM DVLW+2 (PERMIT SEARCH)
  12228. ISPD EQU *-1
  12229. NJN ISP10 IF LEGAL RANDOM INDEX
  12230. ISPE LDN 0
  12231. * LDN 1 (PERMIT SEARCH)
  12232. NJN ISP9 IF PERMIT SEARCH
  12233. ISP7 ERROR ECD,CH,IW * ERROR IN CATLIST CONTINUATION DATA.*
  12234.  
  12235. ISP9 LDD T7
  12236. SBN 1
  12237. MJN ISP7 IF INCORRECT INDEX ON PERMIT SEARCH
  12238. ISP10 RJM SFA CHECK FET POINTERS
  12239. ADN 4 READ LIMIT
  12240. CRD LM-3
  12241. SBN 2 READ IN
  12242. CRD IN-3
  12243. LDD IN
  12244. LPN 77
  12245. STD IN
  12246. LDD LM CHECK BUFFER LENGTH
  12247. LPN 77
  12248. STD LM
  12249. SBD IN
  12250. MJN ISP11 IF IN GREATER THAN LIMIT
  12251. SHN 14
  12252. ADD LM+1
  12253. SBD IN+1
  12254. SBN 1 MUST HAVE ROOM FOR 1 ENTRY
  12255. MJN ISP11 IF NOT LARGE ENOUGH FOR 1 ENTRY
  12256. LDD LM CHECK POINTERS WITHIN FL
  12257. SHN 14
  12258. ADD LM+1
  12259. SBN 1
  12260. SHN -6
  12261. SBD FL
  12262. PJN ISP11 IF LIMIT PAST FL
  12263. LJM ISPX RETURN
  12264.  
  12265. ISP11 ERROR ILR,CH,IW * PFM INCORRECT REQUEST.*
  12266.  
  12267. ISPA DATA C*CATALOG*
  12268. SPACE 4,10
  12269. *CALL COMPSCA
  12270. SPACE 4,10
  12271. * CHECK FOR OVERFLOW.
  12272.  
  12273.  
  12274. OVERFLOW OVLA,EPFW OVERFLOW INTO ERROR PROCESSING AREA
  12275. OVERLAY (DEFINE/SETDA PROCESSING.)
  12276. SPACE 4,10
  12277. ** THIS OVERLAY PROCESSES THE DIRECT ACCESS FILE COMMANDS
  12278. * *DEFINE* AND *SETDA*. THE DEVICE OF RESIDENCE HAS
  12279. * ALREADY BEEN DETERMINED/VALIDATED BY OVERLAY *3PB*.
  12280.  
  12281.  
  12282. OVL BSS 0 ENTRY
  12283. LJM 0,P0 PROCESS COMMAND
  12284. TITLE COMMAND PROCESSING.
  12285. SDA SPACE 4,10
  12286. *** PROCESS *SETDA* REQUEST.
  12287. *
  12288. * SET THE DISK ADDRESS OF *FILE NAME* INTO THE CATALOG
  12289. * ENTRY OF THE FILE SPECIFIED BY *PFID*.
  12290.  
  12291.  
  12292. SDA BSS 0 ENTRY
  12293. LDM FCBS,CI
  12294. SHN 21-13
  12295. PJN SDA1 IF NOT DIRECT ACCESS FILE
  12296. LDM FCBT,CI
  12297. ZJN SDA2 IF NO CURRENT DISK ADDRESS IN CATALOG
  12298. SDA1 ERROR ICU *INCORRECT CATALOG UPDATE.*
  12299.  
  12300. SDA2 LDM PFDN SET DEVICE NUMBER
  12301. STM FCDN,CI
  12302. LDD FS+1 SET FIRST TRACK
  12303. STM FCBT,CI
  12304. LDD LF SET FILE LENGTH
  12305. STM FCLF,CI
  12306. LDD LF+1
  12307. STM FCLF+1,CI
  12308. LDM STAT
  12309. LPK STTA
  12310. NJN SDA3 IF TAPE ALTERNATE STORAGE REQUEST
  12311. LDM FCAF,CI CLEAR *AFPDR*, *AFTMP* AND *AFVER* FLAGS
  12312. SCN AFPDRM+AFTMPM+AFVERM
  12313. STM FCAF,CI
  12314. UJN SDA4 UPDATE SYSTEM SECTOR
  12315.  
  12316. SDA3 LDM FCTF,CI CLEAR *TFVER* FLAG
  12317. SCN TFVERM
  12318. STM FCTF,CI
  12319.  
  12320. * ENTER *DEFINE* PROCESSING TO UPDATE SYSTEM SECTOR.
  12321.  
  12322. SDA4 LCN EP-CI SET ADDRESS OF CATALOG ENTRY POINTER
  12323. RAM DEFA
  12324. LDC MMPF*5+2*5-1 CLEAR ONLY PART OF SYSTEM SECTOR
  12325. STM DEFB
  12326. LDC CASS
  12327. STM DEFC
  12328. LJM DEF2 PROCESS SYSTEM SECTOR
  12329. DEF SPACE 4,10
  12330. *** PROCESS *DEFINE* REQUEST.
  12331. *
  12332. * MAKE THE FILE *FILE NAME* A DIRECT ACCESS PERMANENT FILE
  12333. * WITH NAME *PF NAME*.
  12334.  
  12335.  
  12336. DEF BSS 0 ENTRY
  12337. EXECUTE 3PD LOAD CATALOG UPDATE ROUTINES
  12338. LDN PSNI BYPASS ALLOCATION OF IDLE SPACE
  12339. STM CCSB
  12340. STM CCSB+1
  12341. STM CCSC FORCE CATALOG ENTRY FORMATION
  12342. STM CCSF BYPASS WRITING CATALOG ENTRY TO DISK
  12343. STM CCSF+1
  12344. STM CCSG BYPASS WRITING CATALOG ENTRY TO DISK
  12345. STM CCSG+1
  12346. RJM CUC CHECK USER CONTROLS
  12347. LDM PFDN SET DEVICE NUMBER IN CATALOG ENTRY
  12348. STM FCEE
  12349. LDN 0 CLEAR FILE LENGTH
  12350. STD LF
  12351. STD LF+1
  12352. RJM CCS CREATE CATALOG SECTOR
  12353. ENDMS
  12354.  
  12355. * PROCESS SYSTEM SECTOR.
  12356.  
  12357. DEF2 LDD FS
  12358. STD T5
  12359. SETMS IO
  12360. RJM PDV PROCESS DEVICE STATUS
  12361. LDD CM+4 PRESET *COMPSEI*
  12362. SHN 3
  12363. ADN TRLL
  12364. RJM CTA CALCULATE FWA OF TRT
  12365. SBD TH
  12366. STM SEIA+1
  12367. SHN -14
  12368. LMC ADCI
  12369. STM SEIA
  12370. LDD FS+1 SET FIRST TRACK
  12371. STD T6
  12372. LDM LFEF
  12373. ZJN DEF3 IF NOT EMPTY FILE
  12374. LJM DEF7 PROCESS EMPTY FILE
  12375.  
  12376. * CHECK ENHANCED EOI DATA.
  12377.  
  12378. DEF3 LDN SSTL CHECK FILE VALIDATION ENABLED
  12379. CRD CM
  12380. LDD CM
  12381. SHN 21-4
  12382. MJN DEF4 IF VALIDATION NOT ENABLED
  12383. RJM SEI READ EOI SECTOR
  12384. SETMS IO
  12385. RJM PDV PROCESS DEVICE STATUS
  12386. LDC BFMS
  12387. RJM RDS
  12388. MJN DEF5 IF READ ERROR
  12389. LDD FS+1 RESET FIRST TRACK
  12390. STD T6
  12391. LMM BFMS+FTEI CHECK FIRST TRACK POINTER
  12392. ADM BFMS CHECK LINKAGE BYTES
  12393. ADM BFMS+1
  12394. ZJN DEF4 IF EOI SECTOR AND IF BOI POINTER MATCHES
  12395. ERROR FSE,,,FS *EQXXX,DNYY, FILE BOI/EOI/UI MISMATCH.*
  12396.  
  12397. DEF4 LDN 0 IGNORE FILE NAME
  12398. RJM RSS READ SYSTEM SECTOR
  12399. ZJN DEF7 IF LEGAL SYSTEM SECTOR
  12400. MJN DEF5 IF READ ERROR
  12401. ERROR DAF,,,FS *EQXXX,DNYY, DIRECT ACCESS FILE ERROR.*
  12402.  
  12403. DEF5 RJM PES PROCESS ERROR STATUS
  12404. ERROR MSE,CH,,FS *EQXXX,DNYY, MASS STORAGE ERROR.*
  12405.  
  12406. * CLEAR SYSTEM SECTOR BUFFER.
  12407.  
  12408. DEF7 ENDMS
  12409. LDC 77*5-1 CLEAR ENTIRE SYSTEM SECTOR
  12410. * LDC MMPF*5+2*5-1 (*SETDA* - CLEAR ONLY PART OF SECTOR)
  12411. DEFB EQU *-1
  12412. STD T1
  12413. DEF8 LDN 0
  12414. STM BFMS+2,T1
  12415. * STM CASS,T1 (*SETDA*)
  12416. DEFC EQU *-1
  12417. SOD T1
  12418. PJN DEF8 IF NOT END OF BUFFER
  12419.  
  12420. * ENTER CATALOG ENTRY INTO SYSTEM SECTOR.
  12421.  
  12422. DEFA LDD EP ADDRESS OF CATALOG ENTRY
  12423. * LDD CI (IF *SETDA* REQUEST)
  12424. STD T1
  12425. LDC CTSS ADDRESS IN SYSTEM SECTOR
  12426. STD T2
  12427. LDC NWCE*5
  12428. STD T3
  12429. DEF9 LDI T1 TRANSFER ENTRY
  12430. STI T2
  12431. AOD T1
  12432. AOD T2
  12433. SOD T3 DECREMENT BYTE COUNT
  12434. NJN DEF9 IF MORE STATUS IN SYSTEM SECTOR
  12435.  
  12436. * INITIALIZE SYSTEM SECTOR FIELDS.
  12437.  
  12438. LDN 32 SET CURRENT ACCESS TO WRITE
  12439. STM CASS
  12440. RJM SUC SET USER COUNTS IN SYSTEM SECTOR
  12441. ENDMS
  12442. LDN PDTL SET CURRENT DATE AND TIME
  12443. CRM WDSS,ON
  12444. LDK MMFL GET MAINFRAME ID
  12445. CRD CM
  12446. LDD CM SET MAINFRAME ID
  12447. STM WDSS
  12448. LDD CP GET EJT ORDINAL
  12449. ADN TFSW
  12450. CRD CM
  12451. SFA EJT,CM SET *JSNE* WORD OF EJT
  12452. ADK JSNE
  12453. CRM WJSS,ON
  12454. LDD FA SET FNT ENTRY IN SYSTEM SECTOR
  12455. STM DEFD
  12456. NFA FA,R
  12457. ADK FNTL
  12458. CRM FNSS,ON
  12459. LDN 0 CLEAR FST POINTER
  12460. STD FA
  12461. LDM FNSS+4 CHECK FILE TYPE
  12462. SHN -6
  12463. LMN PMFT
  12464. ZJN DEF10 IF FILE CREATED BY *ASSIGNPF*
  12465. LDC PMFT*100 SET PMFT
  12466. STM FNSS+4
  12467. AOM DEFE FORCE INCREMENT OF FILE COUNT
  12468.  
  12469. * WRITE SYSTEM SECTOR.
  12470.  
  12471. DEF10 SETMS IO,RW,BFMS
  12472. RJM PDV PROCESS DEVICE STATUS
  12473. LDM LFEF
  12474. ZJN DEF11 IF NOT EMPTY FILE
  12475. SETMS IO,,BFMS
  12476. RJM PDV PROCESS DEVICE STATUS
  12477. LDN WCSF/10000&WLSF/10000 WRITE CONSECUTIVE SECTORS
  12478. DEF11 LMC LDCI+WLSF/10000
  12479. STM WSSA
  12480. RJM WSS WRITE SYSTEM SECTOR
  12481. MJN DEF11.1 IF WRITE ERROR
  12482. LDM LFEF
  12483. ZJN DEF13 IF NOT EMPTY FILE
  12484. RJM WEI WRITE EOI SECTOR
  12485. PJN DEF12 IF NO MASS STORAGE ERRORS
  12486. DEF11.1 LJM WSE PROCESS WRITE ERROR
  12487.  
  12488. DEF12 ENDMS
  12489. LDD FS+1 SET FILE STATUS REWOUND
  12490. STD FS+2
  12491. LDN FSMS
  12492. STD FS+3
  12493. LDN 4 SET OPERATION COMPLETE - FILE BUSY
  12494. STD FS+4
  12495. LDN FSMS SET LAST SECTOR WRITTEN
  12496. RJM DTK
  12497. DEF13 ENDMS
  12498. LDN SPFS SET PRESERVED STATUS FOR DA FILE
  12499. STD CM+3
  12500. LDD T5
  12501. LMC 4000 SET CHECKPOINT
  12502. STD CM+1
  12503. LDD T6
  12504. STD CM+2
  12505. MONITOR STBM
  12506. LDD FS+1 SAVE PRESERVED TRACK
  12507. STM PTKT
  12508.  
  12509. * WRITE CATALOG ENTRY TO DISK.
  12510.  
  12511. LDD EQ SET MASTER EST ORDINAL
  12512. STD T5
  12513. LDD CC
  12514. LMN CCDF
  12515. ZJN DEF14 IF *DEFINE* REQUEST
  12516. LDD CB
  12517. UJN DEF15 WRITE CATALOG ENTRY TO DISK
  12518.  
  12519. DEF14 LDD EB
  12520. DEF15 RJM WBI WRITE CATALOG ENTRY TO DISK
  12521. ENDMS
  12522. * LDN 0 CLEAR PRESERVED TRACK
  12523. STM PTKT
  12524. RJM CCI CLEAR CATALOG INTERLOCK
  12525.  
  12526. * UPDATE FNT ENTRY.
  12527.  
  12528. LDC * READ FNT
  12529. DEFD EQU *-1
  12530. STD FA
  12531. NFA FA,R
  12532. ADK FNTL
  12533. CRD FN
  12534. ADN FUTL-FNTL
  12535. CRD CM
  12536. LDD FN+4 SET *PMFT* FILE TYPE
  12537. LPN 77
  12538. ADC PMFT*100
  12539. STD FN+4
  12540. LDD FN+3 CLEAR MODE BITS
  12541. SCN 77
  12542. STD FN+3
  12543. LDM PFUC SET *FS* INDEX IN *FUTL* WORD
  12544. SHN -11
  12545. SHN 6
  12546. ADM LFAL SET FILE ACCESS LEVEL
  12547. STD CM+2
  12548. NFA FA,R
  12549. ADK FNTL
  12550. CWD FN
  12551. ADN FSTL-FNTL
  12552. CWD FS
  12553. ADN FUTL-FSTL
  12554. CWD CM
  12555.  
  12556. * INCREMENT FILE COUNT (IF REQUIRED).
  12557.  
  12558. DEFE LDN 0
  12559. * LDN 1 (FILE COUNT INCREMENT REQUIRED)
  12560. ZJN DEF16 IF FILE COUNT ALREADY INCREMENTED
  12561. LDD FS INCREMENT FILE COUNT
  12562. STD CM+1
  12563. LDN IUCS
  12564. STD CM+3
  12565. MONITOR SMDM
  12566. DEF16 LDD CC
  12567. LMN CCDF
  12568. ZJN DEF17 IF *DEFINE* REQUEST
  12569.  
  12570. * RETURN LOCAL FILE (*SETDA*).
  12571.  
  12572. LDN 0 RETURN FILE
  12573. STM LOCF-1
  12574. EXECUTE 0DF,LOCF
  12575. DEF17 EXECUTE 3PU TERMINATE PROGRAM
  12576. LOCF SPACE 4,10
  12577. LOCF EQU *+5 *0DF* LOAD ADDRESS
  12578. ERRNG BFMS-LOCF-ZDFL CHECK LENGTH OF *0DF*
  12579. TITLE SUBROUTINES.
  12580. CUC SPACE 4,15
  12581. ** CUC - CHECK USER CONTROLS.
  12582. *
  12583. * ENTRY (MXNF) = NUMBER OF FILES ALLOWED.
  12584. * (ACNF - ACNF+1) NUMBER OF FILES ACCUMULATED.
  12585. * (MXDS - MXDS+1) MAXIMUM DIRECT ACCESS FILE SIZE.
  12586. *
  12587. * MACROS ERROR.
  12588.  
  12589.  
  12590. CUC SUBR ENTRY/EXIT
  12591. LDM MXDS CHECK FILE SIZE LIMIT
  12592. ADM MXDS+1
  12593. ZJN CUC2 IF UNLIMITED ACCESS
  12594. LDM MXDS CHECK SIZE LIMITS
  12595. SBD LF
  12596. MJN CUC1 IF LIMIT EXCEEDED
  12597. NJN CUC2 IF LIMIT NOT EXCEEDED
  12598. LDM MXDS+1
  12599. SBD LF+1
  12600. PJN CUC2 IF LIMIT NOT EXCEEDED
  12601. CUC1 ERROR FTL * FILE TOO LONG.*
  12602.  
  12603. CUC2 LDM MXNF CHECK FILE NUMBER LIMIT
  12604. ZJN CUCX IF NO LIMIT SET
  12605. LDD NF
  12606. SHN 14
  12607. ADD NF+1
  12608. ADN 10 ROUND UP
  12609. SHN -3
  12610. SBM MXNF
  12611. MJN CUCX IF LIMIT NOT EXCEEDED
  12612. ZJN CUCX IF LIMIT NOT EXCEEDED
  12613. ERROR COF * TOO MANY PERMANENT FILES.*
  12614. SUC SPACE 4,10
  12615. ** SUC - SET USER COUNTS IN SYSTEM SECTOR.
  12616. *
  12617. * ENTRY (BFMS - BFMS+500) - SYSTEM SECTOR.
  12618. * (T5) = EST ORDINAL.
  12619. *
  12620. * EXIT LOCAL WRITE FLAG SET.
  12621. *
  12622. * USES T7.
  12623. *
  12624. * CALLS SMI.
  12625.  
  12626.  
  12627. SUC SUBR ENTRY/EXIT
  12628. RJM SMI COMPUTE LOCAL USER COUNT BASE ADDRESS
  12629. STD T0
  12630. SHN 2
  12631. ADD T0
  12632. ADC UCSS
  12633. STD T7
  12634. AOI T7
  12635. UJN SUCX RETURN
  12636. WSE SPACE 4,20
  12637. ** WSE - WRITE MASS STORAGE ERROR PROCESSOR.
  12638. *
  12639. * ENTRY (FS - FS+4) = LOCAL FILE FST.
  12640. * (LFEF) = 0 IF LOCAL FILE WRITTEN PREVIOUSLY.
  12641. * (PWRF) = *PFM* RESTART FLAGS FOR RECALL.
  12642. * (RDCT) = DRIVER STATUS.
  12643. *
  12644. * EXIT (PWRF) = *RFRR* FLAG SET IF REQUEST TO BE RETRIED
  12645. * DUE TO UNRECOVERABLE WRITE ERROR.
  12646. * (RTKT) = RESERVED TRACK TO BE RELEASED IF REQUEST
  12647. * TO BE RETRIED.
  12648. * TO *ERR* TO RETRY REQUEST OR ISSUE ERROR MESSAGE.
  12649. *
  12650. * CALLS PES.
  12651. *
  12652. * MACROS ERROR.
  12653.  
  12654.  
  12655. WSE BSS 0 ENTRY
  12656. LDM LFEF
  12657. ZJN WSE2 IF FILE WRITTEN PREVIOUSLY
  12658. LDM RDCT DRIVER STATUS
  12659. SHN 21-12
  12660. PJN WSE1 IF RECOVERABLE ERROR
  12661. LDM PWRF CHECK RESTART FLAGS
  12662. LPK RFRR
  12663. NJN WSE3 IF REQUEST ALREADY RETRIED
  12664. LDK RFRR SET RETRY REQUEST FLAG
  12665. RAM PWRF
  12666. WSE1 LDD FS+1 SET RESERVED TRACK TO BE RELEASED
  12667. STM RTKT
  12668. ERROR RTR,CH RETRY REQUEST
  12669.  
  12670. WSE2 RJM PES PROCESS ERROR STATUS
  12671. WSE3 ERROR MSE,CH,,FS *EQXXX,DNYY, MASS STORAGE ERROR.*
  12672. SPACE 4,10
  12673. * COMMON DECKS.
  12674.  
  12675.  
  12676. EJT$ SET 0 DEFINE EJT ACCESS
  12677. *CALL COMPGFP
  12678. *CALL COMPRSS
  12679. *CALL COMPSMI
  12680. *CALL COMPWEI
  12681. *CALL COMPWSS
  12682. SPACE 4,10
  12683. * CHECK OVERFLOW.
  12684.  
  12685.  
  12686. OVERFLOW OVLC,BUF1-2 OVERFLOW INTO CATALOG BUFFER
  12687. OVERLAY (DROPDS/PURGE PROCESSING.)
  12688. SPACE 4,10
  12689. ** THIS OVERLAY PROCESSES THE COMMANDS *DROPDS* AND *PURGE*.
  12690.  
  12691.  
  12692. OVL BSS 0 ENTRY
  12693. LDD EQ RESET MASTER DEVICE EST ORDINAL
  12694. STD T5
  12695. LJM 0,P0 PROCESS COMMAND
  12696. TITLE COMMAND PROCESSING.
  12697. DDS SPACE 4,10
  12698. *** PROCESS *DROPDS* REQUEST.
  12699. *
  12700. * DROP DISK SPACE FOR DIRECT ACCESS FILE.
  12701.  
  12702.  
  12703. DDS BSS 0 ENTRY
  12704.  
  12705. * CHECK FOR CARTRIDGE ALTERNATE STORAGE COPY OF FILE.
  12706.  
  12707. LDM FCAA,CI
  12708. ADM FCAA+1,CI
  12709. ADM FCAA+2,CI
  12710. ZJN DDS1 IF NO CARTRIDGE ALTERNATE STORAGE COPY
  12711. LDM FCAF,CI
  12712. LPN AFOBSM
  12713. NJN DDS1 IF COPY OBSOLETE
  12714. LDM FCAF,CI
  12715. LPN AFPDEM+AFPSEM
  12716. ZJN DDS2 IF NO ERROR FLAGS SET
  12717. AOM DDSA SET *ERROR FLAG DETECTED* FLAG
  12718.  
  12719. * CHECK FOR TAPE ALTERNATE STORAGE COPY OF FILE.
  12720.  
  12721. DDS1 LDM FCTV,CI
  12722. ADM FCTV+1,CI
  12723. ZJN DDS1.2 IF NO TAPE ALTERNATE STORAGE COPY OF FILE
  12724. LDM FCTF,CI CHECK FOR ERRORS ON PRIMARY VSN
  12725. LPK TFPVNM+TFEPVM
  12726. ZJN DDS2 IF NO ERRORS ON PRIMARY VSN
  12727. AOM DDSA SET *ERROR FLAG DETECTED* FLAG
  12728. LDM FCTF,CI
  12729. LPK TFSVSM
  12730. ZJN DDS1.2 IF NO SECONDARY VSN COPY OF FILE
  12731. LDM FCTF,CI
  12732. LPK TFSVNM+TFESVM
  12733. ZJN DDS2 IF NO ERRORS ON SECONDARY VSN
  12734.  
  12735. DDS1.1 ERROR ASE * ALTERNATE STORAGE ERROR.*
  12736.  
  12737. DDS1.2 LDN 0 CHECK FOR ERRORS
  12738. * LDN 1 (ALTERNATE STORAGE ERROR DETECTED)
  12739. DDSA EQU *-1
  12740. NJN DDS1.1 IF ALTERNATE STORAGE ERRORS DETECTED
  12741. ERROR AIO * NO ALTERNATE STORAGE COPY OF FILE.*
  12742.  
  12743. * RELEASE DISK SPACE FOR FILE.
  12744.  
  12745. DDS2 RJM SCP SAVE CATALOG PARAMETERS
  12746. LDN 0 CLEAR DISK ADDRESS
  12747. STM FCBT,CI
  12748. LDM FCDN,CI SAVE DEVICE NUMBER
  12749. STM SDDA+1
  12750. LDC LDCI
  12751. STM SDDA
  12752. LDN 0 CLEAR DN AND DISK-RELATED ERRORS
  12753. STM FCEC,CI
  12754. ERRNZ FCDN-FCEC CODE DEPENDS ON VALUE
  12755. LDM FCLF,CI CHECK IF LENGTH IS SET IN PFC
  12756. ADM FCLF+1,CI
  12757. NJN DDS3 IF LENGTH PRESENT
  12758. AOM DDFA FORCE LENGTH CALCULATION
  12759. AOM DDFD
  12760. DDS3 RJM DDF DELETE DIRECT ACCESS FILE
  12761. LJM TRP TERMINATE PROGRAM
  12762. PUR SPACE 4,10
  12763. *** PROCESS *PURGE* REQUEST.
  12764. *
  12765. * REMOVE PERMANENT FILE *PF NAME* FROM PERMANENT FILE SYSTEM.
  12766. *
  12767. * AN INDIRECT ACCESS FILE WHICH DOES NOT HAVE A DISK RESIDENT
  12768. * COPY IS TREATED THE SAME AS A DIRECT ACCESS FILE WHICH
  12769. * DOES NOT HAVE A DISK IMAGE.
  12770.  
  12771.  
  12772. PUR BSS 0 ENTRY
  12773. LDM FCBS,CI
  12774. SHN 6
  12775. MJP PUR2 IF DIRECT ACCESS FILE
  12776. LDM FCBT,CI CHECK IF DISK RESIDENT
  12777. NJN PUR1 IF DISK RESIDENT INDIRECT ACCESS FILE
  12778. LDC 4000 MARK ENTRY AS DAPF HOLE
  12779. STM FCBS,CI
  12780. UJN PUR2 PROCESS AS IF DIRECT ACCESS FILE
  12781.  
  12782. PUR1 EXECUTE 3PD LOAD CATALOG UPDATE ROUTINES
  12783. RJM IIA INTERLOCK INDIRECT ALLOCATION
  12784. LDK STNS SET *NO JOB SUSPENSION* AFTER THIS POINT
  12785. RAM STAT
  12786. RJM DCE RELEASE IAPF FILE SPACE
  12787. ZJN PUR1.1 IF FILE WITHIN CHAIN AND NO DELINK
  12788. RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  12789. UJN TRP TERMINATE PROGRAM
  12790.  
  12791. PUR1.1 RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  12792. LDD CB REWRITE CATALOG ENTRY
  12793. RJM WBI
  12794. ENDMS
  12795. UJN TRP TERMINATE PROGRAM
  12796.  
  12797. PUR2 RJM SCP SAVE CATALOG PARAMETERS
  12798. LDN 0 CLEAR FILE LENGTH
  12799. STM FCLF,CI
  12800. STM FCLF+1,CI
  12801. STM FCUI+1,CI CLEAR USER INDEX
  12802. LDM FCUI,CI
  12803. SCN 77
  12804. STM FCUI,CI
  12805. RJM DDF DELETE DIRECT ACCESS FILE
  12806. UJN TRP TERMINATE PROGRAM
  12807. SPACE 4,10
  12808. ** TRP - TERMINATE PROGRAM.
  12809.  
  12810.  
  12811. TRP EXECUTE 3PU TERMINATE PROGRAM
  12812. TITLE SUBROUTINES.
  12813. DDF SPACE 4,10
  12814. ** DDF - DELETE DIRECT ACCESS FILE.
  12815. *
  12816. * READ SYSTEM SECTOR AND EITHER PURGE FILE OR SET PURGE
  12817. * STATUS IN SYSTEM SECTOR (IF FILE CURRENTLY ACTIVE).
  12818. * RELEASE THE CATALOG ENTRY FOR THE FILE.
  12819. *
  12820. * CALLS CTA, CTI, ITC, PDV, RDS, RSS, SDD, SEI, WCB, WSS.
  12821. *
  12822. * MACROS ENDMS, ERROR, SETMS, SFA.
  12823.  
  12824.  
  12825. DDF SUBR ENTRY/EXIT
  12826. RJM SDD SEARCH FOR DIRECT ACCESS DEVICE
  12827. ZJN DDF1 IF DEVICE FOUND
  12828. RJM WCB REWRITE CATALOG BUFFER
  12829. ERROR DAD,CH,IW * DIRECT ACCESS DEVICE ERROR.*
  12830.  
  12831. * PERFORM BOI/EOI VALIDATION.
  12832.  
  12833. DDF1 LDM PFFT FIRST TRACK
  12834. NJN DDF2 IF FILE DISK RESIDENT
  12835. RJM WCB REWRITE CATALOG BUFFER
  12836. UJN DDFX RETURN
  12837.  
  12838. DDF2 RJM ITC INTERLOCK TRACK CHAIN FOR FILE
  12839. ZJN DDF3 IF INTERLOCK SUCCESSFUL
  12840. RJM WCB REWRITE CATALOG BUFFER
  12841. EXIT TNR,CH,IW,T5,EC7 *EQXXX,DNYY, TRACK NOT RESERVED.*
  12842.  
  12843. DDF3 AOM DAIF SET INTERLOCK FLAG
  12844. SETMS IO
  12845. RJM PDV PROCESS DEVICE STATUS
  12846. LDN SSTL CHECK FILE VALIDATION ENABLED
  12847. CRD CM
  12848. LDD CM
  12849. LPN 20
  12850. LMN 20
  12851. STM DDFE+1 SAVE VALIDATION VALUE
  12852. NJN DDF3.1 IF VALIDATION ENABLED
  12853. DDFA LDN 0
  12854. * LDN 1 (LENGTH UPDATE REQUIRED)
  12855. NJN DDF3.1 IF LENGTH UPDATE REQUIRED
  12856. LJM DDF4 SKIP VALIDATION
  12857.  
  12858. DDF3.1 SFA EST,T5 GET EST ENTRY
  12859. ADK EQDE
  12860. CRD CM
  12861. LDD CM+4 SETUP *COMPSEI*
  12862. SHN 3
  12863. ADN TRLL
  12864. RJM CTA CALCULATE FWA OF TRT
  12865. SBD TH
  12866. STM SEIA+1
  12867. SHN -14
  12868. LMC ADCI
  12869. STM SEIA
  12870. RJM SEI POSITION TO EOI SECTOR
  12871. DDFD LDN 0
  12872. * LDN 1 (LENGTH UPDATE REQUIRED)
  12873. ZJN DDF3.2 IF LENGTH UPDATE NOT REQUIRED
  12874. LDD T2 SET LENGTH IN PFC
  12875. STM FCLF,CI
  12876. LDD T3
  12877. STM FCLF+1,CI
  12878. DDFE LDC 0
  12879. * LDC 20 (VALIDATION REQUIRED)
  12880. ZJN DDF4 IF VALIDATION NOT REQUIRED
  12881.  
  12882. DDF3.2 SETMS IO
  12883. RJM PDV PROCESS DEVICE STATUS
  12884. LDC BFMS
  12885. RJM RDS
  12886. MJN DDF6 IF READ ERROR
  12887. LDM PFFT RESET FIRST TRACK
  12888. STD T6
  12889. LMM BFMS+FTEI CHECK FIRST TRACK POINTER
  12890. ADM BFMS CHECK LINKAGE BYTES
  12891. ADM BFMS+1
  12892. DDF4 ZJN DDF5 IF EOI SECTOR AND IF BOI POINTER MATCHES
  12893. LJM DDF10 PROCESS BOI/EOI ERROR
  12894.  
  12895. * READ SYSTEM SECTOR.
  12896.  
  12897. DDF5 LDN 0 IGNORE FILE NAME
  12898. RJM RSS
  12899. ZJN DDF8 IF LEGAL SYSTEM SECTOR
  12900. MJN DDF6 IF READ ERROR
  12901. RJM WCB REWRITE CATALOG BUFFER
  12902. EXIT DAF,CH,IW,T5,EC7 *EQXXX,DNYY,DIRECT ACCESS FILE ERROR*
  12903.  
  12904. DDF6 RJM PES PROCESS ERROR STATUS
  12905. RJM WCB REWRITE CATALOG BUFFER
  12906. EXIT MSE,CH,IW,T5,EC7 *EQXXX,DNYY, MASS STORAGE ERROR.*
  12907.  
  12908. * VALIDATE SYSTEM SECTOR.
  12909.  
  12910. DDF8 LDM CTSS+FCUI COMPARE USER INDEX IN SYSTEM SECTOR
  12911. LPN 77
  12912. SHN 14
  12913. LMM CTSS+FCUI+1
  12914. DDFB LMC *
  12915. * LMC UI (USER INDEX FROM CATALOG)
  12916. NJN DDF10 IF USER INDEX MISMATCH
  12917. LDN 2
  12918. STD P0
  12919. DDF9 LDM FCCD+2,CI CHECK CREATION DATE
  12920. DDFC EQU *-1
  12921. LMM CTSS+FCCD,P0
  12922. NJN DDF10 IF MISMATCH ON CREATION DATE
  12923. SOM DDFC
  12924. SOD P0
  12925. PJN DDF9 IF NOT END OF DATE
  12926. UJN DDF11 CHECK FOR ACTIVE USERS
  12927.  
  12928. * PROCESS BOI/EOI/UI MISMATCH.
  12929.  
  12930. DDF10 RJM WCB REWRITE CATALOG BUFFER
  12931. EXIT FSE,CH,IW,T5,EC7 *EQXXX,DNYY,FILE BOI/EOI/UI MISMATCH*
  12932.  
  12933. * CHECK FOR ACTIVE USERS.
  12934.  
  12935. DDF11 LDM CASS CHECK FOR ACTIVE USERS PRESENT
  12936. LPN 32
  12937. ADM UCSS+1
  12938. ADM UCSS+2
  12939. ADM UCSS+3
  12940. ADM UCSS+4
  12941. ADM FISS CHECK FOR FAST ATTACH FILE
  12942. STD P0
  12943. ZJN DDF11.1 IF NO ACTIVE USERS
  12944. LDM PFSR
  12945. LPN 77
  12946. LMN SRNB
  12947. NJN DDF11.1 IF TO PURGE FILE WHEN BUSY
  12948. ERROR FBS *(FILE NAME) BUSY.*
  12949.  
  12950. * RELEASE THE CATALOG ENTRY FOR THE FILE. NO JOB SUSPENSION
  12951. * IS PERFORMED IF THE DIRECT ACCESS DEVICE BECOMES INACCESSIBLE
  12952. * AFTER THIS POINT.
  12953. *
  12954. * THE CATALOG ENTRY IS RELEASED BEFORE SETTING PURGE STATUS
  12955. * IN THE SYSTEM SECTOR OF THE FILE BECAUSE THE CATALOG AND
  12956. * DIRECT ACCESS FILES MAY RESIDE ON DIFFERENT DEVICES. THIS
  12957. * ORDER ENSURES THAT THE CATALOG DOES NOT POINT TO AN OBSOLETE
  12958. * FILE IF THE CATALOG DEVICE BECOMES INACCESSIBLE BEFORE THE
  12959. * ENTRY IS RELEASED.
  12960.  
  12961. DDF11.1 RJM WCB REWRITE CATALOG BUFFER
  12962. LDM PFFT RESET FIRST TRACK OF FILE
  12963. STD T6
  12964.  
  12965. * REWRITE SYSTEM SECTOR (FOR FILE WITH ACTIVE USERS).
  12966.  
  12967. LDD P0
  12968. ZJP DDF14 IF NO ACTIVE USERS
  12969. LDM CASS SET PURGE BIT
  12970. LMN 40
  12971. STM CASS
  12972. SETMS IO,RW
  12973. NJN DDF13 IF DEVICE INACCESSIBLE
  12974. RJM WSS WRITE SYSTEM SECTOR
  12975. PJN DDF12 IF NO ERROR
  12976. LDM RDCT DEVICE STATUS
  12977. SHN 21-12
  12978. PJN DDF13 IF DEVICE INACCESSIBLE
  12979. EXIT MSE,CH,IW,T5,EC7 *EQXXX,DNYY, MASS STORAGE ERROR.*
  12980.  
  12981. DDF12 ENDMS
  12982. DDF13 LDD T6 CLEAR TRACK INTERLOCK
  12983. RJM CTI
  12984. LDN 0 CLEAR INTERLOCK FLAG
  12985. STM DAIF
  12986. UJN DDF15 COMPLETE
  12987.  
  12988. * RELEASE FILE SPACE (FOR FILE WITH NO ACTIVE USERS).
  12989.  
  12990. DDF14 LDD T5 SET EST ORDINAL
  12991. LMC 4000 SET CHECKPOINT BIT
  12992. STD CM+1
  12993. LDD T6
  12994. STD CM+2
  12995. MONITOR DTKM
  12996. * LDN 0 CLEAR TRACK INTERLOCK FLAG
  12997. STM DAIF
  12998.  
  12999. * INCREMENT PRU LIMIT FIELD IN CONTROL POINT AREA.
  13000. * NUMBER OF SECTORS RETURNED BY *DTKM* IS IN (CM+3 - CM+4).
  13001.  
  13002. LDN CICS INCREMENT CP AREA FIELD FUNCTION CODE
  13003. STD CM
  13004. LDK ACLW ADDRESS OF MASS STORAGE PRU LIMIT
  13005. STD CM+1
  13006. LDN 0D*100+18D POSITION AND WIDTH OF LIMIT FIELD
  13007. STD CM+2
  13008. LDD MA WRITE *UADM* PARAMETERS TO MESSAGE BUFFER
  13009. CWD CM
  13010. LDN 1
  13011. STD CM+1 REQUEST COUNT
  13012. STD CM+2 DO NOT DROP PP
  13013. MONITOR UADM
  13014. DDF15 LJM DDFX RETURN
  13015. SCP SPACE 4,10
  13016. ** SCP - SAVE CATALOG PARAMETERS.
  13017. *
  13018. * SAVES PARAMETERS FROM THE CATALOG ENTRY FOR LATER USE.
  13019. *
  13020. * EXIT (DDFB, DDFB+1) = USER INDEX.
  13021. * (PFFT) = FIRST TRACK.
  13022.  
  13023.  
  13024. SCP SUBR ENTRY/EXIT
  13025. LDM FCUI,CI SAVE USER INDEX
  13026. LPN 77
  13027. RAM DDFB
  13028. LDM FCUI+1,CI
  13029. STM DDFB+1
  13030. LDM FCBT,CI SAVE FIRST TRACK
  13031. STM PFFT
  13032. UJN SCPX RETURN
  13033. SDD SPACE 4,15
  13034. ** SDD - SEARCH FOR DIRECT ACCESS DEVICE.
  13035. *
  13036. * ENTRY (CI) = ADDRESS OF CATALOG ENTRY.
  13037. * (EQ) = MASTER DEVICE EST ORDINAL.
  13038. * (PFPN - PFPN+4) = PERMANENT FILE DEVICE DESCRIPTION.
  13039. * (SDDA) PRESET WITH DEVICE NUMBER IF *SETDA* REQUEST.
  13040. *
  13041. * EXIT (A) = 0 IF DEVICE FOUND.
  13042. * (A) .GT. 0 IF DEVICE NOT FOUND OR INACCESSIBLE.
  13043. * (T5) = (PFEQ) = DIRECT ACCESS DEVICE EST ORDINAL.
  13044. *
  13045. * USES CM, T5.
  13046. *
  13047. * CALLS PDA, SDN.
  13048.  
  13049.  
  13050. SDD2 LDD T5 SET DIRECT ACCESS DEVICE EST ORDINAL
  13051. STM PFEQ
  13052. LDN 0 RETURN WITH (A) = 0
  13053.  
  13054. SDD SUBR ENTRY/EXIT
  13055. LDD EQ SET DIRECT ACCESS DEVICE EST ORDINAL
  13056. STD T5
  13057. STM PFEQ
  13058. SDDA LDM FCDN,CI GET DIRECT ACCESS DEVICE NUMBER
  13059. * LDC (FCDN) (*DROPDS*)
  13060. LPN 77
  13061. ZJN SDDX IF MASTER DEVICE, RETURN
  13062. STD CM
  13063. LDM PFPN+4 FAMILY EST ORDINAL
  13064. RJM SDN SEARCH FOR DEVICE NUMBER
  13065. PJN SDD2 IF DEVICE FOUND
  13066. ADN 1
  13067. RJM PDA PROCESS DEVICE AVAILABILITY
  13068. SDD1 LDN 1 RETURN WITH (A) .GT. 0
  13069. UJN SDDX RETURN
  13070. WCB SPACE 4,20
  13071. ** WCB - REWRITE CATALOG BUFFER.
  13072. *
  13073. * ENTRY (T5) = DIRECT ACCESS DEVICE EST ORDINAL.
  13074. * (CB) = ADDRESS OF CATALOG BUFFER.
  13075. * (CC) = COMMAND CODE.
  13076. * (EQ) = MASTER DEVICE EST ORDINAL.
  13077. * (PFEQ) = DIRECT ACCESS DEVICE EST ORDINAL.
  13078. *
  13079. * EXIT (T5) = DIRECT ACCESS DEVICE EST ORDINAL.
  13080. * CATALOG BUFFER REWRITTEN.
  13081. * CATALOG INTERLOCK RELEASED.
  13082. * *ENDMS* PERFORMED.
  13083. *
  13084. * USES T5.
  13085. *
  13086. * CALLS CCI, WBI, WCE.
  13087. *
  13088. * MACROS ENDMS.
  13089.  
  13090.  
  13091. WCB SUBR ENTRY/EXIT
  13092. LDD EQ
  13093. LMD T5
  13094. ZJN WCB0 IF ALREADY ON MASTER DEVICE
  13095. ENDMS
  13096. LDD EQ SET MASTER DEVICE EST ORDINAL
  13097. STD T5
  13098. WCB0 LDD CC CHECK COMMAND CODE
  13099. LMN CCDD
  13100. ZJN WCB1 IF *DROPDS* REQUEST
  13101. RJM WCE UPDATE AND REWRITE CATALOG BUFFER
  13102. UJN WCB2 CLEAR CATALOG INTERLOCK
  13103.  
  13104. WCB1 LDD CB REWRITE CATALOG BUFFER
  13105. RJM WBI
  13106. ENDMS
  13107. WCB2 RJM CCI CLEAR CATALOG INTERLOCK
  13108. LDM PFEQ RESET DIRECT ACCESS DEVICE EST ORDINAL
  13109. STD T5
  13110. UJN WCBX RETURN
  13111. WCE SPACE 4,15
  13112. ** WCE - REWRITE CATALOG ENTRY.
  13113. *
  13114. * ENTRY (CI) = ADDRESS OF CATALOG ENTRY.
  13115. * (CB) = ADDRESS OF CATALOG BUFFER.
  13116. *
  13117. * EXIT (FCKD) UPDATED AND CATALOG SECTOR REWRITTEN.
  13118. *
  13119. * USES CM - CM+4.
  13120. *
  13121. * CALLS WBI.
  13122. *
  13123. * MACROS ENDMS.
  13124.  
  13125.  
  13126. WCE SUBR ENTRY/EXIT
  13127. LDN PDTL UPDATE CONTROL MODIFICATION DATE
  13128. CRD CM
  13129. LDD CM+2
  13130. STM FCKD,CI
  13131. LDD CM+3
  13132. STM FCKD+1,CI
  13133. LDD CM+4
  13134. STM FCKD+2,CI
  13135. LDD CB REWRITE CATALOG BUFFER
  13136. RJM WBI
  13137. ENDMS
  13138. UJN WCEX RETURN
  13139. SPACE 4,10
  13140. * COMMON DECKS.
  13141.  
  13142.  
  13143. *CALL COMPRSS
  13144. *CALL COMPSDN
  13145. *CALL COMPWSS
  13146. SPACE 4,10
  13147. * CHECK FOR OVERFLOW.
  13148.  
  13149.  
  13150. OVERFLOW OVLC,BUF2-2 OVERFLOW INTO HOLE BUFFER
  13151. OVERLAY (DELPFC/DROPIDS/PERMIT PROCESSING.)
  13152. SPACE 4,10
  13153. ** THIS OVERLAY PROCESSES THE COMMANDS *DELPFC*, *DROPIDS*
  13154. * AND *PERMIT*.
  13155.  
  13156.  
  13157. OVL BSS 0 ENTRY
  13158. LDD EQ RESET MASTER DEVICE EST ORDINAL
  13159. STD T5
  13160. LJM 0,P0 PROCESS COMMAND
  13161. TITLE COMMAND PROCESSING.
  13162. DIS SPACE 4,10
  13163. *** PROCESS *DROPIDS* REQUEST.
  13164. *
  13165. * DROP INDIRECT ACCESS FILE DISK SPACE.
  13166. *
  13167. * THE TRACK AND SECTOR POINTERS IN THE EXISTING PFC WILL BE
  13168. * CLEARED, AND A HOLE WILL BE CREATED TO POINT TO THE DISK
  13169. * SPACE. THIS HOLE WILL EITHER BE PLACED IN A PREVIOUSLY
  13170. * EXISTING DAPF HOLE OR A NEW HOLE WILL BE ALLOCATED AT THE
  13171. * END OF THE CATALOG TRACK. THIS IS DONE SO THAT THE
  13172. * POSITION OF THE ORIGINAL PFC DOES NOT CHANGE; BOTH THE
  13173. * DESTAGE DUMP CODE AND THE PURGE AFTER DUMP CODE IN *PFDUMP*
  13174. * REQUIRE THAT THE POSITION OF THE PFC REMAIN CONSTANT.
  13175.  
  13176.  
  13177. DIS BSS 0 ENTRY
  13178. LDD CI SET CURRENT PFN FOR NEW PFC ENTRY
  13179. ADN FCFN
  13180. RJM SFN
  13181.  
  13182. * CHECK FOR CARTRIDGE ALTERNATE STORAGE COPY OF FILE.
  13183.  
  13184. LDM FCAA,CI
  13185. ADM FCAA+1,CI
  13186. ADM FCAA+2,CI
  13187. ZJN DIS1 IF NO CARTRIDGE ALTERNATE STORAGE COPY
  13188. LDM FCAF,CI
  13189. LPN AFPDEM+AFPSEM
  13190. ZJN DIS4 IF NO ERROR FLAGS SET
  13191. AOM DISA SET *ERROR FLAG DETECTED* FLAG
  13192.  
  13193. * CHECK FOR TAPE ALTERNATE STORAGE COPY OF FILE.
  13194.  
  13195. DIS1 LDM FCTV,CI
  13196. ADM FCTV+1,CI
  13197. ZJN DIS2 IF NO TAPE ALTERNATE STORAGE COPY OF FILE
  13198. LDM FCTF,CI CHECK FOR ERRORS ON PRIMARY VSN
  13199. LPK TFPVNM+TFEPVM
  13200. ZJN DIS4 IF NO ERRORS ON PRIMARY VSN
  13201. AOM DISA SET *ERROR FLAG DETECTED* FLAG
  13202. LDM FCTF,CI
  13203. LPK TFSVSM
  13204. ZJN DIS2 IF NO SECONDARY VSN COPY OF FILE
  13205. LDM FCTF,CI
  13206. LPK TFSVNM+TFESVM
  13207. NJN DIS3 IF ERRORS ON SECONDARY VSN
  13208. UJN DIS4 CONTINUE
  13209.  
  13210. DIS2 LDN 0 CHECK IF ERROR FLAG DETECTED
  13211. * LDN 1 (ALTERNATE STORAGE ERROR FLAG DETECTED)
  13212. DISA EQU *-1
  13213. NJN DIS3 IF ALTERNATE STORAGE ERROR FLAG DETECTED
  13214. ERROR AIO * NO ALTERNATE STORAGE COPY OF FILE.*
  13215.  
  13216. DIS3 ERROR ASE * ALTERNATE STORAGE ERROR.*
  13217.  
  13218. * SET UP HOLE TO POINT TO DATA.
  13219.  
  13220. DIS4 LDM FCBT,CI SET DISK ADDRESS
  13221. STM SDAB
  13222. LDM FCBS,CI
  13223. STM SDAC
  13224. LDM FCLF,CI SET FILE LENGTH IN (LF - LF+1)
  13225. STD LF
  13226. LDM FCLF+1,CI
  13227. STD LF+1
  13228. STD HL SIMULATE EXACT FIT HOLE, IF HOLE FOUND
  13229. EXECUTE 3PD LOAD CATALOG UPDATE ROUTINES
  13230. LDN PSNI BYPASS SPACE ALLOCATION IN *CCS*
  13231. STM CCSB
  13232. STM CCSB+1
  13233. STM CCSC BYPASS *WBI* CALLS IN *CCS*
  13234. STM CCSF
  13235. STM CCSF+1
  13236. STM CCSG
  13237. STM CCSG+1
  13238. ISTORE FCEL,(UJN FCE7.1) BYPASS DATE/TIME UPDATES IN *FCE*
  13239. RJM IIA INTERLOCK INDIRECT ALLOCATION
  13240. LDK STNS SET *NO JOB SUSPENSION* AFTER THIS POINT
  13241. RAM STAT
  13242. RJM CCS CREATE NEW CATALOG ENTRY FOR HOLE
  13243.  
  13244. * UPDATE EXISTING PFC AND RELEASE FILE SPACE.
  13245.  
  13246. LDN 0 CLEAR DISK ADDRESS IN EXISTING PFC
  13247. STM FCBT,CI
  13248. STM FCBS,CI
  13249. LDD CB REWRITE EXISTING PFC
  13250. RJM WBI
  13251. LDD EB SET POINTERS TO PFC TO BE DELETED
  13252. STD CB
  13253. LDD EP
  13254. STD CI
  13255. RJM DCE RELEASE IAPF FILE SPACE
  13256. ZJN DIS5 IF FILE WITHIN CHAIN AND NO DELINK
  13257. RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  13258. UJN DIS6 TERMINATE PROGRAM
  13259.  
  13260. DIS5 RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  13261. LDD CB
  13262. RJM WBI WRITE CATALOG ENTRY
  13263. ENDMS
  13264. DIS6 EXECUTE 3PU TERMINATE PROGRAM
  13265. DPF SPACE 4,10
  13266. *** PROCESS *DELPFC* REQUEST.
  13267. *
  13268. * DELETE INDIRECT ACCESS FILE PFC ENTRY, AND DROP ASSOCIATED
  13269. * DISK SPACE. THIS REQUEST IS MADE ONLY TO DELETE THE ORIGINAL
  13270. * PFC LEFT OVER FROM AN *APPEND*, AFTER A CPU TRANSFER HAS BEEN
  13271. * PERFORMED ON THAT MACHINE.
  13272.  
  13273.  
  13274. DPF BSS 0 ENTRY
  13275. EXECUTE 3PD LOAD CATALOG UPDATE ROUTINES
  13276. RJM IIA INTERLOCK INDIRECT ALLOCATION
  13277. LDK STNS SET *NO JOB SUSPENSION* AFTER THIS POINT
  13278. RAM STAT
  13279. RJM DCE DELETE CATALOG ENTRY
  13280. ZJN DPF1 IF FILE WITHIN CHAIN AND NO DELINK
  13281. RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  13282. UJN DPF2 TERMINATE PROGRAM
  13283.  
  13284. DPF1 RJM CIA CLEAR INDIRECT ALLOCATION INTERLOCK
  13285. LDD CB REWRITE CATALOG BUFFER
  13286. RJM WBI
  13287. ENDMS
  13288. DPF2 EXECUTE 3PU TERMINATE PROGRAM
  13289. PER SPACE 4,10
  13290. *** PROCESS *PERMIT* REQUEST.
  13291. *
  13292. * CREATE PERMISSION *M* FOR USER *OUAN* TO ACCESS FILE
  13293. * *PF NAME*.
  13294.  
  13295.  
  13296. PER BSS 0 ENTRY
  13297.  
  13298. * *PERMIT* IS NOT ALLOWED ON A FILE WITH AN ACCESS LEVEL
  13299. * LOWER THAN THAT OF THE JOB UNLESS THE CALLER IS VALIDATED
  13300. * FOR WRITE-DOWN PRIVILEGES OR IS A SUBSYSTEM.
  13301.  
  13302. LDM SSOM
  13303. ZJN PER0 IF UNSECURED SYSTEM
  13304. LDM FCAL,CI
  13305. LPN 7
  13306. SBM PFAL
  13307. PJN PER0 IF FILE NOT LOWER THAN JOB
  13308. LDM SVAL
  13309. LPN 40
  13310. NJN PER0 IF USER VALIDATED FOR WRITE-DOWN
  13311. LDM SSID
  13312. SBK LSSI+1
  13313. PJN PER0 IF SUBSYSTEM
  13314. ERROR WDP,,,,SVE * WRITE-DOWN OF DATA PROHIBITED.*
  13315.  
  13316. PER0 LDD RI
  13317. ADD RI+1
  13318. ZJN PER1 IF NO PERMIT RANDOM INDEX
  13319. LDD PP
  13320. ZJN PER1 IF PERMIT NOT FOUND
  13321. RJM UEP UPDATE EXISTING PERMIT
  13322. UJN PER2 UPDATE CATALOG ENTRY
  13323.  
  13324. * CREATE PERMIT ENTRY.
  13325.  
  13326. PER1 LDM EXPC GET EXPLICIT PERMIT COUNT
  13327. SBK PMLM
  13328. PJP PER3 IF PERMIT LIMIT EXCEEDED
  13329. LDN 0 SET EXPLICIT PERMIT OPTION
  13330. STM SAPF
  13331. STM IACP
  13332. EXECUTE 3PE LOAD PERMIT UPDATE ROUTINES
  13333. RJM CPE CREATE PERMIT ENTRY
  13334.  
  13335. * UPDATE CATALOG ENTRY.
  13336.  
  13337. PER2 LDN PDTL UPDATE CONTROL MODIFICATION DATE
  13338. CRD CM
  13339. LDD CM+2
  13340. STM FCKD,CI
  13341. LDD CM+3
  13342. STM FCKD+1,CI
  13343. LDD CM+4
  13344. STM FCKD+2,CI
  13345. LDD CB REWRITE CATALOG BUFFER
  13346. RJM WBI
  13347. ENDMS
  13348. EXECUTE 3PU TERMINATE PROGRAM
  13349.  
  13350. * PROCESS PERMIT LIMIT.
  13351.  
  13352. PER3 ERROR PLE * PERMIT LIMIT EXCEEDED.*
  13353. TITLE SUBROUTINES.
  13354. UEP SPACE 4,10
  13355. ** UEP - UPDATE EXISTING PERMIT ENTRY.
  13356. *
  13357. * ENTRY (PP) = ADDRESS OF PERMIT ENTRY TO UPDATE.
  13358. * (MODE) = MODE TO BE PERMITTED.
  13359. * (PXDT - PXDT+1) = PERMIT EXPIRATION DATE.
  13360. *
  13361. * EXIT PERMIT ENTRY UPDATED.
  13362. *
  13363. * USES CM - CM+4, T0.
  13364. *
  13365. * CALLS WBI.
  13366.  
  13367.  
  13368. UEP SUBR ENTRY/EXIT
  13369. LDD PP SET PERMIT ENTRY ADDRESS
  13370. ADN FPAC
  13371. STM UEPA
  13372. LDN PDTL SET TIME/DATE IN ENTRY
  13373. CRD CM
  13374. LDM MODE SET PERMIT MODE
  13375. LPN 17
  13376. ADN 40 SET *EXPIRATION DATE PRESENT* BIT
  13377. STD T0
  13378. LDM FPAC+1,PP UPDATE MODE/ACCESS COUNT
  13379. SCN 77
  13380. ADD T0
  13381. STD CM+1
  13382. LDM FPAC,PP
  13383. STD CM
  13384. LDD MA SET UPDATED WORD IN ENTRY
  13385. CWD CM
  13386. CRM *,ON
  13387. UEPA EQU *-1
  13388. LDM PXDT+1 SET PERMIT EXPIRATION DATE
  13389. STM FPXD+1,PP
  13390. LDM FPXD,PP
  13391. SCN 77
  13392. LMM PXDT
  13393. STM FPXD,PP
  13394. LDD PB REWRITE PERMIT SECTOR
  13395. RJM WBI
  13396. LJM UEPX EXIT
  13397. SPACE 4,10
  13398. * CHECK FOR OVERFLOW.
  13399.  
  13400.  
  13401. OVERFLOW OVLC,BUF2-2 OVERFLOW INTO HOLE BUFFER
  13402. OVERLAY (CHANGE/SETPFAC/SETPFAL PROCESSING.)
  13403. SPACE 4,10
  13404. ** THIS OVERLAY PROCESSES THE PERMANENT FILE COMMANDS
  13405. * *CHANGE*, *SETPFAC* AND *SETPFAL*. THESE COMMANDS
  13406. * CHANGE FIELDS IN THE CATALOG ENTRY FOR A FILE.
  13407. * *SETPFAC* AND *SETPFAL* WILL NOT BE PERFORMED IF THE
  13408. * FILE IS CURRENTLY ATTACHED.
  13409.  
  13410.  
  13411. OVL BSS 0 ENTRY
  13412. * LJM CHG PROCESS REQUEST
  13413. TITLE COMMAND PROCESSING.
  13414. *** PROCESS CHANGE REQUEST.
  13415. *
  13416. * CHANGE CATALOG ENTRY FOR PERMANENT FILE.
  13417. *
  13418. * THE PASSWORD SPECIFIED IN THE *FET* WILL BE USED UNLESS
  13419. * IT HAS THE VALUE 7777 7777 7777 77B. THE *MODE*, *CT*,
  13420. * AND *SS* FIELDS SPECIFIED IN THE *FET* WILL ONLY BE
  13421. * USED IF THEY HAVE THE 40B-BIT SET.
  13422. *
  13423. * *CHANGE* AND *SETPFAC* ARE NOT ALLOWED IF THE ACCESS LEVEL
  13424. * OF THE FILE IS LOWER THAN THAT OF THE JOB UNLESS THE CALLER
  13425. * IS VALIDATED FOR WRITE-DOWN PRIVILEGES OR IS A SUBSYETM.
  13426.  
  13427.  
  13428. CHG BSS 0 ENTRY
  13429. LDM STAT CHECK FOR PRIVATE DEVICE
  13430. LPK STPD
  13431. ZJN CHG1 IF NOT PRIVATE DEVICE
  13432. LDN PSNI SET BYPASS OF USER INDEX CHECK
  13433. STM SCTB
  13434. CHG1 RJM SFL SET PERMANENT FILE NAMES
  13435. RJM SCT SEARCH CATALOG
  13436. ZJN CHG2 IF FILE NOT FOUND
  13437. RJM CCE CHANGE CATALOG ENTRY
  13438. LDN PDTL UPDATE CONTROL MODIFICATION DATE
  13439. CRD CM
  13440. LDD CM+2
  13441. STM FCKD,CI
  13442. LDD CM+3
  13443. STM FCKD+1,CI
  13444. LDD CM+4
  13445. STM FCKD+2,CI
  13446. LDD CB REWRITE CATALOG ENTRY
  13447. RJM WBI
  13448. ENDMS
  13449. EXECUTE 3PU TERMINATE PROGRAM
  13450.  
  13451. CHG2 ERROR FNF (*FILENAME) NOT FOUND.*
  13452. TITLE SUBROUTINES.
  13453. CAL SPACE 4,10
  13454. ** CAL - CHECK ACCESS LEVEL.
  13455. *
  13456. * ENTRY (CI) = INDEX TO ENTRY.
  13457. * (EQ) = FAMILY EST ORDINAL.
  13458. * (CALA) = ALTERNATE DEVICE EST ORDINAL.
  13459. * (LFAL) = NEW ACCESS LEVEL.
  13460. * (SVAL) = USER-S JOB SECURITY VALIDATIONS.
  13461. *
  13462. * USES CM - CM+4.
  13463. *
  13464. * MACROS ERROR, MONITOR.
  13465.  
  13466.  
  13467. CAL3 LDM FCAL,CI CHECK FOR DOWNGRADE
  13468. LPN 7
  13469. STD CM
  13470. LDM LFAL
  13471. SBD CM
  13472. PJN CALX IF NOT DOWNGRADE
  13473. LDM SVAL CHECK FOR PF DOWNGRADE VALIDATON
  13474. SHN 21-6
  13475. MJN CALX IF USER HAS DOWNGRADE VALIDATION
  13476. LDM SSID CHECK SUBSYSTEM ID
  13477. SBK LSSI+1
  13478. PJN CALX IF SUBSYSTEM
  13479. ERROR NVD,,,,SVE * NOT VALID TO DOWNGRADE DATA.*
  13480.  
  13481. CAL SUBR ENTRY/EXIT
  13482. LDM SSOM
  13483. ZJN CALX IF UNSECURED SYSTEM
  13484. LDD EQ CHECK IF *LFAL* VALID FOR MASTER DEVICE
  13485. STD CM+2
  13486. LDN VAES
  13487. STD CM+1
  13488. LDM LFAL
  13489. STD CM+4
  13490. MONITOR VSAM
  13491. LDD CM+1
  13492. NJN CAL2 IF FILE ACCESS NOT VALID FOR DEVICE
  13493. LDM FCBS,CI
  13494. SHN 21-13
  13495. CAL1 PJP CAL3 IF NOT DIRECT ACCESS FILE
  13496. LDC **
  13497. CALA EQU *-1
  13498. ZJN CAL1 IF FILE ON MASTER DEVICE
  13499. STD CM+2 CHECK IF ACCESS IS VALID FOR FILE DEVICE
  13500. LDN VAES
  13501. STD CM+1
  13502. LDM LFAL
  13503. STD CM+4
  13504. MONITOR VSAM
  13505. LDD CM+1
  13506. ZJN CAL1 IF FILE ACCESS VALID FOR DEVICE
  13507. CAL2 ERROR LNP,,,,SVE * ACCESS LEVEL NOT VALID ON PF DEVICE.*
  13508. CCE SPACE 4,20
  13509. ** CCE - CHANGE CATALOG ENTRY.
  13510. *
  13511. * ENTRY (CI) = INDEX TO ENTRY.
  13512. * (PI) = FILE CATEGORY.
  13513. * (PI+1) = FILE MODE.
  13514. * (FS - FS+3) = NEW FILE NAME.
  13515. * (PFPW) = PASSWORD.
  13516. * (PFCW) = USER CONTROL WORD.
  13517. * (PXDT - PXDT+1) = PASSWORD EXPIRATION DATE.
  13518. * (STAT) BIT 0=1 IF PASSWORD EXPIRATION DATE SPECIFIED.
  13519. * (PFAL) = FILE ACCESS LEVEL (*SETPFAL*).
  13520. * (PFFC - PFFC+2) = FILE CATEGORY SET (*SETPFAC*).
  13521. *
  13522. * EXIT CATALOG ENTRY CHANGED.
  13523. *
  13524. * USES CM - CM+4.
  13525. *
  13526. * CALLS CAL, CFB.
  13527. *
  13528. * MACROS ERROR, NFA.
  13529.  
  13530.  
  13531. CCE14 RJM CFB CHECK FOR FILE BUSY
  13532. RJM CAL CHECK ACCESS LEVEL
  13533. LDM LFAL *SETPFAL* CHANGE ACCESS LEVEL
  13534. STM FCAL,CI
  13535. UJN CCEX RETURN
  13536.  
  13537. CCE15 RJM CFB CHECK FOR FILE BUSY
  13538. LDM PFFC *SETPFAC* CHANGE ACCESS CATEGORY SET
  13539. STM FCFC,CI
  13540. LDM PFFC+1
  13541. STM FCFC+1,CI
  13542. LDM PFFC+2
  13543. STM FCFC+2,CI
  13544.  
  13545. CCE SUBR ENTRY/EXIT
  13546. LDD CC
  13547. LMN CCAL
  13548. ZJN CCE14 IF *SETPFAL* REQUEST
  13549. LDM SSOM
  13550. ZJN CCE0 IF UNSECURED SYSTEM
  13551. LDM FCAL,CI
  13552. LPN 7
  13553. SBM PFAL
  13554. PJN CCE0 IF FILE NOT LOWER THAN JOB
  13555. LDM SVAL
  13556. LPN 40
  13557. NJN CCE0 IF USER VALIDATED FOR WRITE-DOWN
  13558. LDM SSID
  13559. SBK LSSI+1
  13560. PJN CCE0 IF SUBSYSTEM
  13561. ERROR WDP,,,,SVE * WRITE-DOWN OF DATA PROHIBITED.*
  13562.  
  13563. CCE0 LDD CC
  13564. LMN CCAC
  13565. ZJP CCE15 IF *SETPFAC* REQUEST
  13566.  
  13567. * SET NEW FILE NAME.
  13568.  
  13569. LDD FS
  13570. ZJN CCE1 IF NO NEW NAME
  13571. STM FCFN,CI ENTER NEW FILE NAME
  13572. LDD FS+1
  13573. STM FCFN+1,CI
  13574. LDD FS+2
  13575. STM FCFN+2,CI
  13576. LDD FS+3
  13577. SCN 77
  13578. LMD UI
  13579. STM FCFN+3,CI
  13580.  
  13581. * SET NEW CHARGE AND PROJECT NUMBERS INTO PFC.
  13582.  
  13583. CCE1 LDM PFSR GET SPECIAL REQUEST FUNCTION
  13584. LPN 77
  13585. LMN SRCP
  13586. NJN CCE2 IF *CP* PARAMETER NOT SPECIFIED
  13587. LDD CI
  13588. RAM CCEC
  13589. NFA CHGN SET EXECUTING CHARGE/PROJECT FROM NFL
  13590. CRM FCCN,TR
  13591. CCEC EQU *-1
  13592. ERRNZ FCP1-FCCN-5 *FCP1* MUST FOLLOW *FCCN*
  13593. ERRNZ FCP2-FCCN-12 *FCP2* MUST FOLLOW *FCCN*/*FCP1*
  13594. ERRNZ PJ1N-CHGN+1 *PJ1N* MUST BE IMMEDIATELY AFTER *CHGN*
  13595. ERRNZ PJ2N-PJ1N+1 *PJ2N* MUST BE IMMEDIATELY AFTER *PJ1N*
  13596.  
  13597. * SET USER CONTROL WORD.
  13598.  
  13599. CCE2 LDM PUCW
  13600. SHN 6
  13601. PJN CCE3 IF NOT SPECIFIED
  13602. LDD CI
  13603. ADC FCCW
  13604. STM CCEA SET ADDRESS TO WRITE CONTROL WORD
  13605. LDD MA
  13606. CWM PUCW,ON
  13607. SBN 1
  13608. CRM *,ON
  13609. CCEA EQU *-1
  13610.  
  13611. * SET PASSWORD.
  13612.  
  13613. CCE3 LDN CFPW
  13614. SBM FETL
  13615. PJP CCE6 IF FET NOT LONG ENOUGH FOR PASSWORD
  13616. LDM PFPW
  13617. LMC 7777
  13618. ZJN CCE4 IF PASSWORD NOT SPECIFIED
  13619. LDD CI
  13620. ADN FCPW
  13621. STM CCEB SET ADDRESS TO WRITE PASSWORD
  13622. LDD MA
  13623. CWM PFPW,ON
  13624. SBN 1
  13625. CRM *,ON
  13626. CCEB EQU *-1
  13627. UJN CCE5 SET PASSWORD EXPIRATION DATE
  13628.  
  13629. * SET PASSWORD EXPIRATION DATE.
  13630.  
  13631. CCE4 LDM STAT CHECK EXPIRATION DATE STATUS
  13632. LPN STXD
  13633. ZJN CCE6 IF EXPIRATION DATE NOT SPECIFIED
  13634. LDM FCPW,CI
  13635. NJN CCE5 IF PASSWORD EXISTS
  13636. ERROR PAE * PFM ARGUMENT ERROR.*
  13637.  
  13638. CCE5 LDM FCXD,CI SET EXPIRATION DATE
  13639. SCN 77
  13640. LMM PXDT
  13641. STM FCXD,CI
  13642. LDM PXDT+1
  13643. STM FCXD+1,CI
  13644.  
  13645. * SET CATEGORY.
  13646.  
  13647. CCE6 LDD PI
  13648. SHN 21-13
  13649. PJN CCE7 IF NOT SPECIFIED
  13650. LDM FCCT,CI
  13651. LPN 37
  13652. ADD PI
  13653. LPC 3777
  13654. STM FCCT,CI
  13655.  
  13656. * SET FILE MODE.
  13657.  
  13658. CCE7 LDD PI+1
  13659. SHN 21-5
  13660. PJN CCE8 IF NOT SPECIFIED
  13661. LDM FCAM,CI
  13662. SCN 37
  13663. ADD PI+1
  13664. SCN 40
  13665. STM FCAM,CI
  13666.  
  13667. * SET FILE SUBSYSTEM.
  13668.  
  13669. CCE8 LDM PFSS
  13670. SHN 21-5
  13671. PJN CCE9 IF SUBSYSTEM NOT SPECIFIED
  13672. SHN -21+5+22
  13673. LMM FCFS,CI SAVE SUBSYSTEM IN CATALOG ENTRY
  13674. SCN 77
  13675. LMM PFSS
  13676. LMN 40
  13677. STM FCFS,CI
  13678.  
  13679. * CLEAR ERROR STATUS.
  13680.  
  13681. CCE9 LDM PFSR
  13682. LPN 77
  13683. LMN SRCE
  13684. NJN CCE10 IF NOT CLEAR ERROR STATUS REQUEST
  13685. LDM FCEC,CI CLEAR ERROR STATUS
  13686. LPC 7077
  13687. STM FCEC,CI
  13688. LDM JORG
  13689. LMK SYOT
  13690. NJN CCE10 IF NOT SYSTEM ORIGIN
  13691. LDM FCAF,CI CLEAR MSS RELATED ERROR FLAGS
  13692. SCN AFPSEM+AFPDEM+AFTMPM
  13693. STM FCAF,CI
  13694.  
  13695. * SET BACKUP REQUIREMENT.
  13696.  
  13697. CCE10 LDM PFBR CHECK FOR BR PARAMETER CHANGE REQUEST
  13698. LPC 700
  13699. ZJN CCE11 IF *BR* NOT SPECIFIED
  13700. STD CM
  13701. LDM FCBR,CI
  13702. LPC 7077
  13703. LMD CM
  13704. STM FCBR,CI
  13705.  
  13706. * SET PREFERRED RESIDENCE.
  13707.  
  13708. CCE11 LDM PFRS CHECK FOR PR PARAMETER CHANGE REQUEST
  13709. LPC 7000
  13710. ZJN CCE12 IF *PR* NOT SPECIFIED
  13711. STD CM
  13712. LDM FCRS,CI
  13713. LPC 0777
  13714. LMD CM
  13715. STM FCRS,CI
  13716.  
  13717. * SET ALTERNATE CATLIST PERMISSION.
  13718.  
  13719. CCE12 LDM PFAP
  13720. LPC 6000
  13721. ZJN CCE13 IF *AC* NOT SPECIFIED
  13722. STM FCAP,CI
  13723. CCE13 LJM CCEX RETURN
  13724. CFB SPACE 4,10
  13725. ** CFB - CHECK FOR FILE BUSY.
  13726. *
  13727. * ENTRY (CI) = INDEX TO ENTRY.
  13728. * (EQ) = FAMILY EST ORDINAL.
  13729. *
  13730. * USES CM, T5, T6.
  13731. *
  13732. * CALLS CTI, ITC, PDA, PDV, RMD, RSS, SDN.
  13733. *
  13734. * MACROS ENDMS, ERROR, SETMS.
  13735.  
  13736.  
  13737. CFB SUBR ENTRY/EXIT
  13738. LDM FCBS,CI
  13739. SHN 21-13
  13740. PJN CFBX IF NOT DIRECT ACCESS FILE
  13741. ENDMS
  13742. LDD EQ SET DIRECT ACCESS DEVICE EST ORDINAL
  13743. STM PFEQ
  13744. LDM FCDN,CI DETERMINE EST ORDINAL OF DEVICE
  13745. LPN 77
  13746. ZJN CFB4 IF FILE ON MASTER DEVICE
  13747. STD CM
  13748. LDD EQ
  13749. RJM SDN SEARCH FOR DEVICE NUMBER
  13750. PJN CFB3 IF DEVICE FOUND
  13751. ADN 1
  13752. RJM PDA PROCESS DEVICE AVAILABILITY
  13753. CFB1 ERROR DAD,CH * DIRECT ACCESS DEVICE ERROR.*
  13754.  
  13755. CFB2 ERROR TNR,CH,,T5 *EQXXX,DNYY, TRACK NOT RESERVED.*
  13756.  
  13757. CFB3 LDD T5 SAVE ALTERNATE DEVICE EST ORDINAL
  13758. STM CALA
  13759. STM PFEQ
  13760. CFB4 LDM FCBT,CI
  13761. ZJP CFB8 IF FILE NOT DISK RESIDENT
  13762. STM PFFT FIRST TRACK
  13763. RJM ITC INTERLOCK TRACK CHAIN FOR FILE
  13764. NJN CFB2 IF TRACK NOT RESERVED
  13765. AOM DAIF SET INTERLOCK FLAG
  13766. SETMS IO
  13767. RJM PDV PROCESS DEVICE STATUS
  13768. LDN 0 DONT VERIFY FILE NAME IN SYSTEM SECTOR
  13769. RJM RSS READ SYSTEM SECTOR
  13770. ZJN CFB6 IF LEGAL SYSTEM SECTOR
  13771. MJN CFB5 IF READ ERROR
  13772. ERROR DAF,,,T5 *EQXXX,DNYY, DIRECT ACCESS FILE ERROR.*
  13773.  
  13774. CFB5 RJM PES PROCESS ERROR STATUS
  13775. ERROR MSE,CH,,T5 *EQXXX,DNYY, MASS STORAGE ERROR.*
  13776.  
  13777. CFB6 ENDMS
  13778. LDM CASS CHECK IF FILE BUSY
  13779. ADM FISS
  13780. ADM UCSS+1
  13781. ADM UCSS+2
  13782. ADM UCSS+3
  13783. ADM UCSS+4
  13784. ZJN CFB7 IF FILE NOT BUSY
  13785. ERROR FBS,CH * FILE BUSY*
  13786.  
  13787. CFB7 LDD T6
  13788. RJM CTI RELEASE FILE INTERLOCK
  13789. LDN 0 CLEAR INTERLOCK FLAG
  13790. STM DAIF
  13791. CFB8 RJM RMD RESET TO MASTER DEVICE
  13792. LJM CFBX RETURN
  13793. CFN SPACE 4,10
  13794. ** CFN - CHECK FILE NAMES.
  13795. *
  13796. * ENTRY (FN - FN+3) = OLD FILE NAME.
  13797. * (FS - FS+3) = NEW FILE NAME.
  13798. * (P1) = 1 IF OLD ALREADY FOUND.
  13799. * (T3) = INDEX TO CATALOG ENTRY.
  13800. *
  13801. * EXIT (A) = 0 IF OLD NOT FOUND.
  13802.  
  13803.  
  13804. CFN SUBR ENTRY/EXIT
  13805.  
  13806. * CHECK OLD FILE NAME.
  13807.  
  13808. CFNA LDN 0
  13809. * LDN 1 (OLD FILE NAME ALREADY FOUND)
  13810. NJN CFN1 IF OLD FILE NAME ALREADY FOUND
  13811. LDI T3
  13812. LMD FN
  13813. NJN CFN1 IF NOT EQUAL
  13814. LDM FCFN+1,T3
  13815. LMD FN+1
  13816. NJN CFN1 IF NOT EQUAL
  13817. LDM FCFN+2,T3
  13818. LMD FN+2
  13819. NJN CFN1 IF NOT EQUAL
  13820. LDM FCFN+3,T3
  13821. LMD FN+3
  13822. SHN -6
  13823. CFN1 NJP CFN3 IF NOT OLD FILE
  13824. LDN ZERL CHECK IF JOB CAN ACCESS FILE
  13825. CRD CM
  13826. LDM FCAL,T3 SET ACCESS LEVEL
  13827. LPN 7
  13828. STD CM+1
  13829. LDM FCFC,T3 SET ACCESS CATEGORY
  13830. LPC 377
  13831. STD CM+2
  13832. LDM FCFC+1,T3
  13833. STD CM+3
  13834. LDM FCFC+2,T3
  13835. STD CM+4
  13836. LDD MA
  13837. CWD CM
  13838. LDN ZERL
  13839. CRD CM
  13840. LDN VAJS CHECK ACCESS LEVEL AND CATEGORY SET
  13841. STD CM+1
  13842. ERRNZ VAJS-3 CODE DEPENDS ON VALUE
  13843. STD CM+4
  13844. MONITOR VSAM
  13845. LDD CM+1
  13846. NJN CFN2 IF NOT VALID ACCESS
  13847. AOM CFNA SET TO BYPASS COMPARE OF OLD FILENAME
  13848. LJM CFNX RETURN
  13849.  
  13850. CFN2 ERROR JCA,,,,SVE * JOB CANNOT ACCESS FILE.*
  13851.  
  13852. * CHECK NEW FILE NAME.
  13853.  
  13854. CFN3 LDN 0
  13855. * LDN 1 (NO NEW FILE NAME)
  13856. CFNC EQU *-1
  13857. NJN CFN4 IF NO NEW FILENAME SPECIFIED
  13858. LDI T3
  13859. LMD FS
  13860. NJN CFN4 IF NOT EQUAL
  13861. LDM FCFN+1,T3
  13862. LMD FS+1
  13863. NJN CFN4 IF NOT EQUAL
  13864. LDM FCFN+2,T3
  13865. LMD FS+2
  13866. NJN CFN4 IF NOT EQUAL
  13867. LDM FCFN+3,T3
  13868. LMD FS+3
  13869. SHN -6
  13870. NJN CFN4 IF NOT EQUAL
  13871. LDD MA
  13872. CWD FS
  13873. CRD FN
  13874. ERROR FAP *(FILENAME) ALREADY PERMANENT.*
  13875.  
  13876. CFN4 LDN 0
  13877. LJM CFNX EXIT
  13878. ICT SPACE 4,15
  13879. ** ICT - INTERLOCK CATALOG TRACK.
  13880. *
  13881. * ENTRY (T6) = CATALOG TRACK TO BE INTERLOCKED.
  13882. * (T5) = EST ORDINAL.
  13883. *
  13884. * EXIT TRACK INTERLOCKED.
  13885. * RECALL *PFM* IF INTERLOCK NOT AVAILABLE
  13886. * AFTER FOUR TRIES.
  13887. * TO *HNG* IF CATALOG TRACK NOT RESERVED.
  13888. *
  13889. * CALLS DPR, STI.
  13890.  
  13891.  
  13892. ICT SUBR ENTRY/EXIT
  13893. LDN 3 SET RETRY COUNT
  13894. STD T1
  13895. ICT1 RJM STI TRY TO INTERLOCK TRACK
  13896. ZJN ICTX IF INTERLOCK SUCCESSFUL
  13897. LMN 2
  13898. ZJN ICT2 IF TRACK NOT RESERVED
  13899. SOD T1
  13900. MJN ICT3 IF RETRY COUNT EXHAUSTED
  13901. RJM DPR DELAY PRIOR TO RETRY
  13902. UJN ICT1 RETRY
  13903.  
  13904. ICT2 RJM HNG HANG IF CATALOG TRACK NOT RESERVED
  13905.  
  13906. ICT3 EXIT INA,CH,,,EC4 * INTERLOCK NOT AVAILABLE.*
  13907. ISP SPACE 4,20
  13908. ** ISP - INITIALIZE SEARCH OF PERMANENT FILES.
  13909. *
  13910. * ENTRY (SDAA) = MASTER DEVICE EST ORDINAL.
  13911. * (CCIA) = CATALOG TRACK.
  13912. *
  13913. * EXIT (T4) = MASTER DEVICE CHANNEL.
  13914. * (T5) = MASTER DEVICE EST ORDINAL.
  13915. * (T6) = CATALOG TRACK.
  13916. * (T7) = CATALOG SECTOR.
  13917. * (DPPF) = INCREMENTED FOR CATALOG SEARCH.
  13918. * (MSRA) = ERROR PROCESSOR ADDRESS FOR *RNS*.
  13919. * (P0 - P4) = INITIALIZED CATALOG SEARCH POINTERS.
  13920. * CATALOG TRACK INTERLOCK SET.
  13921. * *SETMS READ* PERFORMED.
  13922. *
  13923. * CALLS ICT, IRA, PDV.
  13924. *
  13925. * MACROS ERROR, SETMS.
  13926.  
  13927.  
  13928. ISP SUBR ENTRY/EXIT
  13929. LDM SDAA SET MASTER DEVICE EST ORDINAL
  13930. STD T5
  13931. LDM CCIA SET CATALOG TRACK
  13932. STD T6
  13933. RJM ICT INTERLOCK CATALOG TRACK
  13934. AOM CCIB SET CATALOG TRACK INTERLOCK FLAG
  13935. ISP1 LDN IPCS PF INCREMENT FOR CATALOG SEARCH
  13936. RAM AIPF+1
  13937. RJM IRA INITIALIZE RANDOM PROCESSORS
  13938. LDK PCC SET ERROR PROCESSOR ADDRESS FOR *RNS*
  13939. STM MSRA
  13940.  
  13941. * SET SEARCH POINTERS.
  13942.  
  13943. LDN 0 SET STARTING CATALOG TRACK SECTOR
  13944. STD T7
  13945. LDN ZERL CONTIGUOUS STORAGE INITIALIZATION
  13946. CRD P0 TEMPORARY CATALOG SEARCH BUFFER POINTERS
  13947. LDC BUF1 SET PRIMARY BUFFER POINTER
  13948. STD P2
  13949. LDC BUF2 SET SECONDARY BUFFER POINTER
  13950. STD P3
  13951. SETMS READSTR
  13952. RJM PDV PROCESS DEVICE STATUS
  13953. UJP ISPX RETURN
  13954. PCC SPACE 4,10
  13955. ** PCC - PROCESS CATALOG READ ERROR FOR *CHANGE*.
  13956. *
  13957. * ENTRY READ ERROR DETECTED BY *COMPRNS*.
  13958.  
  13959.  
  13960. PCC SUBR ENTRY
  13961. RJM PES PROCESS ERROR STATUS
  13962. ERROR MSE,,,EQ *EQXXX,DNYY, MASS STORAGE ERROR.*
  13963. SCT SPACE 4,10
  13964. ** SCT - SEARCH CATALOG.
  13965. *
  13966. * ENTRY (FN - FN+3) = PF NAME.
  13967. * (FS - FS+3) = NEW FILE NAME.
  13968. * (UI - UI+1) = USER INDEX.
  13969. *
  13970. * EXIT (CB) = CATALOG BUFFER.
  13971. * (CI) = CATALOG POINTER.
  13972. * (A) = 0 IF FILE NOT FOUND.
  13973. *
  13974. * USES CB, CI, P0, P1, T3.
  13975. *
  13976. * CALLS RNS, CFN.
  13977.  
  13978.  
  13979. SCT6 LDD P1
  13980.  
  13981. SCT SUBR ENTRY/EXIT
  13982. LDN IPCS PF INCREMENT FOR CATALOG SEARCH
  13983. RAM AIPF+1
  13984. UJN SCT2 READ FIRST SECTOR FOR SEARCH
  13985.  
  13986. * END OF SECTOR.
  13987.  
  13988. SCT1 LDC * SECTOR WORD COUNT
  13989. SCTA EQU *-1
  13990. LPN 77
  13991. NJN SCT6 IF EOR
  13992.  
  13993. * READ NEXT SECTOR FOR SEARCH.
  13994.  
  13995. SCT2 LDM P2,P1 SET BUFFER ADDRESS
  13996. STD T3
  13997. LDD T6 SAVE POSITION OF SECTOR
  13998. STM -2,T3
  13999. STM ERRC
  14000. LDD T7
  14001. STM -1,T3
  14002. STM ERRD
  14003. LDD T3
  14004. RJM RNS READ SECTOR
  14005. ZJN SCT6 IF EOI
  14006. STD P0 SAVE WORD COUNT
  14007. STM SCTA
  14008. LPN NWCE-1
  14009. ZJN SCT3 IF INTEGRAL NUMBER OF CATALOG ENTRIES
  14010. ERROR BCS,,,T5,,EI *EQXXX,DNYY, BAD CATALOG/PERMIT SECTOR.*
  14011.  
  14012. SCT3 LDN 2
  14013. RAD T3 SKIP CONTROL BYTES
  14014. UJN SCT5 CHECK CATALOG ENTRY
  14015.  
  14016. * ADVANCE TO NEXT ENTRY.
  14017.  
  14018. SCT4 LDC NWCE*5 ADVANCE POINTER
  14019. RAD T3
  14020. LCN NWCE DECREMENT WORD COUNT
  14021. RAD P0
  14022. NJN SCT5 IF NOT END OF BUFFER
  14023. LJM SCT1 PROCESS END OF BUFFER
  14024.  
  14025. * CHECK CATALOG ENTRY.
  14026.  
  14027. SCT5 LDM FCUI,T3
  14028. LPN 37
  14029. SHN 14
  14030. LMM FCUI+1,T3
  14031. ZJN SCT4 IF HOLE
  14032. LMD UI+1
  14033. SHN 6
  14034. LMD UI
  14035. NJN SCT4 IF NOT CORRECT USER INDEX
  14036. SCTB EQU *-1 PRESET TO *PSN* IF PRIVATE DEVICE
  14037. RJM CFN CHECK FILE NAME
  14038. ZJN SCT4 IF OLD NOT FOUND
  14039.  
  14040. * OLD FILE FOUND.
  14041.  
  14042. AOD P1 SET NEW BUFFER
  14043. LDD T3 SET CATALOG ENTRY POINTERS
  14044. STD CI
  14045. LDD P2
  14046. STD CB
  14047. SCTC LDN 0
  14048. * LDN 1 (NO NEW FILE NAME)
  14049. ZJN SCT4 IF NEW FILENAME SPECIFIED, CONTINUE SEARCH
  14050. LJM SCTX RETURN
  14051. SFL SPACE 4,15
  14052. ** SFL - SET FILE NAMES.
  14053. *
  14054. * EXIT (FN - FN+3) = PERMANENT FILE NAME.
  14055. * (FS - FS+3) = NEW FILE NAME.
  14056. * (PI) = CATEGORY.
  14057. * (PI+1) = MODE.
  14058. *
  14059. * USES FN - FN+4, FS - FS+4, PI - PI+1.
  14060. *
  14061. * CALLS ISP.
  14062.  
  14063.  
  14064. SFL SUBR ENTRY/EXIT
  14065. LDD MA SET NEW FILE NAME
  14066. CWM PFNF,ON
  14067. SBN 1
  14068. CRD FS SET NEW FILE NAME
  14069. LDD FS
  14070. NJN SFL1 IF NEW FILE NAME
  14071. AOM CFNC SET TO BYPASS CHECK FOR NEW NAME
  14072. AOM SCTC SET TO BYPASS SEARCH FOR NEW NAME
  14073. SFL1 LDM MODE
  14074. SCN 77
  14075. STD PI SET CATEGORY
  14076. LDM MODE
  14077. LPN 77
  14078. STD PI+1 SET MODE
  14079. RJM ISP INITIALIZE FOR SEARCH OF CATALOG
  14080. UJN SFLX RETURN
  14081. SPACE 4,10
  14082. * COMMON DECKS.
  14083.  
  14084.  
  14085. *CALL COMPSDN
  14086. *CALL COMPRSS
  14087. SPACE 4,10
  14088. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  14089.  
  14090.  
  14091. QUAL *
  14092.  
  14093. PCC EQU /".O"/PCC
  14094. SPACE 4,10
  14095. * CHECK FOR OVERFLOW.
  14096.  
  14097.  
  14098. ERRNG BUF1-2-* OVERFLOW INTO CATALOG SEARCH BUFFER
  14099.  
  14100.  
  14101. OVERFLOW OVLC,EPFW OVERFLOW INTO ERROR PROCESSING AREA
  14102. OVERLAY (SETASA/SETAF PROCESSING.)
  14103. SPACE 4,10
  14104. ** THIS OVERLAY PROCESSES THE COMMANDS *SETASA* AND *SETAF*.
  14105.  
  14106.  
  14107. OVL BSS 0 ENTRY
  14108. RJM RMD RESET TO MASTER DEVICE
  14109. LJM 0,P0 PROCESS COMMAND
  14110. TITLE COMMAND PROCESSING.
  14111. SAA SPACE 4,10
  14112. *** PROCESS *SETASA* REQUEST.
  14113. *
  14114. * SET ALTERNATE STORAGE ADDRESS IN CATALOG ENTRY.
  14115.  
  14116.  
  14117. SAA BSS 0 ENTRY
  14118. LDM STAT
  14119. LPK STTA
  14120. NJP SAA3 IF TAPE ALTERNATE STORAGE REQUEST
  14121.  
  14122. * SET CARTRIDGE ALTERNATE STORAGE ADDRESS.
  14123.  
  14124. LDM PFAT GET ALTERNATE STORAGE TYPE
  14125. LPN 77
  14126. LMN ATOD
  14127. ZJN SAA0 IF OPTICAL DISK STORAGE
  14128. LDM FCBS,CI
  14129. SHN 21-13
  14130. MJN SAA1 IF DIRECT ACCESS FILE
  14131. SAA0 LDM FCAF,CI
  14132. LPC AFLOKM
  14133. NJN SAA2 IF *AFLOK* STILL SET
  14134. ERROR AIO * NO ALTERNATE STORAGE COPY OF FILE.*
  14135.  
  14136. SAA1 RJM CDA COMPARE DISK ADDRESS FOR DIRECT ACCESS
  14137. SAA2 NFA FA,R SET FST COMPLETE
  14138. ADN FSTL
  14139. CWD FS
  14140. LDN 0 CLEAR ALTERNATE STORAGE FLAGS
  14141. STM FCAF,CI
  14142. LDM PFAT SET ALTERNATE STORAGE TYPE
  14143. LMM FCAT,CI
  14144. SCN 77
  14145. LMM PFAT
  14146. STM FCAT,CI
  14147. LDM PFAA SET ALTERNATE STORAGE ADDRESS
  14148. STM FCAA,CI
  14149. LDM PFAA+1
  14150. STM FCAA+1,CI
  14151. LDM PFAA+2
  14152. STM FCAA+2,CI
  14153. LDM PFAT
  14154. LPN 77
  14155. LMN ATOD
  14156. NJN SAA2.1 IF NOT OPTICAL DISK STORAGE
  14157. LDM PFOA SET OPTICAL DISK ADDRESS
  14158. STM FCOA,CI
  14159. LDM PFOA+1
  14160. STM FCOA+1,CI
  14161. RJM UFL UPDATE FILE LENGTH
  14162. SAA2.1 LJM WCE REWRITE CATALOG ENTRY AND EXIT
  14163.  
  14164. * SET TAPE ALTERNATE STORAGE ADDRESS.
  14165.  
  14166. SAA3 LDM FCTF,CI
  14167. LPC TFLOKM
  14168. NJN SAA4 IF *TFLOK* STILL SET
  14169. ERROR AIO * NO ALTERNATE STORAGE COPY OF FILE.*
  14170.  
  14171. SAA4 LDM PFTS SET TAPE SEQUENCE NUMBER
  14172. LMM FCTS,CI
  14173. SCN 77
  14174. LMM PFTS
  14175. STM FCTS,CI
  14176. LDM PFTS+1
  14177. STM FCTS+1,CI
  14178. LDM PFTV SET TAPE VSN
  14179. STM FCTV,CI
  14180. LDM PFTV+1
  14181. STM FCTV+1,CI
  14182. LDM PFES CHECK TAPE FLAGS
  14183. LPC -777
  14184. NJN SAA6 IF UNDEFINED BITS SPECIFIED
  14185. LDM PFES SET TAPE ALTERNATE STORAGE FLAGS
  14186. STM FCTF,CI
  14187. RJM UFL UPDATE FILE LENGTH
  14188. SAA5 LJM WCE REWRITE CATALOG ENTRY AND EXIT
  14189.  
  14190. SAA6 ERROR ICU * INVALID CATALOG UPDATE.*
  14191. SAF SPACE 4,10
  14192. *** PROCESS *SETAF* REQUEST.
  14193. *
  14194. * SET/CLEAR ALTERNATE STORAGE FLAGS IN CATALOG ENTRY.
  14195.  
  14196.  
  14197. SAF BSS 0 ENTRY
  14198. LDM STAT
  14199. LPK STTA
  14200. NJN SAF1 IF TAPE ALTERNATE STORAGE REQUEST
  14201. RJM UAF UPDATE CARTRIDGE ALTERNATE STORAGE FLAGS
  14202. UJN SAF2 CONTINUE
  14203.  
  14204. SAF1 RJM UTF UPDATE TAPE ALTERNATE STORAGE FLAGS
  14205. SAF2 LJM WCE REWRITE CATALOG ENTRY AND EXIT
  14206. TITLE SUBROUTINES.
  14207. CDA SPACE 4,15
  14208. ** CDA - COMPARE DISK ADDRESSES.
  14209. *
  14210. * ENTRY (FS - FS+4) = FST FOR LOCAL FILE.
  14211. * (CI) = ADDRESS OF CATALOG ENTRY.
  14212. *
  14213. * EXIT TO *ERR* IF DISK ADDRESSES DO NOT MATCH.
  14214. *
  14215. * CALLS PDA, RMD, SDN.
  14216. *
  14217. * MACROS ERROR.
  14218.  
  14219.  
  14220. CDA SUBR ENTRY/EXIT
  14221. LDM FCDN,CI CHECK DEVICE NUMBER
  14222. LPN 77
  14223. ZJN CDA1 IF FILE ON MASTER DEVICE
  14224. STD CM
  14225. LDM PFPN+4 SET FAMILY EST ORDINAL
  14226. RJM SDN SEARCH FOR DEVICE NUMBER
  14227. PJN CDA1 IF DEVICE FOUND
  14228. ADN 1
  14229. RJM PDA PROCESS DEVICE AVAILABILITY
  14230. CDA0.1 ERROR DAD,CH * DIRECT ACCESS DEVICE ERROR.*
  14231.  
  14232. CDA1 LDD T5 CHECK FILE EST ORDINAL
  14233. LMD FS
  14234. ZJN CDA3 IF FILE ON RIGHT EQUIPMENT
  14235. CDA2 ERROR PVE,CH *PFC VERIFICATION ERROR.*
  14236.  
  14237. CDA3 LDM FCBT,CI CHECK FIRST TRACK
  14238. LMD FS+1
  14239. NJN CDA2 IF FILE ON WRONG TRACK
  14240. RJM RMD RESET TO MASTER DEVICE
  14241. UJP CDAX RETURN
  14242. UAF SPACE 4,10
  14243. ** UAF - UPDATE CARTRIDGE ALTERNATE STORAGE FLAGS.
  14244. *
  14245. * ENTRY (CI) = ADDRESS OF CATALOG ENTRY.
  14246. *
  14247. * EXIT (FCAF) UPDATED.
  14248. * (FCAF/FCAT/FCAA) CLEARED IF SET REQUEST FOR *AFOBS*,
  14249. * OR IF SET REQUEST FOR *AFFRE* ON A DISK-RESIDENT FILE.
  14250. *
  14251. * USES T1, T2.
  14252.  
  14253.  
  14254. UAF SUBR ENTRY/EXIT
  14255. LDM PFES SAVE SET/CLEAR FLAG
  14256. SCN 77
  14257. STD T2
  14258. LDM PFES GET PROCESSOR ADDRESS
  14259. LPN 77
  14260. STD T1
  14261. SBN AFMAX+1
  14262. PJN UAF1 IF INVALID FLAG NUMBER
  14263. LDM UAFA,T1
  14264. STD T1
  14265. LJM 0,T1 PROCESS FLAG
  14266.  
  14267. UAFA BSS 0 TABLE OF ERROR FLAG PROCESSORS
  14268. LOC 0
  14269. CON UAF2 *AFOBS* PROCESSOR
  14270. CON UAF3 *AFPSE* PROCESSOR
  14271. CON UAF5 *AFPDE* PROCESSOR
  14272. CON UAF6 *AFPDR* PROCESSOR
  14273. CON UAF1 *AFVER* PROCESSOR
  14274. CON UAF8 *AFTMP* PROCESSOR
  14275. CON UAF10 *AFFRE* PROCESSOR
  14276. LOC *O
  14277.  
  14278. UAF1 ERROR ICU *INVALID CATALOG UPDATE.*
  14279.  
  14280. * PROCESS *ALTERNATE STORAGE COPY OBSOLETE* FLAG.
  14281.  
  14282. UAF2 LDD T2 PROCESS *AFOBS*
  14283. ZJN UAF1 IF *CLEAR* REQUEST
  14284. LDM FCBT,CI
  14285. ZJN UAF1 IF NO DISK ADDRESS
  14286. LDM FCAF,CI
  14287. LPN AFPDRM
  14288. NJN UAF1 IF *PSEUDO-RELEASE* SET
  14289. UAF2.1 LDN FCAF CLEAR *AF*, *AT*, AND *ASA* INFO
  14290. ADD CI
  14291. STM UAFD
  14292. LDN ZERL
  14293. CRM *,ON
  14294. UAFD EQU *-1
  14295. LJM UAFX RETURN
  14296.  
  14297. * PROCESS *ALTERNATE STORAGE COPY PERMANENT STATUS ERROR* FLAG
  14298.  
  14299. UAF3 LDD T2 PROCESS *AFPSE*
  14300. ZJN UAF1 IF *CLEAR* REQUEST
  14301. LDM FCAF,CI SET *AFPSE* FLAG
  14302. SCN AFPSEM
  14303. LMN AFPSEM
  14304. UAF4 STM FCAF,CI UPDATE FLAGS IN CATALOG
  14305. LJM UAFX RETURN
  14306.  
  14307. * PROCESS *ALTERNATE STORAGE COPY PERMANENT DATA ERROR* FLAG.
  14308.  
  14309. UAF5 LDD T2 PROCESS *AFPDE*
  14310. ZJP UAF1 IF CLEAR REQUEST
  14311. LDM FCAF,CI SET *AFPDE* FLAG
  14312. SCN AFPDEM
  14313. LMN AFPDEM
  14314. UJN UAF4 RETURN
  14315.  
  14316. * PROCESS *ALTERNATE STORAGE COPY PSEUDO-RELEASED* FLAG.
  14317.  
  14318. UAF6 LDD T2 PROCESS *AFPDR*
  14319. NJN UAF7 IF *SET* REQUEST
  14320. STM UAFB
  14321. UAF7 LDM FCAF,CI SET/CLEAR *AFPDR* FLAG
  14322. SCN AFPDRM
  14323. UAFB LMN AFPDRM
  14324. * PSN (*CLEAR* REQUEST)
  14325. UJN UAF4 RETURN
  14326.  
  14327. * PROCESS *TEMPORARY ERROR* FLAG.
  14328.  
  14329. UAF8 LDD T2
  14330. NJN UAF9 IF *SET* REQUEST
  14331. STM UAFC
  14332. UAF9 LDM FCAF,CI SET/CLEAR *AFTMP* FLAG
  14333. SCN AFTMPM
  14334. UAFC LMN AFTMPM
  14335. * PSN (*CLEAR* REQUEST)
  14336. UJN UAF4 RETURN
  14337.  
  14338. * PROCESS *FREE CARTRIDGE* FLAG.
  14339.  
  14340. UAF10 LDD T2 PROCESS *AFFRE* FLAG
  14341. ZJN UAF11 IF *CLEAR* REQUEST
  14342. LDM FCBT,CI
  14343. NJP UAF2.1 IF FILE CURRENTLY DISK RESIDENT
  14344. LDN PSNI ENABLE SET OF FLAG
  14345. STM UAFE
  14346. UAF11 LDM FCAF,CI ALTERNATE STORAGE FLAGS
  14347. LPC -AFFREM CLEAR *AFFRE* FLAG
  14348. UAFE UJN UAF12 DO NOT RESET FLAG
  14349. * PSN (*SET* REQUEST)
  14350. LMC AFFREM SET *AFFRE* FLAG
  14351. UAF12 LJM UAF4 STORE ALTERNATE STORAGE FLAGS
  14352. UFL SPACE 4,20
  14353. ** UFL - UPDATE FILE LENGTH.
  14354. *
  14355. * ENTRY (CI) = ADDRESS OF PFC ENTRY IN BUFFER.
  14356. *
  14357. * EXIT FILE LENGTH UPDATED IN PFC.
  14358. *
  14359. * USES CM, T6.
  14360. *
  14361. * CALLS CTA, PDA, RMD, SDN, SEI.
  14362. *
  14363. * MACROS ERROR, SETMS.
  14364. *
  14365. * NOTES THIS SUBROUTINE ASSUMES THAT THE FILE IS NOT
  14366. * CURRENTLY ATTACHED IN A WRITEABLE MODE; THE
  14367. * CORRECTNESS OF THAT ASSUMPTION DEPENDS ON LOGIC IN
  14368. * *PFDUMP* AND *PFU*. THIS SUBROUTINE WILL ONLY BE
  14369. * CALLED IF *TFLOK* IS STILL SET, AND *PFDUMP* DOES
  14370. * NOT SET *TFLOK* UNTIL AFTER *PFU* HAS DETERMINED
  14371. * THAT THE FILE IS NOT BUSY.
  14372.  
  14373.  
  14374. UFL SUBR ENTRY/EXIT
  14375. LDM FCBS,CI
  14376. SHN 21-13
  14377. PJN UFLX IF INDIRECT ACCESS FILE
  14378. LDM FCLF,CI
  14379. ADM FCLF+1,CI
  14380. NJN UFLX IF FILE LENGTH NONZERO
  14381. LDM FCDN,CI CHECK DEVICE NUMBER
  14382. LPN 77
  14383. ZJN UFL2 IF FILE ON MASTER DEVICE
  14384.  
  14385. * PROCESS ALTERNATE DEVICE ACCESS.
  14386.  
  14387. STD CM
  14388. LDM PFPN+4 SET FAMILY EST ORDINAL
  14389. RJM SDN SEARCH FOR DEVICE NUMBER
  14390. PJN UFL2 IF DEVICE FOUND
  14391. ADN 1
  14392. RJM PDA PROCESS DEVICE AVAILABILITY
  14393. UFL1 ERROR DAD,CH * DIRECT ACCESS DEVICE ERROR.*
  14394.  
  14395. * DETERMINE FILE LENGTH.
  14396.  
  14397. UFL2 LDM FCBT,CI SET FILE FIRST TRACK
  14398. STD T6
  14399. SETMS STATUS
  14400. LDD CM+4 SET TRT ADDRESS FOR *SEI*
  14401. SHN 3
  14402. ADN TRLL
  14403. RJM CTA CALCULATE FWA OF TRT
  14404. SBD TH
  14405. STM SEIA+1
  14406. SHN -14
  14407. LMC ADCI
  14408. STM SEIA
  14409. LDN 0 FORCE CURRENT TRT
  14410. RJM SEI SKIP TO EOI
  14411. LDD T2 SET FILE LENGTH
  14412. STM FCLF,CI
  14413. LDD T3
  14414. STM FCLF+1,CI
  14415. RJM RMD RESET TO MASTER DEVICE
  14416. UJP UFLX RETURN
  14417. UTF SPACE 4,20
  14418. ** UTF - UPDATE TAPE ALTERNATE STORAGE FLAGS.
  14419. *
  14420. * ENTRY (CI) = ADDRESS OF CATALOG ENTRY.
  14421. *
  14422. * EXIT (FCTF) UPDATED.
  14423. *
  14424. * USES T1, T2.
  14425. *
  14426. * NOTE - CODE TO SET AND CLEAR SOME OF THESE FLAGS ARE INCLUDED
  14427. * IN THIS FUNCTION ONLY FOR TESTING PURPOSES. DURING
  14428. * NORMAL SYSTEM OPERATION, THE FLAGS ARE SET BY OTHER
  14429. * MEANS. FOR EXAMPLE, *PFDUMP* SETS THE FLAG *TFLOK*
  14430. * BY CALLING THE *PFU* FUNCTION *CTSL*, AND SETS THE
  14431. * FLAGS *TFSVS*, *TFLIF*, *TFCTS* AND *TFACS* BY
  14432. * SPECIFYING THESE BITS ON THE CALL TO *SETASA*.
  14433.  
  14434.  
  14435. UTF SUBR ENTRY/EXIT
  14436. LDM PFES SAVE SET/CLEAR FLAG
  14437. SCN 77
  14438. STD T2
  14439. LDM PFES GET PROCESSOR ADDRESS
  14440. LPN 77
  14441. STD T1
  14442. SBN TFMAX+1
  14443. PJN UTF1 IF INVALID FLAG NUMBER
  14444. LDM UTFA,T1
  14445. STD T1
  14446. LJM 0,T1 PROCESS FLAG
  14447.  
  14448. UTFA BSS 0 TABLE OF ERROR FLAG PROCESSORS
  14449. LOC 0
  14450. CON UTF1 *TFVER* PROCESSOR
  14451. CON UTF2 *TFSVS* PROCESSOR
  14452. CON UTF5 *TFPVN* PROCESSOR
  14453. CON UTF7 *TFSVN* PROCESSOR
  14454. CON UTF9 *TFEPV* PROCESSOR
  14455. CON UTF11 *TFESV* PROCESSOR
  14456. CON UTF13 *TFLIF* PROCESSOR
  14457. CON UTF15 *TFCTS* PROCESSOR
  14458. CON UTF17 *TFACS* PROCESSOR
  14459. CON UTF1 RESERVED
  14460. CON UTF1 RESERVED
  14461. CON UTF19 *TFLOK* PROCESSOR
  14462. LOC *O
  14463.  
  14464. UTF1 ERROR ICU * INVALID CATALOG UPDATE.*
  14465.  
  14466. * PROCESS *SECONDARY VSN EXISTS* FLAG.
  14467.  
  14468. UTF2 LDD T2 PROCESS *TFSVS*
  14469. NJN UTF3 IF *SET* REQUEST
  14470. STM UTFB
  14471. UTF3 LDM FCTF,CI SET/CLEAR *TFSVS* FLAG
  14472. SCN TFSVSM
  14473. UTFB LMN TFSVSM
  14474. * PSN (*CLEAR* REQUEST)
  14475. UTF4 STM FCTF,CI UPDATE FLAG FIELD IN CATALOG
  14476. UJP UTFX RETURN
  14477.  
  14478. * PROCESS *PRIMARY VSN NOT AVAILABLE* FLAG.
  14479.  
  14480. UTF5 LDD T2 PROCESS *TFPVN*
  14481. NJN UTF6 IF *SET* REQUEST
  14482. STM UTFC
  14483. UTF6 LDM FCTF,CI SET/CLEAR *TFPVN* FLAG
  14484. SCN TFPVNM
  14485. UTFC LMN TFPVNM
  14486. * PSN (*CLEAR* REQUEST)
  14487. UJN UTF4 RETURN
  14488.  
  14489. * PROCESS *SECONDARY VSN NOT AVAILABLE* FLAG.
  14490.  
  14491. UTF7 LDM FCTF,CI CHECK IF SECONDARY VSN EXISTS
  14492. LPK TFSVSM
  14493. ZJP UTF1 IF SECONDARY VSN NOT DEFINED
  14494. LDD T2
  14495. NJN UTF8 IF *SET* REQUEST
  14496. STM UTFD
  14497. UTF8 LDM FCTF,CI SET/CLEAR *TFSVN* FLAG
  14498. SCN TFSVNM
  14499. UTFD LMN TFSVNM
  14500. * PSN (*CLEAR* REQUEST)
  14501. UJN UTF4 RETURN
  14502.  
  14503. * PROCESS *DATA ERROR ON PRIMARY VSN* FLAG.
  14504.  
  14505. UTF9 LDD T2
  14506. NJN UTF10 IF *SET* REQUEST
  14507. STM UTFE
  14508. UTF10 LDM FCTF,CI SET/CLEAR *TFEPV* FLAG
  14509. SCN TFEPVM
  14510. UTFE LMN TFEPVM
  14511. * PSN (*CLEAR* REQUEST)
  14512. UJP UTF4 RETURN
  14513.  
  14514. * PROCESS *DATA ERROR ON SECONDARY VSN* FLAG.
  14515.  
  14516. UTF11 LDM FCTF,CI CHECK IF SECONDARY VSN EXISTS
  14517. LPK TFSVSM
  14518. ZJP UTF1 IF SECONDARY VSN NOT DEFINED
  14519. LDD T2
  14520. NJN UTF12 IF *SET* REQUEST
  14521. STM UTFF
  14522. UTF12 LDM FCTF,CI SET/CLEAR *TFESV* FLAG
  14523. SCN TFESVM
  14524. UTFF LMN TFESVM
  14525. * PSN (*CLEAR* REQUEST)
  14526. UJP UTF4 RETURN
  14527.  
  14528. * PROCESS *FILE ON LI FORMAT TAPE* FLAG.
  14529.  
  14530. UTF13 LDD T2 PROCESS *TFLIF*
  14531. NJN UTF14 IF *SET* REQUEST
  14532. STM UTFG
  14533. STM UTFG+1
  14534. UTF14 LDM FCTF,CI SET/CLEAR *TFLIF* FLAG
  14535. LPC -TFLIFM
  14536. UTFG LMC TFLIFM
  14537. * PSN (*CLEAR* REQUEST)
  14538. UJP UTF4 RETURN
  14539.  
  14540. * PROCESS *FILE ON CARTRIDGE (CT/AT) TAPE* FLAG.
  14541.  
  14542. UTF15 LDD T2 PROCESS *TFCTS*
  14543. NJN UTF15 IF *SET* REQUEST
  14544. STM UTFH
  14545. STM UTFH+1
  14546. UTF16 LDM FCTF,CI SET/CLEAR *TFCTS* FLAG
  14547. LPC -TFCTSM
  14548. UTFH LMC TFCTSM
  14549. * PSN (*CLEAR* REQUEST)
  14550. UJP UTF4 RETURN
  14551.  
  14552. * PROCESS *FILE ON ACS CARTRIDGE (AT) TAPE* FLAG.
  14553.  
  14554. UTF17 LDD T2 PROCESS *TFACS*
  14555. NJN UTF18 IF *SET* REQUEST
  14556. STM UTFI
  14557. STM UTFI+1
  14558. UTF18 LDM FCTF,CI SET/CLEAR *TFACS* FLAG
  14559. LPC -TFACSM
  14560. UTFI LMC TFACSM
  14561. * PSN (*CLEAR* REQUEST)
  14562. UJP UTF4 RETURN
  14563.  
  14564. * PROCESS *TFLOK* FLAG.
  14565.  
  14566. UTF19 LDD T2
  14567. ZJP UTF1 IF *CLEAR* REQUEST
  14568. LDM FCTF,CI SET *TFLOK* FLAG
  14569. LPC -TFLOKM
  14570. LMC TFLOKM
  14571. UJP UTF4 RETURN
  14572. WCE SPACE 4,15
  14573. ** WCE - REWRITE CATALOG ENTRY.
  14574. *
  14575. * ENTRY (CI) = ADDRESS OF CATALOG ENTRY.
  14576. * (CB) = ADDRESS OF CATALOG BUFFER.
  14577. *
  14578. * EXIT TO *3PU*.
  14579. * (FCKD) UPDATED AND CATALOG SECTOR REWRITTEN.
  14580. *
  14581. * USES CM - CM+4.
  14582. *
  14583. * CALLS WBI.
  14584. *
  14585. * MACROS ENDMS.
  14586.  
  14587.  
  14588. WCE BSS 0 ENTRY
  14589. LDN PDTL UPDATE CONTROL MODIFICATION DATE
  14590. CRD CM
  14591. LDD CM+2
  14592. STM FCKD,CI
  14593. LDD CM+3
  14594. STM FCKD+1,CI
  14595. LDD CM+4
  14596. STM FCKD+2,CI
  14597. LDD CB REWRITE CATALOG BUFFER
  14598. RJM WBI
  14599. ENDMS
  14600. EXECUTE 3PU TERMINATE PROGRAM
  14601. SPACE 4,10
  14602. * COMMON DECKS.
  14603.  
  14604.  
  14605. *CALL COMPSDN
  14606. SEI$ SET 0 FORCE TRT UPDATE ON *SEI* CALLS
  14607. *CALL COMPSEI
  14608. SPACE 4,10
  14609. * CHECK FOR OVERFLOW.
  14610.  
  14611.  
  14612. OVERFLOW OVLC,BUF1-2 OVERFLOW INTO CATALOG BUFFER
  14613. OVERLAY (DEVICE TO DEVICE TRANSFER.),LOCG
  14614. SPACE 4,10
  14615. ** THIS OVERLAY PROCESSES DEVICE-TO-DEVICE TRANSFER FOR
  14616. * THE INDIRECT ACCESS FILE COMMANDS *GET*, *OLD*, *SAVE*,
  14617. * *REPLACE*, AND *APPEND*.
  14618.  
  14619.  
  14620. OVL BSS 0 ENTRY
  14621. RJM CES CREATE EOI SECTOR
  14622. UJN ".Q"X RETURN
  14623. TITLE DEVICE-TO-DEVICE TRANSFER MAIN LOOP.
  14624. ** DTD - DEVICE TO DEVICE TRANSFER.
  14625. *
  14626. * ENTRY (T4 - T7) = MASS STORAGE PARMETERS TO START READ AT.
  14627. * (SDAA - SDAC) = MASS STORAGE PARAMETERS FOR 1ST WRITE
  14628. * (BB) = ADDRESS TO START READING IN AT.
  14629. * (FA) = FST ADDRESS.
  14630. * (LF - LF+1) = FILE LENGTH.
  14631. *
  14632. * CALLS IBA, PDV, RNS, SDP, WES, WNS.
  14633. *
  14634. * MACROS ERROR, SETMS.
  14635.  
  14636.  
  14637. DTD BSS 0 ENTRY
  14638. LDK PTE SET ERROR PROCESSOR ADDRESS FOR *RNS*
  14639. STM MSRA
  14640. DTD0 LDD BB
  14641. RJM RNS
  14642. LDI BB
  14643. ADM 1,BB
  14644. ZJN DTD1 IF EOI
  14645. RJM IBA INCREMENT BUFFER ADDRESSES
  14646. MJN DTD0 IF BUFFER NOT FULL
  14647. DTD1 RJM SDP SWAP DISK PARAMETERS
  14648. DTD2 LDI BB
  14649. ADM 1,BB
  14650. ZJP DTD4 IF EOI SECTOR
  14651. SOD LF+1 DECREMENT LENGTH
  14652. PJN DTD3 IF NO UNDERFLOW
  14653. AOD LF+1
  14654. SOD LF
  14655. MJP DTD7 IF LENGTH ERROR
  14656. DTD3 RJM WNS WRITE NEXT SECTOR
  14657. RJM IBA INCREMENT BUFFER ADDRESSES
  14658. MJN DTD2 IF STILL ANOTHER SECTOR IN BUFFER
  14659. RJM SDP SWAP DISK PARAMETERS
  14660. SETMS READSTR,NS
  14661. RJM PDV PROCESS DEVICE STATUS
  14662. LJM DTD0 LOOP
  14663.  
  14664. * EOI SECTOR ENCOUNTERED.
  14665.  
  14666. DTD4 LDD LF CHECK FILE LENGTH
  14667. ADD LF+1
  14668. ZJN DTD8 IF NO LENGTH ERROR
  14669. LDD CC
  14670. LMN CCGT
  14671. ZJN DTD7 IF *GET*
  14672. LMN CCOD&CCGT
  14673. ZJN DTD7 IF *OLD*
  14674. LMN CCUG&CCOD
  14675. ZJN DTD7 IF *UGET*
  14676.  
  14677. * IF EOI ENCOUNTERED ON *SAVE*/*REPLACE*/*APPEND* BEFORE
  14678. * FILE LENGTH EXHAUSTED, FILL TO END OF FILE WITH EOF-S.
  14679.  
  14680. DTD5 SOD LF+1 DECREMENT LENGTH
  14681. PJN DTD6 IF STILL MORE SECTORS
  14682. AOD LF+1
  14683. SOD LF
  14684. MJN DTD7 IF END OF SPACE
  14685. DTD6 RJM WNS WRITE EOF
  14686. UJN DTD5 CHECK IF MORE EOF-S NEEDED
  14687.  
  14688. DTD7 LJM PLE PROCESS LENGTH ERROR
  14689.  
  14690. DTD8 RJM WES WRITE EOI SECTOR
  14691. LDD FA
  14692. ZJN DTD9 IF NOT FST
  14693. NFA FA,R
  14694. ADN FSTL
  14695. CWD FS
  14696.  
  14697. DTD9 LDC 0
  14698. DTDA EQU *-1 (TRANSFER ERROR FLAG)
  14699. ZJN DTD10 IF NO TRANSFER ERRORS
  14700. LDM SDAA SET SOURCE EST ORDINAL
  14701. ERROR DTE,CH *DATA TRANSFER ERROR.*
  14702.  
  14703. DTD10 LDM IAIF CHECK FOR INDIRECT ALLOCATION INTERLOCK
  14704. ZJN DTD11 IF INDIRECT ALLOCATION INTERLOCK NOT SET
  14705. LDD EQ CLEAR INTERLOCK (SET CHECKPOINT BIT)
  14706. ADC 4000
  14707. STD CM+1
  14708. LDM DVLW
  14709. STD CM+2
  14710. LDN CTIS
  14711. STD CM+3
  14712. MONITOR STBM
  14713. * LDN 0 CLEAR INDIRECT ALLOCATION INTERLOCK FLAG
  14714. STM IAIF
  14715. DTD11 EXECUTE 3PU TERMINATE PROGRAM
  14716. TITLE SUBROUTINES.
  14717. DPC SPACE 4,10
  14718. ** DPC - DECREMENT PRU COUNTER.
  14719. *
  14720. * ENTRY (DPCA) PRESET FOR SRU ACCUMULATION OPTION.
  14721. * .EQ. 0 TO ACCUMULATE SRUS.
  14722. * .NE. 0 TO NOT ACCUMULATE SRUS.
  14723. *
  14724. * EXIT (IAPF) UPDATED IF SPECIFIED NUMBER OF PRUS TRANSFERRED
  14725. * AND SRU ACCUMULATION OPTION ON.
  14726.  
  14727.  
  14728. DPC SUBR ENTRY/EXIT
  14729. SOM DPCB DECREMENT PRUS TRANSFERRED
  14730. NJN DPCX IF INCREMENT NOT EXHAUSTED
  14731. DPCA LDN 0 CHECK SRU ACCUMULATION OPTION
  14732. * LDN 1 (NO SRU ACCUMULATION)
  14733. NJN DPCX IF NO SRU ACCUMULATION
  14734. LDN IPPR INCREMENT SRUS FOR TRANSFER
  14735. RAM AIPF+1
  14736. SHN -14
  14737. RAM AIPF
  14738. LDN IPPN RESET PRU TRANSFER INCREMENT
  14739. STM DPCB
  14740. UJN DPCX RETURN
  14741.  
  14742. DPCB CON IPPN PRU TRANSFER INCREMENT
  14743. IBA SPACE 4,10
  14744. ** IBA - INCREMENT BUFFER ADDRESS.
  14745. *
  14746. * EXIT (A) .LT. 0, IF BUFFER NOT FULL.
  14747.  
  14748.  
  14749. IBA2 LDC 502 FULL BUFFER NEEDED FOR WRITE ERROR
  14750. RAD BB
  14751. LCN 1
  14752.  
  14753. IBA SUBR ENTRY/EXIT
  14754. LDD BB
  14755. LMM SDPA
  14756. ZJN IBA2 IF FIRST SECTOR IN BUFFER
  14757. LDI BB
  14758. ZJN IBA1 IF EOF
  14759. LDM 1,BB GET LENGTH
  14760. SHN 2
  14761. ADM 1,BB
  14762. IBA1 ADN 2
  14763. RAD BB
  14764. ADC -BFMS
  14765. UJN IBAX RETURN
  14766. PLE SPACE 4,10
  14767. ** PLE - PROCESS LENGTH ERROR.
  14768. *
  14769. * CALLS WES.
  14770. *
  14771. * MACROS ERROR.
  14772.  
  14773.  
  14774. PLE BSS 0 ENTRY
  14775. RJM WES WRITE EOI SECTOR
  14776. LDM PLEA
  14777. NJN PLE1 IF LENGTH ERROR DUE TO HARDWARE FAILURE
  14778. LDM SDAA SET SOURCE EST ORDINAL
  14779. ERROR FLE,CH,,,,EI *EQXXX,DNYY, FILE LENGTH ERROR.*
  14780.  
  14781. PLE1 LDM SDAA SET SOURCE EST ORDINAL
  14782. ERROR FLE,CH *EQXXX,DNYY, FILE LENGTH ERROR.*
  14783.  
  14784.  
  14785. PLEA CON 0 LINKAGE ERROR DUE TO HARDWARE FAILURE
  14786. PTE SPACE 4,10
  14787. ** PTE - PROCESS TRANSFER ERROR.
  14788. *
  14789. * ENTRY READ ERROR DETECTED BY *COMPRNS*.
  14790. *
  14791. * EXIT (DTDA) .NE. 0 IF DATA TRANSFER ERROR OCCURRED.
  14792. * (PLEA) .NE. 0 IF LINKAGE ERROR OCCURRED.
  14793. *
  14794. * CALLS PES.
  14795.  
  14796.  
  14797. PTE SUBR ENTRY/EXIT
  14798. RJM PES PROCESS ERROR STATUS
  14799. LDM RDCT CHECK TYPE OF ERROR
  14800. SHN 21-13
  14801. PJN PTE1 IF VALID SECTOR READ
  14802. AOM PLEA INDICATE LINKAGE ERROR
  14803. LDN 0 SET EOI LINKAGE TO TERMINATE TRANSFER
  14804. STM 1,BB
  14805. STI BB
  14806. UJN PTEX RETURN
  14807.  
  14808. PTE1 AOM DTDA INDICATE TRANSFER ERROR
  14809. UJN PTEX RETURN
  14810. SDP SPACE 4,15
  14811. ** SDP - SWAP DISK PARAMETERS.
  14812. *
  14813. * ENTRY (SDAA - SDAC) = NEXT DEVICE PARAMETERS.
  14814. * (T5 - T7) = CURRENT DEVICE PARAMETERS.
  14815. *
  14816. * EXIT (T4 - T7) = DISK INFORMATION FOR NEXT DEVICE.
  14817. * (BB) = STARTING BUFFER ADDRESS.
  14818. * *SETMS* WRITE PERFORMED.
  14819. *
  14820. * USES T0 - T7.
  14821. *
  14822. * CALLS PDV.
  14823. *
  14824. * MACROS ENDMS, SETMS.
  14825.  
  14826.  
  14827. SDP SUBR ENTRY/EXIT
  14828. ENDMS
  14829. LDN T5 SWAP DEVICE PARAMETERS
  14830. STD T1
  14831. SDP1 LDI T1
  14832. STD T0
  14833. LDM SDAA-T5,T1
  14834. STI T1
  14835. LDD T0
  14836. STM SDAA-T5,T1
  14837. AOD T1
  14838. LMN T7+1
  14839. NJN SDP1 IF NOT ALL PARAMETERS SWAPPGD
  14840. SETMS IO,NS
  14841. RJM PDV PROCESS DEVICE STATUS
  14842. LDM UERR SET TRANSFER MODE (REWRITE OR NON-REWRITE)
  14843. LPC -EPRW
  14844. LMM DTMD
  14845. STM UERR
  14846. LDC BUF SET BUFFER ADDRESS
  14847. SDPA EQU *-1
  14848. STD BB
  14849. STM WDSE SET WRITE ERROR BUFFER ADDRESS
  14850. LJM SDPX RETURN
  14851. SNS SPACE 4,15
  14852. ** SNS - SET NEXT SECTOR.
  14853. *
  14854. * ENTRY (T7) = CURRENT SECTOR.
  14855. * (SNSA) PRESET IF ACCUMULATION DESIRED.
  14856. *
  14857. * EXIT (T3) = NEXT SECTOR/TRACK.
  14858. *
  14859. * USES T3.
  14860. *
  14861. * CALLS SNT.
  14862.  
  14863.  
  14864. SNS SUBR ENTRY/EXIT
  14865. LDD T7 SET NEXT SECTOR
  14866. ADN 1
  14867. STD T3
  14868. LMM SLM
  14869. NJN SNSX IF NOT SECTOR LIMIT
  14870.  
  14871. * SET NEXT TRACK.
  14872.  
  14873. SNSA LDN 0
  14874. * LDN 1 (IF PRU ACCUMULATION DESIRED)
  14875. ZJN SNS1 IF NO PRU ACCUMULATION
  14876. LDM SLM INCREMENT PRU COUNT FOR NEXT TRACK
  14877. RAM AIPR+1
  14878. SHN -14
  14879. RAM AIPR
  14880. SNS1 RJM SNT SET NEXT TRACK
  14881. STD T3
  14882. UJN SNSX RETURN
  14883. WES SPACE 4,20
  14884. ** WES - WRITE EOI SECTOR.
  14885. *
  14886. * ENTRY (T4) = CHANNEL (RESERVED).
  14887. * (T5) = EST ORDINAL.
  14888. * (T6) = EOI TRACK.
  14889. * (T7) = EOI SECTOR.
  14890. * (CC) = COMMAND CODE.
  14891. *
  14892. * EXIT CHANNEL RELEASED.
  14893. * EOI SET IN TRT IF *GET*, *OLD*, OR *UGET* REQUEST.
  14894. * TO *WSE* TO PROCESS WRITE ERRORS.
  14895. *
  14896. * USES CM - CM+4.
  14897. *
  14898. * CALLS WEI.
  14899. *
  14900. * MACROS ENDMS, ERROR, MONITOR.
  14901.  
  14902.  
  14903. WES SUBR ENTRY/EXIT
  14904. LDN 0 CLEAR FST ADDRESS
  14905. STD FA
  14906. RJM WEI WRITE EOI
  14907. MJP WSE IF WRITE ERROR
  14908. ENDMS
  14909. LDC * RESTORE FST ADDRESS
  14910. WESA EQU *-1
  14911. STD FA
  14912. LDD CC CHECK REQUEST
  14913. LMN CCGT
  14914. ZJN WES1 IF *GET*
  14915. LMN CCOD&CCGT
  14916. ZJN WES1 IF *OLD*
  14917. LMN CCUG&CCOD
  14918. NJN WESX IF NOT *UGET*
  14919. WES1 LDD T5 SET EST ORDINAL
  14920. STD CM+1
  14921. LDD T6 SET TRACK
  14922. LPC 3777
  14923. STD CM+2
  14924. LDD T7 SET SECTOR
  14925. STD CM+3
  14926. MONITOR DTKM SET EOI IN TRT
  14927. UJP WESX RETURN
  14928.  
  14929.  
  14930. WEIA BSSZ WCEI*5+2 EOI BUFFER
  14931. WNS SPACE 4,15
  14932. ** WNS - WRITE NEXT SECTOR.
  14933. *
  14934. * WRITE SECTOR WITH NEW LINKAGE. USES OLD WORD COUNT AND
  14935. * EOF FLAGS. SYSTEM SECTORS ARE HANDLED PROPERLY ALSO.
  14936. * PRU INCREMENTS AND PF INCREMENTS ARE UPDATED.
  14937. *
  14938. * ENTRY (BB) = ADDRESS OF SECTOR BUFFER.
  14939. *
  14940. * EXIT TO *WSE* TO PROCESS WRITE ERRORS.
  14941. *
  14942. * USES T1, T3 - T7.
  14943. *
  14944. * CALLS SNT, WDS.
  14945.  
  14946.  
  14947. WNS SUBR ENTRY/EXIT
  14948. RJM SNS SET NEXT SECTOR
  14949. LDI BB
  14950. NJN WNS1 IF NOT EOF
  14951.  
  14952. * PROCESS EOF.
  14953.  
  14954. LDD T3 SET NEXT SECTOR ADDRESS
  14955. STM 1,BB
  14956. UJN WNS3 WRITE SECTOR
  14957.  
  14958. * PROCESS SYSTEM SECTOR.
  14959.  
  14960. WNS1 LMC 3777
  14961. NJN WNS2 IF NOT SYSTEM SECTOR
  14962. LDD T3 SET NEXT SECTOR ADDRESS
  14963. STM NSSS-BFMS,BB
  14964. UJN WNS3 WRITE SECTOR
  14965.  
  14966. * PROCESS DATA SECTOR.
  14967.  
  14968. WNS2 LDD T3 SET NEXT SECTOR ADDRESS
  14969. STI BB
  14970.  
  14971. * WRITE SECTOR.
  14972.  
  14973. WNS3 LDD BB
  14974. STD T1
  14975. RJM IBA INCREMENT BUFFER ADDRESS
  14976. SHN -21
  14977. ZJN WNS4 IF END OF BUFFER
  14978. LDC WCSF&WLSF WRITE CONSECUTIVE SECTOR
  14979. WNS4 LMD T1+WLSF WRITE LAST SECTOR
  14980. STD BB RESET BUFFER ADDRESS
  14981. RJM WDS
  14982. MJN WSE IF WRITE ERROR
  14983. RJM DPC DECREMENT PRU COUNT
  14984.  
  14985. * SET NEXT SECTOR.
  14986.  
  14987. LDD T3 SET NEXT SECTOR
  14988. STD T7
  14989. SHN 21-13
  14990. PJN WNS5 IF NOT TRACK POINTER
  14991. SHN -21+13 SET NEXT TRACK
  14992. STD T6
  14993. LDN 0
  14994. STD T7
  14995. WNS5 LJM WNSX RETURN
  14996. WSE SPACE 4,15
  14997. ** WSE - WRITE MASS STORAGE ERROR PROCESSOR.
  14998. *
  14999. * ENTRY (PWRF) = *PFM* RESTART FLAGS FOR RECALL.
  15000. * (RDCT) = DRIVER STATUS.
  15001. * (STAT) = *STNS* BIT SET IF JOB SUSPENSION NOT ALLOWED.
  15002. *
  15003. * EXIT (PWRF) = *RFRR* FLAG SET IF REQUEST TO BE RETRIED
  15004. * DUE TO UNRECOVERABLE WRITE ERROR.
  15005. * TO *ERR* TO RETRY REQUEST OR ISSUE ERROR MESSAGE.
  15006. *
  15007. * MACROS ERROR.
  15008.  
  15009.  
  15010. WSE BSS 0 ENTRY
  15011. LDM STAT *PFM* STATUS BITS
  15012. LPK STNS
  15013. NJN WSE3 IF JOB SUSPENSION INHIBITED
  15014. LDM RDCT DRIVER STATUS
  15015. SHN 21-12
  15016. PJN WSE1 IF RECOVERABLE ERROR
  15017. LDM PWRF CHECK RESTART FLAGS
  15018. LPK RFRR
  15019. NJN WSE2 IF REQUEST ALREADY RETRIED
  15020. LDK RFRR SET RETRY REQUEST FLAG
  15021. RAM PWRF
  15022. WSE1 ERROR RTR,CH RETRY REQUEST
  15023.  
  15024. WSE2 ERROR MSE,CH,,T5 *EQXXX,DNYY, MASS STORAGE ERROR.*
  15025.  
  15026. WSE3 ERROR MSE,CH,,T5,,EI *EQXXX,DNYY, MASS STORAGE ERROR.*
  15027. SPACE 4,10
  15028. * COMMON DECKS.
  15029.  
  15030.  
  15031. *CALL COMPWEI
  15032. BUF SPACE 4,10
  15033. * BUF - BUFFER USED IN DEVICE TO DEVICE TRANSFER.
  15034.  
  15035.  
  15036. BUF BSS 0
  15037.  
  15038. .BUFL SET EPFW-BUF
  15039. ERRNG .BUFL-5020 NOT ROOM FOR 8 SECTORS IN BUFFER
  15040. CES SPACE 4,10
  15041. ** CES - CREATE EOI SECTOR.
  15042. *
  15043. * ENTRY (CC) = COMMAND CODE.
  15044. * (FA) = FST ADDRESS.
  15045. * (FS - FS+4) = FST IMAGE (*GET*/*OLD*/*UGET* REQUEST).
  15046. * (SDAA - SDAC) = PARAMETERS FOR 1ST WRITE.
  15047. *
  15048. * EXIT (WEIA) SET UP WITH EOI DATA.
  15049. * (WESA) = FST ADDRESS.
  15050.  
  15051.  
  15052. CES2 LDD MA MOVE FST INFORMATION TO EOI BUFFER
  15053. CWM SDAA,ON
  15054. SBN 1
  15055. CES3 CRM WEIA+FSEI,ON
  15056. LDD FA SAVE FST ADDRESS
  15057. STM WESA
  15058. NFA FA,R COPY FILE NAME TO EOI BUFFER
  15059. ADK FNTL
  15060. CRM WEIA+FNEI,ON
  15061.  
  15062. CES SUBR ENTRY/EXIT
  15063. LDD CC CHECK REQUEST
  15064. LMN CCGT
  15065. ZJN CES1 IF *GET* FUNCTION
  15066. LMN CCOD&CCGT
  15067. ZJN CES1 IF *OLD*
  15068. LMN CCUG&CCOD
  15069. NJN CES2 IF NOT *UGET*
  15070. CES1 LDD MA COPY FST IMAGE TO EOI BUFFER
  15071. CWD FS
  15072. UJN CES3 READ FST ENTRY
  15073. SPACE 4,10
  15074. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  15075.  
  15076.  
  15077. QUAL *
  15078.  
  15079. BUF EQU /".O"/BUF
  15080. DPCA EQU /".O"/DPCA
  15081. DPCB EQU /".O"/DPCB
  15082. DTD EQU /".O"/DTD
  15083. DTDA EQU /".O"/DTDA
  15084. IBA EQU /".O"/IBA
  15085. PLE EQU /".O"/PLE
  15086. PLEA EQU /".O"/PLEA
  15087. PTE EQU /".O"/PTE
  15088. SDP EQU /".O"/SDP
  15089. SDPA EQU /".O"/SDPA
  15090. SNSA EQU /".O"/SNSA
  15091. WNS EQU /".O"/WNS
  15092. OVERLAY (APPEND - ORIGINAL FILE TRANSFER.),(BUF+5)
  15093. SPACE 4,10
  15094. ** THIS OVERLAY (TOGETHER WITH OVERLAY *3PP*) PERFORMS THE
  15095. * DEVICE-TO-DEVICE TRANSFER OF THE ORIGINAL PERMANENT FILE,
  15096. * WHEN REQUIRED, FOR THE INDIRECT ACCESS FILE COMMAND
  15097. * *APPEND*. ONCE THIS TRANSFER IS COMPLETE, OVERLAY *3PP*
  15098. * IS CALLED TO COPY THE LOCAL FILE.
  15099.  
  15100.  
  15101. OVL BSS 0 ENTRY
  15102. UJN ".Q"X RETURN AFTER LOAD
  15103. ADT SPACE 4,15
  15104. ** ADT - APPEND DISK TRANSFER.
  15105. *
  15106. * ENTRY (FS - FS+4) = FST ENTRY FOR SYSTEM FILE.
  15107. * (PFFN) = BEGINNING TRACK OF READ FILE.
  15108. * (PFFN+1) = BEGINNING SECTOR OF READ FILE.
  15109. *
  15110. * EXIT TO *DTD*.
  15111. * TO *PLE* FOR LENGTH ERRORS.
  15112. *
  15113. * USES BB, P0, P1, T5, T6, T7, CM - CM+4, LF - LF+1.
  15114. *
  15115. * CALLS CSS, CTI, DTD, IBA, PDV, PLE, RNS, RSS, SDP, STI, WNS.
  15116. *
  15117. * MACROS ENDMS, ERROR, MONITOR, SETMS.
  15118.  
  15119.  
  15120. ADT BSS 0 ENTRY
  15121. LDK PTE SET ERROR PROCESSOR ADDRESS FOR *RNS*
  15122. STM MSRA
  15123. ADT2 LDD BB READ NEXT SECTOR
  15124. RJM RNS
  15125. LDI BB
  15126. ADM 1,BB
  15127. ZJN ADT3 IF EOI
  15128. RJM IBA INCREMENT BUFFER ADDRESSES
  15129. MJN ADT2 IF BUFFER NOT FULL
  15130. ADT3 RJM SDP SWAP DISK PARAMETERS
  15131. ADT4 LDI BB
  15132. ADM 1,BB
  15133. ZJN ADT6 IF EOI SECTOR
  15134. SOD LF+1 DECREMENT LENGTH
  15135. PJN ADT5 IF NO UNDEFLOW
  15136. AOD LF+1
  15137. SOD LF
  15138. PJN ADT5 IF NO LENGTH ERROR
  15139. LJM PLE PROCESS LENGTH ERROR
  15140.  
  15141. ADT5 RJM WNS WRITE NEXT SECTOR
  15142. RJM IBA INCREMENT BUFFER ADDRESS
  15143. MJN ADT4 IF STILL ROOM IN BUFFER
  15144. RJM SDP SWAP DISK PARAMETERS
  15145. SETMS READSTR,NS
  15146. RJM PDV PROCESS DEVICE STATUS
  15147. LJM ADT2 LOOP
  15148.  
  15149. * CHECK FOR DELAYED DELINK REQUEST FOR ORIGINAL FILE.
  15150.  
  15151. ADT6 LDM APDK+1
  15152. ZJP ADT9 IF NO DELINK REQUESTED
  15153. ENDMS
  15154. LDD MA COPY DELINK PARAMETERS
  15155. CWM APDK,ON
  15156. SBN 1
  15157. CRD CM
  15158. MONITOR DLKM
  15159. LDM STAT
  15160. LPC STBD+STXC
  15161. LMC STBD+STXC
  15162. ZJN ADT9 IF EXTENDING CHAIN ON BUFFERED DEVICE
  15163. LDD EQ CLEAR INDIRECT ALLOCATION INTERLOCK
  15164. STD CM+1
  15165. LDM DVLW
  15166. STD CM+2
  15167. LDN CTIS
  15168. STD CM+3
  15169. MONITOR STBM
  15170. * LDN 0 CLEAR INDIRECT ALLOCATION INTERLOCK FLAG
  15171. STM IAIF
  15172.  
  15173. * COPY LOCAL FILE TO INDIRECT FILE.
  15174.  
  15175. ADT9 SOM DPCA ENABLE SRU ACCUMULATION
  15176. LDN IPPN RESET PRU TRANSFER INCREMENT
  15177. STM DPCB
  15178. LDD FS SET UP LOCAL FILE PARAMETERS
  15179. STM SDAA
  15180. LDD FS+1
  15181. STM SDAB
  15182. LDN FSMS
  15183. STM SDAC
  15184. LDC BUF RESET BUFFER ADDRESS
  15185. STM SDPA
  15186. RJM SDP SWAP DISK PARAMETERS
  15187. SETMS READSTR,NS
  15188. RJM PDV PROCESS DEVICE STATUS
  15189. LJM DTD ENTER DEVICE TO DEVICE TRANSFER
  15190. BUFA SPACE 4,10
  15191. * BUFA - BUFFER FOR DEVICE TO DEVICE TRANSFER OF
  15192. * EXISTING INDIRECT FILE.
  15193.  
  15194.  
  15195. BUFA BSS 0
  15196.  
  15197. .BUFAL SET EPFW-BUFA
  15198. ERRNG .BUFAL-4316 NOT ROOM FOR 7 SECTORS IN BUFFER
  15199. SPACE 4,10
  15200. * EQUIVALENCE EXTERNALLY REFERENCED TAGS.
  15201.  
  15202.  
  15203. QUAL *
  15204.  
  15205. ADT EQU /".O"/ADT
  15206. BUFA EQU /".O"/BUFA
  15207. OVERLAY (STAGE FILE FROM ALTERNATE STORAGE.)
  15208. SPF SPACE 4,15
  15209. ** THIS OVERLAY INITIATES A STAGE OPERATION FOR A FILE WHICH
  15210. * IS NOT CURRENTLY RESIDENT ON DISK, BUT WHICH HAS A VALID
  15211. * COPY ON ALTERNATE STORAGE. THIS IS ACCOMPLISHED BY
  15212. * ISSUING A *TDAM* REQUEST TO THE APPROPRIATE EXECUTIVE TO
  15213. * INITIATE STAGING OF THE FILE. THE JOB IS THEN PLACED IN
  15214. * TIMED-EVENT ROLLOUT TO AWAIT COMPLETION OF THE STAGE. THE
  15215. * ORIGINAL *PFM* REQUEST WILL BE REISSUED AUTOMATICALLY WHEN
  15216. * THE JOB ROLLS IN.
  15217.  
  15218.  
  15219. SPF BSS 0 ENTRY
  15220. RJM RMD RESET TO MASTER DEVICE
  15221. RJM CCC CHECK FOR CARTRIDGE COPY
  15222. STD P2 SAVE CARTRIDGE COPY STATUS
  15223. RJM CTC CHECK FOR TAPE COPY
  15224. STD P3 SAVE TAPE COPY STATUS
  15225. RJM UPF UPDATE PFC
  15226.  
  15227. * CHECK ERROR STATUS.
  15228.  
  15229. LDN 0 INDICATE CARTRIDGE STAGING ATTEMPT
  15230. STD P1
  15231. LDD P2
  15232. ZJN SPF5 IF NO ERROR ON CARTRIDGE COPY
  15233. AOD P1 INDICATE TAPE STAGING ATTEMPT
  15234. LDD P3
  15235. ZJN SPF5 IF NO ERROR ON TAPE COPY
  15236.  
  15237. * FILE CANNOT BE STAGED - DETERMINE CORRECT ERROR MESSAGE.
  15238.  
  15239. LDD P2 CHECK CARTRIDGE COPY ERROR STATUS
  15240. SBN 1
  15241. NJN SPF1 IF CARTRIDGE COPY EXISTS
  15242. LDD P3 CHECK TAPE COPY ERROR STATUS
  15243. SBN 1
  15244. NJN SPF1 IF TAPE COPY EXISTS
  15245. ERROR AIO,CH,IW * NO ALTERNATE STORAGE COPY EXISTS.*
  15246.  
  15247. SPF1 LDD P2 CHECK CARTRIDGE COPY ERROR STATUS
  15248. SBN 2
  15249. ZJN SPF2 IF STAGING DISABLED ERROR
  15250. LDD P3 CHECK TAPE COPY ERROR STATUS
  15251. SBN 2
  15252. NJN SPF3 IF NOT STAGING DISABLED ERROR
  15253. SPF2 ERROR SGD,CH,IW * STAGING DISABLED.*
  15254.  
  15255. SPF3 LDD P2 CHECK CARTRIDGE COPY ERROR STATUS
  15256. SBN 3
  15257. NJN SPF4 IF NOT TEMPORARY ERROR
  15258. ERROR TPE,CH,IW *(NAME) TEMPORARY ERROR, TRY LATER.*
  15259.  
  15260. SPF4 ERROR PPE,CH,IW *(FILE NAME) PERMANENT ERROR.*
  15261.  
  15262. * LOOP *MXRL* TIMES ISSUING *TDAM* REQUESTS TO THE EXECUTIVE.
  15263.  
  15264. SPF5 RJM STR SETUP *TDAM* REQUEST
  15265. LDC ART SET ROLLOUT TIME LIMIT
  15266. STM ERRD
  15267. LDN 0 INITIALIZE FOR LOOP
  15268. STD P0
  15269.  
  15270. * CHECK IF STAGING STILL ENABLED.
  15271.  
  15272. SPF6 LDN SSTL CHECK FOR STAGING DISABLED
  15273. CRD CM
  15274. LDD P1
  15275. NJN SPF8 IF TAPE STAGING REQUEST
  15276. LDD CM
  15277. SHN 21-6
  15278. PJN SPF9 IF CARTRIDGE STAGING ENABLED
  15279. SPF7 ERROR SGD,CH,IW *STAGING DISABLED.*
  15280.  
  15281. SPF7.1 LDD CM+1 CHECK FOR *ACS TAPE PF STAGING* ENABLED
  15282. SHN 21-11
  15283. UJN SPF8.1 CHECK IF ENABLED
  15284.  
  15285. SPF8 LDM FCTF,CI
  15286. SHN 21-TFACS
  15287. MJN SPF7.1 IF FILE ON ACS CARTRIDGE TAPE
  15288. LDD CM+1 CHECK FOR *TAPE PF STAGING* ENABLED
  15289. SHN 21-7
  15290. SPF8.1 MJN SPF7 IF STAGING DISABLED
  15291.  
  15292. * ISSUE *TDAM* REQUEST.
  15293.  
  15294. SPF9 LDN 1 SET WRITE FUNCTION
  15295. STD CM+1
  15296. SPFA LDC MTSI SET *MAGNET* SUBSYSTEM ID
  15297. * LDC MFSI (SET *MSS* SUBSYSTEM ID)
  15298. * LDC AFSI (SET *MSE* SUBSYSTEM ID)
  15299. STD CM+2
  15300. LDC 6*100 SET MESSAGE LENGTH
  15301. STD CM+3
  15302. SPFB LDC /MTX/PFTB SET ADDRESS OF *MAGNET* *TDAM* BUFFER
  15303. * LDC MIRE SET ADDRESS OF *MSS*/MSE* *TDAM* BUFFER
  15304. STD CM+4
  15305. MONITOR TDAM ISSUE *TDAM* REQUEST
  15306. LJM SPFC,CM+1 PROCESS ACCORDING TO *TDAM* REQUEST STATUS
  15307.  
  15308. SPFC BSS 0 *TDAM* STATUS PROCESSOR TABLE
  15309. UJN SPF10 (ST=0) *TDAM* REQUEST ACCEPTED
  15310. UJN SPF12 (ST=1) STORAGE MOVE IN PROGRESS
  15311. UJN SPF13 (ST=2) NOT READY FOR DATA
  15312. UJN SPF12 (ST=3) REJECT (NONZERO FIRST WORD)
  15313. UJN SPF13 (ST=4) INACTIVE
  15314.  
  15315. * PROCESS THE (ST=0) NORMAL STATUS CASE OF ACCEPTED REQUEST.
  15316.  
  15317. SPF10 RJM ISM ISSUE REQUEST STAGE MESSAGE
  15318. LDD CC
  15319. LMN CCSP
  15320. ZJN SPF11 IF *STAGEPF* REQUEST
  15321. EXIT PSI,CH,IW,,EC2 *(PFN) STAGE INITIATED.*
  15322.  
  15323. SPF11 EXECUTE 3PU TERMINATE *PFM* WITH NO ERROR STATUS
  15324.  
  15325. * PROCESS THE (ST=1)/(ST=3) STATUS CASES.
  15326.  
  15327. SPF12 AOD P0 TRY *TDAM* *MXRL* TIMES
  15328. SBN MXRL
  15329. ZJN SPF13 IF TIME TO GIVE UP
  15330. PAUSE NE
  15331. LDC 370001+SBNI DELAY
  15332. NJN *-1 IF DELAY NOT EXHAUSTED
  15333. UJP SPF6 CONTINUE REQUEST LOOP
  15334.  
  15335. * PROCESS THE (ST=2)/(ST=4) STATUS CASES.
  15336.  
  15337. SPF13 LDN 0 SET EST ORDINAL FOR EVENT
  15338. STM ERRE
  15339. SPFD LDC MTXE SET WAITING FOR *MAGNET* EVENT
  15340. * LDC MSXE (SET WAITING FOR *MSS* EVENT)
  15341. * LDC ASXE (SET WAITING FOR *MSE* EVENT)
  15342. STM ERRC
  15343. EXIT PWE,CH,IW,,EC1 *(PFN) WAITING FOR SUBSYSTEM.*
  15344. TITLE SUBROUTINES.
  15345. CCC SPACE 4,20
  15346. *** CCC - CHECK FOR CARTRIDGE ALTERNATE STORAGE COPY OF FILE.
  15347. *
  15348. * ENTRY (CI) = ADDRESS OF PFC ENTRY IN BUFFER.
  15349. *
  15350. * EXIT (A) = 0 IF CARTRIDGE COPY AVAILABLE.
  15351. * = 1 IF NO CARTRIDGE COPY EXISTS.
  15352. * = 2 IF COPY EXISTS BUT CARTRIDGE STAGING DISABLED.
  15353. * = 3 IF COPY EXISTS BUT TEMPORARY ERROR FLAG SET.
  15354. * = 4 IF COPY EXISTS BUT PERMANENT ERROR FLAG SET.
  15355. * *AFTMP* ERROR FLAG CLEARED IN PFC, IF PRESENT.
  15356. *
  15357. * USES CM - CM+4.
  15358.  
  15359.  
  15360. CCC4 LDN 1 SET *NO CARTRIDGE COPY EXISTS* STATUS
  15361.  
  15362. CCC SUBR ENTRY/EXIT
  15363. LDM FCAA,CI
  15364. ADM FCAA+1,CI
  15365. ADM FCAA+2,CI
  15366. ZJN CCC4 IF NO CARTRIDGE ALTERNATE STORAGE COPY
  15367. LDM FCAF,CI
  15368. LPK AFOBSM
  15369. NJN CCC4 IF CARTRIDGE COPY OBSOLETE
  15370. LDK SSTL CHECK IF CARTRIDGE STAGING ENABLED
  15371. CRD CM
  15372. LDD CM
  15373. SHN 21-6
  15374. PJN CCC2 IF CARTRIDGE PF STAGING ENABLED
  15375. LDN 2 SET *STAGING DISABLED* STATUS
  15376. CCC1 UJN CCCX RETURN
  15377.  
  15378. * CLEAR CARTRIDGE TEMPORARY ERROR FLAG, IF PRESENT.
  15379.  
  15380. CCC2 LDD CC
  15381. LMN CCSP
  15382. ZJN CCC3 IF *STAGEPF* REQUEST
  15383. LDM FCAF,CI
  15384. LPN AFTMPM
  15385. ZJN CCC3 IF NO TEMPORARY ERROR
  15386. LMM FCAF,CI CLEAR TEMPORARY ERROR FLAG
  15387. STM FCAF,CI
  15388. LDN 3 SET *TEMPORARY ERROR FLAG* STATUS
  15389. UJN CCC1 RETURN
  15390.  
  15391. CCC3 LDM FCAF,CI CHECK FOR CARTRIDGE ERROR FLAGS
  15392. LPN AFPSEM+AFPDEM
  15393. ZJN CCC1 IF NO PERMANENT ERRORS, RETURN *AVAILABLE*
  15394. LDN 4 SET *PERMANENT ERROR FLAG* STATUS
  15395. UJN CCC1 RETURN
  15396. CTC SPACE 4,15
  15397. ** CTC - CHECK FOR TAPE ALTERNATE STORAGE COPY OF FILE.
  15398. *
  15399. * ENTRY (CI) = ADDRESS OF PFC ENTRY IN BUFFER.
  15400. *
  15401. * EXIT (A) = 0 IF TAPE COPY AVAILABLE.
  15402. * = 1 IF NO TAPE COPY EXISTS.
  15403. * = 2 IF COPY EXISTS BUT TAPE STAGING DISABLED.
  15404. * = 3 IF COPY EXISTS BUT *VSN MISSING* FLAG SET.
  15405. * = 4 IF COPY EXISTS BUT *DATA ERROR* FLAG SET.
  15406. *
  15407. * USES T1, CM - CM+4.
  15408. *
  15409. * CALLS STT.
  15410.  
  15411.  
  15412. CTC6 LDN 1 SET *NO COPY EXISTS* STATUS
  15413.  
  15414. CTC SUBR ENTRY/EXIT
  15415. LDM FCTV,CI
  15416. ADM FCTV+1,CI
  15417. ZJN CTC6 IF NO TAPE ALTERNATE STORAGE COPY OF FILE
  15418. LDK SSTL CHECK IF TAPE STAGING IS ENABLED
  15419. CRD CM
  15420. LDM FCTF,CI
  15421. STD T1 SAVE (FCTF)
  15422. SHN 21-TFACS
  15423. MJN CTC0.1 IF FILE ON ACS CARTRIDGE TAPE
  15424. LDD CM+1 CHECK FOR *TAPE PF STAGING* ENABLED
  15425. SHN 21-7
  15426. PJN CTC1 IF TAPE STAGING IS ENABLED
  15427. CTC0 LDN 2 SET *STAGING DISABLED* STATUS
  15428. UJN CTCX RETURN
  15429.  
  15430. CTC0.1 LDD CM+1 CHECK FOR *ACS TAPE PF STAGING* ENABLED
  15431. SHN 21-11
  15432. MJN CTC0 IF ACS TAPE STAGING IS DISABLED
  15433. CTC1 LDD T1
  15434. LPK TFPVNM+TFEPVM
  15435. ZJN CTC5 IF NO ERRORS ON PRIMARY VSN
  15436. LDD T1
  15437. LPK TFSVSM
  15438. NJN CTC4 IF SECONDARY VSN EXISTS
  15439. CTC2 LDD T1
  15440. LPK TFPVNM
  15441. ZJN CTC3 IF PRIMARY VSN AVAILABLE
  15442. LDN 3 SET *VSN NOT AVAILABLE* STATUS
  15443. UJN CTC5.1 RETURN
  15444.  
  15445. CTC3 LDN 4 SET *DATA ERROR* STATUS
  15446. UJN CTC5.1 RETURN
  15447.  
  15448. CTC4 LDD T1
  15449. LPK TFSVNM+TFESVM
  15450. ZJN CTC5 IF NO ERRORS ON SECONDARY VSN
  15451. LPK TFSVNM
  15452. NJN CTC2 IF SECONDARY VSN NOT AVAILABLE
  15453. UJN CTC3 SET *DATA ERROR* STATUS
  15454.  
  15455. CTC5 LDN 0 SET *COPY AVAILABLE* STATUS
  15456. CTC5.1 LJM CTCX RETURN
  15457. GEE SPACE 4,15
  15458. ** GEE - GET EST ORDINAL FOR EVENT.
  15459. *
  15460. * ENTRY (P1) .NE. 0 IF TAPE STAGE REQUEST.
  15461. * (GEEA) PRESET WITH CORRECT EQUIPMENT MNEMONIC.
  15462. *
  15463. * EXIT (T5) = EST ORDINAL FOR EVENT.
  15464. * FOR *MSS* STAGE, ORDINAL OF FIRST *CS* EST.
  15465. * FOR *MSE* STAGE, ORDINAL OF FIRST *SS* EST.
  15466. * FOR TAPE STAGE, ORDINAL OF FIRST *MT*/*NT* EST.
  15467. *
  15468. * USES T5, T6, T0 - T0+4.
  15469. *
  15470. * MACROS ERROR, SFA.
  15471.  
  15472.  
  15473. GEE SUBR ENTRY/EXIT
  15474.  
  15475. * INITIALIZE FOR EST SEARCH.
  15476.  
  15477. LDN ESTP CALCULATE NUMBER OF EST ENTRIES
  15478. CRD T0
  15479. LDN NOPE INITIALIZE EST ORDINAL FOR SEARCH
  15480. STD T5
  15481. LDD T0+2 SAVE LAST EST ORDINAL + 1
  15482. STD T6
  15483.  
  15484. * SEARCH FOR ALTERNATE STORAGE EQUIPMENT.
  15485.  
  15486. GEE1 SFA EST,T5 READ EST ENTRY
  15487. ADK EQDE
  15488. CRD T0
  15489. LDD T0+3 CHECK EQUIPMENT MNEMONIC
  15490. GEEA LMC 2RMT EQUIPMENT MNEMONIC FOR TAPE STAGE
  15491. * LMC 2RCS (EQUIPMENT MNEMONIC FOR *MSS* STAGE)
  15492. * LMC 2RSS (EQUIPMENT MNEMONIC FOR *MSE* STAGE)
  15493. ZJN GEEX IF CORRECT EQUIPMENT MNEMONIC
  15494. LDD P1
  15495. ZJN GEE2 IF NOT TAPE STAGE REQUEST
  15496. LDD T0+3 CHECK EQUIPMENT MNEMONIC AGAIN
  15497. LMC 2RNT OTHER EQUIPMENT MNEMONIC FOR TAPE STAGE
  15498. ZJN GEEX IF CORRECT EQUIPMENT MNEMONIC
  15499. GEE2 AOD T5 ADVANCE EST ORDINAL
  15500. LMD T6
  15501. NJN GEE1 IF NOT END OF EST
  15502. ERROR PFN,CH,IW *DEVICE UNAVAILABLE.*
  15503. ISM SPACE 4,15
  15504. ** ISM - ISSUE REQUEST STAGE MESSAGE.
  15505. *
  15506. * ISSUES AN *STRS* ACCOUNT FILE MESSAGE TO INDICATE THAT THE
  15507. * REQUEST FOR STAGE WAS SENT TO *MAGNET*.
  15508. *
  15509. * ENTRY (CI) = CATALOG INDEX POINTER TO CATALOG ENTRY.
  15510. * (P1) .NE. 0 IF TAPE STAGE REQUEST.
  15511. * (MSTA) = MST ADDRESS/10.
  15512. *
  15513. * EXIT ACCOUNT FILE MESSAGE ISSUED.
  15514. *
  15515. * USES T1, CM - CM+4.
  15516. *
  15517. * CALLS ACS, C2D, DFM.
  15518.  
  15519.  
  15520. ISM SUBR ENTRY/EXIT
  15521. LDD P1
  15522. ISME ZJN ISMX IF NOT TAPE PF STAGE REQUEST
  15523. * PSN (IF OPTICAL DISK REQUEST)
  15524. LDC ISMB+3 INITIALIZE POINTER FOR *ACS* CALLS
  15525. STD T1
  15526.  
  15527. * SET FILENAME INTO MESSAGE.
  15528.  
  15529. LDD CI SET ADDRESS OF CATALOG ENTRY
  15530. RAM ISMA+1
  15531. LDD MA
  15532. ISMA CWM FCFN,ON PFN AND UI
  15533. SBN 1 READ PFN
  15534. CRD CM
  15535. LDD CM+3
  15536. SCN 77
  15537. STD CM+3 CLEAR UI BITS FROM PFN
  15538. LDN CM INSERT FILE NAME IN BUFFER
  15539. RJM ACS
  15540. LDC ISMC APPEND COMMA
  15541. RJM ACS
  15542.  
  15543. * CONVERT USER INDEX TO DISPLAY CODE.
  15544.  
  15545. LDD MA READ UI
  15546. CRD CM
  15547. LDD CM+3
  15548. RJM C2D CONVERT 2 OCTAL DIGITS TO DISPLAY CODE
  15549. STD CM
  15550. LDD CM+4
  15551. SHN -6
  15552. RJM C2D CONVERT 2 OCTAL DIGITS TO DISPLAY CODE
  15553. STD CM+1
  15554. LDD CM+4
  15555. RJM C2D CONVERT 2 OCTAL DIGITS TO DISPLAY CODE
  15556. STD CM+2
  15557.  
  15558. * SUPPRESS LEADING ZEROS ON USER INDEX.
  15559.  
  15560. LDN 0 TERMINATE STRING BUFFER
  15561. STD CM+3
  15562. STD CM+4 CLEAR STARTING BYTE OFFSET
  15563. ISM1 LDM CM,CM+4
  15564. ADC -2R00
  15565. STD T0
  15566. SCN 77
  15567. NJN ISM3 IF UPPER DIGIT IS NON-ZERO
  15568. LDD T0
  15569. LPN 77
  15570. NJN ISM2 IF LOWER DIGIT IS NON-ZERO
  15571. AOD CM+4 INCREMENT OFFSET
  15572. SBN 3
  15573. MJN ISM1 IF ALL BYTES NOT EXAMINED
  15574. SOD CM+4 CORRECT OFFSET
  15575.  
  15576. * SET USER INDEX INTO MESSAGE.
  15577.  
  15578. ISM2 LDM CM,CM+4 LOWER DIGIT OF BYTE IS FIRST DIGIT
  15579. SHN 6
  15580. SCN 77
  15581. STM CM,CM+4
  15582. LDN CM
  15583. ADD CM+4
  15584. RJM ACS APPEND CHARACTERS TO STRING
  15585. AOD CM+4
  15586. SBN 3
  15587. PJN ISM4 IF LAST BYTE WAS SENT
  15588. ISM3 LDN CM
  15589. ADD CM+4
  15590. RJM ACS APPEND CHARACTERS TO STRING
  15591. ISM4 LDC ISMC APPEND COMMA
  15592. RJM ACS
  15593.  
  15594. * SET FAMILY/PACK NAME INTO MESSAGE.
  15595.  
  15596. LDM MSTA READ FAMILY/PACK NAME
  15597. SHN 3
  15598. ADN PFGL
  15599. CRD CM
  15600. LDD CM+3 CLEAR RESERVED FIELD
  15601. SCN 77
  15602. STD CM+3
  15603. LDN CM INSERT FAMILY IN BUFFER
  15604. RJM ACS
  15605. LDC ISMD APPEND TERMINATOR
  15606. RJM ACS
  15607.  
  15608. * ISSUE MESSAGE.
  15609.  
  15610. LDC ISMB+ACFN ISSUE MESSAGE TO ACCOUNT FILE
  15611. RJM DFM
  15612. LJM ISMX RETURN
  15613.  
  15614.  
  15615. ISMB DATA C*STRS, * ACCOUNT FILE MESSAGE BUFFER
  15616. BSSZ 14D
  15617. ISMC DATA 2H, MESSAGE SEPARATOR
  15618. CON 0 END OF STRING
  15619. ISMD DATA 2H. MESSAGE TERMINATOR
  15620. CON 0 END OF STRING
  15621. STR SPACE 4,25
  15622. ** STR - SETUP *TDAM* REQUEST.
  15623. *
  15624. * ENTRY (CB) = CATALOG BUFFER.
  15625. * (CB-1) = CATALOG SECTOR.
  15626. * (CB-2) = CATALOG TRACK.
  15627. * (CI) = CATALOG INDEX POINTER TO CATALOG ENTRY.
  15628. * (EQ) = MASTER DEVICE EST ORDINAL.
  15629. * (FN - FN+4) = FILE NAME.
  15630. * (MSEQ) = ALTERNATE STORAGE EST ORDINAL.
  15631. * (MSTA) = MST ADDRESS/10.
  15632. * (PFPN - PFPN+4) = PERMANENT FILE CONTROL WORD.
  15633. * (PFUI - PFUI+1) = USER INDEX.
  15634. * (P1) .NE. 0 IF TAPE STAGE REQUEST.
  15635. * (UI - UI+1) = USER INDEX.
  15636. *
  15637. * EXIT MESSAGE BUFFER SETUP FOR *TDAM* REQUEST.
  15638. * (ERRE), (ERRC) SET WITH EVENT TO ROLL JOB OUT WITH.
  15639. * (SPFA), (SPFD) SET WITH SUBSYSTEM ID, EVENT.
  15640. * (SPFB) SET WITH SUBSYSTEM *TDAM* BUFFER ADDRESS.
  15641. *
  15642. * USES CM - CM+4, FN - FN+4, T0 - T0+4.
  15643. *
  15644. * CALLS GEE.
  15645.  
  15646.  
  15647. STR SUBR ENTRY/EXIT
  15648.  
  15649. * SET FILE ACCESS LEVEL AND FUNCTION CODE.
  15650.  
  15651. LDM FCAL,CI SET FILE ACCESS LEVEL
  15652. LPN 7
  15653. SHN 3
  15654. LMD HN SET FUNCTION CODE = 1 (TAPE/*MSS*/*MSE*)
  15655. STD CM
  15656. LDN 0
  15657. STD CM+1
  15658. LDD P1
  15659. NJP STR1.2 IF TAPE STAGE REQUEST
  15660. LDM FCAT,CI GET ALTERNATE STORAGE TYPE
  15661. LPN 77B
  15662. STD T1
  15663. SBN ATOD
  15664. NJN STR1 IF NOT OPTICAL STORAGE
  15665. LDD HN SET FUNCTION CODE = 2 (OPTICAL DISK)
  15666. RAD CM
  15667. ISTORE ISME,(PSN) SET *ISM* TO ISSUE OPTICAL STAGE MESSAGE
  15668. LDC 2RSO
  15669. STM ISMB
  15670. UJN STR1.1 SET SUBSYSTEM INFORMATION
  15671.  
  15672. STR1 LDC MIRE SET *MSS*/*MSE* *TDAM* BUFFER ADDRESS
  15673. STM SPFB+1
  15674. ERRPL MIRE-10000B CODE DEPENDS ON VALUE
  15675.  
  15676. * SET SUBSYSTEM ID AND SUBSYSTEM EVENT.
  15677.  
  15678. STR1.1 LDM STRC,T1 SET ALTERNATE STORAGE SUBSYSTEM ID
  15679. STM SPFA+1
  15680. LDM STRD,T1 SET ALTERNATE STORAGE SUBSYSTEM EVENT
  15681. STM SPFD+1
  15682. LDM STRE,T1 SET ALTERNATE STORAGE EQUIPMENT TYPE
  15683. STM GEEA+1
  15684.  
  15685. * SET *PEO* AND *DN*.
  15686.  
  15687. STR1.2 LDD CI OFFSET INTO CATALOG SECTOR
  15688. SBD CB
  15689. SBN 2
  15690. SHN -NWCES CALCULATE *PEO* VALUE
  15691. LPN 1S"NWCEM"-1
  15692. SHN 6 POSITION FOR *TDAM* REQUEST
  15693. STD CM+2
  15694. LDM MSTA GET DEVICE NUMBER
  15695. SHN 3
  15696. ADN PFGL
  15697. CRD T0
  15698. LDD T0+3
  15699. LPN 77
  15700. RAD CM+2 COMBINE *PEO* WITH *DN*
  15701.  
  15702. * SET FLAGS FOR CARTRIDGE OR OPTICAL STAGE.
  15703.  
  15704. LDD P1
  15705. NJN STR2 IF TAPE STAGE REQUEST
  15706. LDM FCAF,CI GET ALTERNATE STORAGE FLAGS
  15707. LPC AFPDRM+AFVERM+AFFREM
  15708. SHN 13-6 COMBINE WITH PEO AND DN
  15709. RAD CM+2
  15710.  
  15711. * SET CATALOG TRACK AND SECTOR.
  15712.  
  15713. STR2 LDM -2,CB SET CATALOG TRACK ADDRESS
  15714. STD CM+3
  15715. LDM -1,CB SET CATALOG SECTOR ADDRESS
  15716. STD CM+4
  15717. LDD MA TDAM+0 INTO MESSAGE BUFFER
  15718. CWD CM
  15719.  
  15720. * SET *AT* AND *ASA* FOR CARTRIDGE OR OPTICAL DISK STAGE.
  15721.  
  15722. LDD P1
  15723. NJN STR3 IF TAPE STAGE REQUEST
  15724. LDN 0 CLEAR RESERVED FIELD
  15725. STD CM
  15726. LDM FCAT,CI SET ALTERNATE STORAGE TYPE
  15727. LPN 77
  15728. STD CM+1
  15729. LDM FCAA,CI SET ALTERNATE STORAGE ADDRESS (ASA)
  15730. STD CM+2
  15731. LDM FCAA+1,CI
  15732. STD CM+3
  15733. LDM FCAA+2,CI
  15734. STD CM+4
  15735. LDD MA TDAM+1 INTO MESSAGE BUFFER
  15736. ADN 1
  15737. CWD CM
  15738. UJN STR4 PROCESS NEXT WORD
  15739.  
  15740. * SET FLAGS, FILE SEQUENCE NUMBER AND VSN FOR TAPE STAGE.
  15741.  
  15742. STR3 LDD CI SET ADDRESS OF CATALOG ENTRY
  15743. RAM STRA+1
  15744. LDD MA TDAM+1 INTO MESSAGE BUFFER
  15745. ADN 1
  15746. STRA CWM FCTF,ON
  15747.  
  15748. * SET PERMANENT FILE NAME AND USER INDEX.
  15749.  
  15750. STR4 LDD CI SET ADDRESS OF CATALOG ENTRY
  15751. RAM STRB+1
  15752. LDD MA TDAM+2 INTO MESSAGE BUFFER
  15753. ADN 2
  15754. STRB CWM FCFN,ON
  15755.  
  15756. * SET JSN.
  15757.  
  15758. LDD CP FETCH EJT ORDINAL
  15759. ADN TFSW
  15760. CRD CM
  15761. SFA EJT,CM READ JOB SEQUENCE NUMBER
  15762. ADK JSNE
  15763. CRD CM
  15764. LDN 0
  15765. STD CM+2
  15766.  
  15767. * SET EVENT FOR CARTRIDGE STAGE.
  15768.  
  15769. RJM GEE GET EST ORDINAL FOR EVENT
  15770. LDD T5
  15771. STD CM+3
  15772. STM ERRE
  15773. LDD P1
  15774. NJN STR5 IF TAPE STAGE REQUEST
  15775. LDM FCAA,CI SET FOLDED ASA IN EVENT
  15776. LMM FCAA+1,CI
  15777. LMM FCAA+2,CI
  15778. UJN STR6 SET EVENT
  15779.  
  15780. * SET EVENT FOR TAPE STAGE.
  15781.  
  15782. STR5 LDM -2,CB FOLD CATALOG TRACK AND SECTOR FOR EVENT
  15783. SHN 6
  15784. LMM -1,CB
  15785. STR6 STD CM+4 SET EVENT
  15786. STM ERRC
  15787. LDD MA TDAM+3 INTO MESSAGE BUFFER
  15788. ADN 3
  15789. CWD CM
  15790.  
  15791. * SET FAMILY/PACK NAME AND MASTER DEVICE EST ORDINAL.
  15792.  
  15793. LDD P1
  15794. NJN STR7 IF TAPE STAGE REQUEST
  15795. LDC LDNI+0 PREVENT EST ORDINAL STORE
  15796. STM STRF
  15797. STR7 LDM MSTA READ FAMILY/PACK NAME
  15798. SHN 3
  15799. ADN PFGL
  15800. CRD CM
  15801. LDD CM+3 CLEAR RESERVED FIELD
  15802. SCN 77
  15803. STD CM+3
  15804. STRF LDD EQ SET MASTER DEVICE EST ORDINAL
  15805. * LDN 0 (CARTRIDGE STAGE REQUEST)
  15806. STD CM+4
  15807. LDD MA TDAM+4 INTO MESSAGE BUFFER
  15808. ADN 4
  15809. CWD CM
  15810.  
  15811. * SET FILE LENGTH AND CREATION DATE/TIME.
  15812.  
  15813. LDM FCLF,CI SET FILE LENGTH
  15814. STD CM
  15815. LDM FCLF+1,CI
  15816. STD CM+1
  15817. LDM FCBS,CI GET IAPF/DAPF INDICATOR FROM SECTOR FIELD
  15818. LPC 4000B
  15819. LMC 4000B
  15820. RAD CM SET TDAM BLOCK *I* FIELD IF IAPF
  15821. LDM FCCD,CI TRANSFER CREATION DATE AND TIME FOR TDAM
  15822. STD CM+2
  15823. LDM FCCD+1,CI
  15824. STD CM+3
  15825. LDM FCCD+2,CI
  15826. STD CM+4
  15827. LDD MA TDAM+5 INTO MESSAGE BUFFER
  15828. ADN 5
  15829. CWD CM
  15830. LJM STRX RETURN
  15831.  
  15832.  
  15833. STRC INDEX ALTERNATE STORAGE SUBSYSTEM ID-S
  15834. INDEX ATMS,MFSI *MSS*
  15835. INDEX ATAS,ASSI *MSE*
  15836. INDEX ATOD,MTSI *MAGNET*
  15837. INDEX ATMAX+1
  15838.  
  15839. STRD INDEX ALTERNATE STORAGE EXECUTIVE EVENTS
  15840. INDEX ATMS,MSXE *MSS*
  15841. INDEX ATAS,ASXE *MSE*
  15842. INDEX ATOD,MTXE *MAGNET*
  15843. INDEX ATMAX+1
  15844.  
  15845. STRE INDEX ALTERNATE STORAGE EQUIPMENT MNEMONICS
  15846. INDEX ATMS,2RCS *MSS*
  15847. INDEX ATAS,2RSS *MSE*
  15848. INDEX ATOD,2ROD *MAGNET* - OPTICAL DISK
  15849. INDEX ATMAX+1
  15850. UPF SPACE 4,25
  15851. ** UPF - UPDATE PFC ON USER ACCESS.
  15852. *
  15853. * ON A USER ACCESS WITH NO ERRORS, UPDATE THE LAST ACCESS
  15854. * DATE AND TIME IN THE PFC TO PREVENT THE IMMEDIATE RELEASE
  15855. * OF THE FILE BEFORE IT CAN BE ACCESSED. IF ERRORS WERE
  15856. * DETECTED, ONLY UPDATE THE PFC TO CLEAR *AFTPE* (IF PRESENT).
  15857. *
  15858. * ENTRY (CB) = CATALOG BUFFER ADDRESS.
  15859. * (CC) = COMMAND CODE.
  15860. * (CI) = ADDRESS OF PFC ENTRY IN BUFFER.
  15861. * (P2) = CARTRIDGE COPY ERROR STATUS.
  15862. * (P3) = TAPE COPY ERROR STATUS.
  15863. *
  15864. * EXIT LAST ACCESS DATE AND TIME UPDATED IN THE PFC.
  15865. * *ENDMS* PERFORMED.
  15866. * CATALOG INTERLOCK CLEARED.
  15867. *
  15868. * USES CM - CM+4.
  15869. *
  15870. * CALLS CCI, WBI.
  15871. *
  15872. * MACROS ENDMS.
  15873.  
  15874.  
  15875. UPF SUBR ENTRY/EXIT
  15876. LDD CC
  15877. LMN CCSP
  15878. ZJN UPFX IF *STAGEPF* REQUEST
  15879. LDD P3
  15880. ZJN UPF1 IF NO TAPE COPY ERRORS
  15881. LDD P2
  15882. ZJN UPF1 IF NO CARTRIDGE COPY ERRORS
  15883. SBN 3
  15884. ZJN UPF2 IF TEMPORARY ERROR ON CARTRIDGE COPY
  15885. UJN UPF3 CLEAR INTERLOCK AND RETURN
  15886.  
  15887. UPF1 LDN PDTL UPDATE LAST ACCESS DATE AND TIME
  15888. CRD CM
  15889. LDD CM+2
  15890. STM FCAD,CI
  15891. LDD CM+3
  15892. STM FCAD+1,CI
  15893. LDD CM+4
  15894. STM FCAD+2,CI
  15895. UPF2 LDD CB REWRITE CATALOG
  15896. RJM WBI
  15897. UPF3 ENDMS
  15898. RJM CCI CLEAR CATALOG INTERLOCK
  15899. UJN UPFX RETURN
  15900. SPACE 4,10
  15901. * COMMON DECKS.
  15902.  
  15903.  
  15904. *CALL COMPACS
  15905. *CALL COMPC2D
  15906. EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT
  15907. *CALL COMPGFP
  15908. SPACE 4,10
  15909. * CHECK FOR OVERFLOW.
  15910.  
  15911.  
  15912. OVERFLOW OVLC,BUF1-2 OVERFLOW INTO CATALOG BUFFER
  15913. OVERLAY (CPU FILE TRANSFER.),OVLU
  15914. SPACE 4,10
  15915. *** THIS OVERLAY PROCESSES THE TRANSFER OF INDIRECT ACCESS
  15916. * FILES VIA THE CPU.
  15917.  
  15918.  
  15919. OVL BSS 0 ENTRY
  15920. LDD CC CHECK COMMAND CODE
  15921. LMK CCRS
  15922. ZJN OVL1 IF *RPFSTAT* REQUEST
  15923. RJM SCP SET UP CPU PARAMETERS
  15924. RJM SCF SET UP COMMUNICATION FILES
  15925. RJM PWS PREWRITE SYSTEM SECTOR AND EOI
  15926. OVL1 RJM IDR INITIATE *DMP=* AND SET UP RECALL REQUEST
  15927. EXECUTE 3PU RECALL *PFM*
  15928. TITLE SUBROUTINES.
  15929. IDR SPACE 4,20
  15930. ** IDR - INITIATE *DMP=* AND SET UP *PFM* RECALL REQUEST.
  15931. *
  15932. * ENTRY (CC) = COMMAND CODE.
  15933. * (EQ) = MASTER EST ORDINAL.
  15934. * (CPFB) = *CPUPFM* CALL BLOCK IF NOT *RPFSTAT*
  15935. * REQUEST.
  15936. * (PWRF) = *PFM* RESTART FLAGS FOR RECALL.
  15937. *
  15938. * EXIT (CN - CN+4) = INPUT REGISTER FOR *PFM* RECALL.
  15939. * (FN - FN+4) = RECALL REQUEST FOR MONITOR.
  15940. * (MP - MP+4) = PARAMETER WORD FOR *PFM* RECALL.
  15941. * (STAU) = *STRP* BIT SET TO RECALL *PFM*.
  15942. * *DMP=* ROLLOUT INITIATED, IF NO TAPE ACTIVITY PENDING.
  15943. *
  15944. * USES T1, CM - CM+4.
  15945. *
  15946. * MACROS MONITOR.
  15947.  
  15948.  
  15949. IDR SUBR ENTRY/EXIT
  15950.  
  15951. * INITIATE *DMP=*.
  15952.  
  15953. LDD CC CHECK COMMAND CODE
  15954. LMK CCRS
  15955. NJN IDR1 IF NOT *RPFSTAT* REQUEST
  15956. LDM PWCC RESET ORIGINAL COMMAND CODE
  15957. STD CC
  15958. UJN IDR2 SET ORIGINAL CODE FOR *DMP=* CALL
  15959.  
  15960. IDR1 LDN CPFBL WRITE *CPUPFM* PARAMETER BLOCK TO NFL
  15961. STD T1
  15962. NFA DMPN
  15963. CWM CPFB,T1
  15964. LDD CC SET COMMAND CODE FOR *DMP=* CALL
  15965. IDR2 STM IDRA+4
  15966. LDD CP CHECK CONTROL POINT ACTIVITY
  15967. ADK STSW
  15968. CRD CM
  15969. LDD CM+4
  15970. SHN -4
  15971. LPN 17
  15972. NJN IDR3 IF TAPE ACTIVITY PENDING
  15973. LDD CP SET *DMP=* CALL
  15974. ADK SPCW
  15975. CWM IDRA,ON
  15976. LDN SAPS SET *CPUPFM* ACTIVE STATUS
  15977. STD CM+1
  15978. MONITOR SJCM
  15979. LDN ZERL START *DMP=* ROLLOUT
  15980. CRD CM
  15981. LDK ROSR
  15982. STD CM+1
  15983. MONITOR ROCM
  15984.  
  15985. * SET UP *PFM* RECALL REQUEST.
  15986.  
  15987. IDR3 LDD IA SET INPUT REGISTER
  15988. CRD CN
  15989. LDN ZERL
  15990. CRD FN SET RECALL REQUEST
  15991. CRD MP SET PARAMETER WORD
  15992. LDM PWRF RESTART FLAGS
  15993. STD MP
  15994. LDD CC ORIGINAL COMMAND CODE
  15995. STD MP+2
  15996. LDD EQ MASTER EST ORDINAL
  15997. STD MP+3
  15998. LDD CN+2 SET UP *CCRS* REQUEST IN RECALL STACK
  15999. SCN 77
  16000. LMN CCRS
  16001. STD CN+2
  16002. LDC PTMF TIMED RECALL
  16003. STD FN+1
  16004. LDC 200D RECALL FOR 200D MILLISECONDS
  16005. STD FN+4
  16006. LDK STRP SET *RECALL PFM* STATUS BIT
  16007. RAM STAU
  16008. LJM IDRX RETURN
  16009.  
  16010.  
  16011. IDRA VFD 18/3LCPF,6/30B,18/0,18/0 *CPUPFM* CALL WORD
  16012. PWS SPACE 4,15
  16013. ** PWS - PREWRITE SYSTEM SECTOR AND EOI.
  16014. *
  16015. * ENTRY (EQ) = MASTER DEVICE EST ORDINAL.
  16016. * (FNTB) = FNT ADDRESS OF PERMANENT FILE.
  16017. * (LF - LF+1) = LENGTH OF PERMANENT FILE.
  16018. * (MSTA) = MASTER DEVICE MST ADDRESS/10.
  16019. * (PFCB) = BUFFER CONTAINING COPY OF PFC.
  16020. * (SDAB) = FIRST TRACK OF PERMANENT FILE.
  16021. * (SDAC) = FIRST SECTOR OF PERMANENT FILE.
  16022. *
  16023. * EXIT TO *HNG* IF INDIRECT CHAIN TRUNCATED.
  16024. *
  16025. * USES FA, T1, FS - FS+4, RI - RI+1.
  16026. *
  16027. * CALLS CRA, PDV, WEI, WSS.
  16028. *
  16029. * MACROS ENDMS, ERROR, MONITOR, SETMS.
  16030.  
  16031.  
  16032. PWS SUBR ENTRY/EXIT
  16033. LDD CC
  16034. LMN CCGT
  16035. ZJN PWSX IF *GET*
  16036. LMN CCOD&CCGT
  16037. ZJN PWSX IF *OLD*
  16038. LDD EQ SET SYSTEM SECTOR ADDRESS
  16039. STD T5
  16040. LDM SDAB
  16041. STD T6
  16042. LDM SDAC
  16043. STD T7
  16044. LDM FNTB READ FST
  16045. STD FA
  16046. NFA FA,R
  16047. ADK FSTL
  16048. CRD FS
  16049.  
  16050. * INITIALIZE BUFFER FOR SYSTEM SECTOR AND EOI.
  16051.  
  16052. LDC 502-1 CLEAR BUFFER
  16053. STD T1
  16054. PWS2 LDN 0 CLEAR NEXT BYTE
  16055. STM BFMS,T1
  16056. SOD T1
  16057. PJN PWS2 IF MORE TO CLEAR
  16058. LDC 5*NWCE-1 COPY PFC TO BUFFER
  16059. STD T1
  16060. PWS3 LDM PFCB,T1 COPY NEXT BYTE
  16061. STM CTSS,T1
  16062. SOD T1
  16063. PJN PWS3 IF MORE TO COPY
  16064. LDM STAT
  16065. LPK STEC
  16066. ZJN PWS4 IF NOT APPEND TO END OF CHAIN
  16067. LDN PSNI ALLOW FOR LACK OF SYSTEM SECTOR
  16068. STM PWSA
  16069. UJN PWS6 SKIP SYSTEM SECTOR WRITE
  16070.  
  16071. * WRITE SYSTEM SECTOR.
  16072.  
  16073. PWS4 SETMS IO,NS
  16074. RJM PDV PROCESS DEVICE STATUS
  16075. LDM CBFN+4
  16076. LPN FGIA
  16077. NJN PWS5 IF EXTENDING INDIRECTS ON BUFFERED DEVICE
  16078. SETMS IO,(RW,NS)
  16079. RJM PDV PROCESS DEVICE STATUS
  16080. PWS5 RJM WSS WRITE SYSTEM SECTOR
  16081. MJP PWS8 IF WRITE ERROR
  16082. ENDMS
  16083.  
  16084. * DETERMINE EOI LOCATION AND WRITE EOI SECTOR.
  16085.  
  16086. PWS6 LDM CBFN+4
  16087. LPN FGIA
  16088. NJP PWSX IF EXTENDING INDIRECTS ON BUFFERED DEVICE
  16089. LDM SDAB RESET FIRST TRACK
  16090. STD T6
  16091. LDD LF+1 GET NUMBER OF DATA SECTORS
  16092. STD RI+1
  16093. LDD LF
  16094. STD RI
  16095. LDM SDAC ADD RANDOM ADDRESS OF FIRST SECTOR
  16096. PWSA ADN 1 ADD ONE FOR SYSTEM SECTOR
  16097. * PSN (APPEND TO END OF CHAIN)
  16098. RAD RI+1 RANDOM ADDRESS OF EOI FROM START OF TRACK
  16099. SHN -14
  16100. RAD RI
  16101. RJM CRA CONVERT RANDOM ADDRESS TO TRACK AND SECTOR
  16102. MJN PWS7 IF ERROR IN CONVERSION
  16103. SETMS IO,(RW,NS)
  16104. RJM PDV PROCESS DEVICE STATUS
  16105. LDC BFMS WRITE EOI SECTOR
  16106. RJM WEI
  16107. MJN PWS8 IF MASS STORAGE ERROR
  16108. ENDMS
  16109. LJM PWSX RETURN
  16110.  
  16111. PWS7 RJM HNG HANG IF INDIRECT CHAIN TRUNCATED
  16112.  
  16113. PWS8 ERROR MSE,CH,,T5,,EI *EQXXX,DNYY, MASS STORAGE ERROR.*
  16114. SCF SPACE 4,20
  16115. ** SCF - SET UP COMMUNICATION FILES.
  16116. *
  16117. * ENTRY (FNTA) = LOCAL FILE FNT ADDRESS.
  16118. * (FNTB) = /PFM*PFN/ FNT ADDRESS.
  16119. * (FNTC) = /PFM*ILK/ FNT ADDRESS.
  16120. * (FNTD) = /PFM*APF/ FNT ADDRESS.
  16121. * (CC) = COMMAND CODE.
  16122. *
  16123. * EXIT FNT ENTRIES UPDATED FOR COMMUNICATION FILES.
  16124. * /PFM*APF/ RETURNED IF NOT NEEDED.
  16125. * DRIVER RESET FOR MASTER DEVICE.
  16126. *
  16127. * USES FA, CM - CM+4, FN - FN+4, FS - FS+4.
  16128. *
  16129. * CALLS RMD, *0DF*.
  16130. *
  16131. * MACROS EXECUTE, NFA.
  16132.  
  16133.  
  16134. SCF SUBR ENTRY/EXIT
  16135.  
  16136. * SET UP /PFM*PFN/ FILE TO POINT TO PERMANENT FILE.
  16137.  
  16138. LDM FNTB SET FNT ADDRESS
  16139. STD FA
  16140. NFA FA,R
  16141. ADK FNTL
  16142. CRD FN
  16143. LDD CC
  16144. LMN CCGT
  16145. ZJN SCF1 IF *GET* REQUEST
  16146. LMN CCOD&CCGT
  16147. NJN SCF2 IF NOT *OLD* REQUEST
  16148. SCF1 LDD FN+3 SET WRITE LOCKOUT BIT IN FNT
  16149. SCN 1
  16150. LMN 1
  16151. STD FN+3
  16152. SCF2 LDN 10 SET *UPDATE* MODE
  16153. RAD FN+3
  16154. LDC 100*LIFT SET *LIFT* FILE TYPE
  16155. STD FN+4
  16156. LDD EQ SET UP FST
  16157. STD FS
  16158. SCFC LDC * SET FIRST TRACK OF FILE
  16159. * LDC (SDAB) (NORMAL TRANSFER)
  16160. * LDC (PFCB+FCBT) (APPEND TO END OF CHAIN)
  16161. * LDC (DVLW) (EXTENDING CHAIN ON BUFFERED DEVICE)
  16162. STD FS+1
  16163. SCFA LDC * SET CURRENT TRACK
  16164. STD FS+2
  16165. SCFB LDC * SET SECTOR
  16166. STD FS+3
  16167. LDN 5 SET STATUS
  16168. STD FS+4
  16169. LDM IAIF
  16170. ZJN SCF3 IF INDIRECT ALLOCATION INTERLOCK NOT SET
  16171. LDC 1000
  16172. RAD FS+4 SET TRACK INTERLOCK FLAG FOR FNT
  16173. LDN 0 CLEAR INDIRECT ALLOCATION INTERLOCK FLAG
  16174. STM IAIF
  16175. LDN FGIA SET *CPUPFM* INDIRECT ALLOCATION FLAG
  16176. RAM CBFN+4
  16177. LDD FN+3 CLEAR *UPDATE* MODE
  16178. SCN 10
  16179. STD FN+3
  16180. SCF3 NFA FA,R REWRITE FNT
  16181. ADK FNTL
  16182. CWD FN
  16183. ADK FSTL-FNTL
  16184. CWD FS
  16185.  
  16186. * SET UP /PFM*ILK/ FILE TO POINT TO CATALOG TRACK.
  16187.  
  16188. LDM FNTC SET FNT ADDRESS
  16189. STD FA
  16190. NFA FA,R READ FNT WORDS
  16191. ADK FNTL
  16192. CRD FN
  16193. ADN FUTL-FNTL
  16194. CRD CM
  16195. LDN ZERL
  16196. CRD FS
  16197. LDD FN+3 SET WRITE LOCKOUT BIT IN FNT
  16198. SCN 1
  16199. LMN 1
  16200. STD FN+3
  16201. LDC 100*LIFT *LIFT* FILE TYPE
  16202. STD FN+4
  16203. LDD EQ SET MASTER DEVICE (CATALOG) EST ORDINAL
  16204. STD FS
  16205. LDM CCIA SET CATALOG TRACK
  16206. STD FS+1
  16207. LDC 1005 STATUS (INCLUDING TRACK INTERLOCK BIT)
  16208. STD FS+4
  16209. SOM CCIB PREVENT CLEAR OF CATALOG TRACK INTERLOCK
  16210. LDN 10 SET PF ACTIVITY FLAG
  16211. RAD CM+2
  16212. LDN 0 PREVENT PF ACTIVITY DECREMENT IN *DPP*
  16213. STM EPFA
  16214. NFA FA,R REWRITE FNT
  16215. ADK FNTL
  16216. CWD FN
  16217. ADN FSTL-FNTL
  16218. CWD FS
  16219. ADN FUTL-FSTL
  16220. CWD CM
  16221.  
  16222. * UNLOAD /PFM*APF/ FILE, IF PRESENT AND NOT NEEDED.
  16223.  
  16224. LDM FNTD GET FNT ADDRESS
  16225. STD FA
  16226. ZJN SCF4 IF NO /PFM*APF/ FILE
  16227. LDM STAT
  16228. LPC STEC
  16229. ZJN SCF5 IF NOT APPEND TO END OF CHAIN
  16230. LDN 1
  16231. STM OVL0-1
  16232. EXECUTE 0DF,OVL0
  16233. LDN 0 CLEAR FNT ADDRESS
  16234. STM FNTD
  16235. RJM RMD RESET TO MASTER DEVICE
  16236. SCF4 LJM SCFX RETURN
  16237.  
  16238. * SET UP /PFM*APF/ FILE TO POINT TO ORIGINAL FILE ON *APPEND*.
  16239.  
  16240. SCF5 NFA FA,R READ FNT WORD
  16241. ADK FNTL
  16242. CRD FN
  16243. LDD FN+3 SET WRITE LOCKOUT BIT IN FNT
  16244. SCN 1
  16245. LMN 1
  16246. STD FN+3
  16247. LDC 100*LIFT SET *LIFT* FILE TYPE
  16248. STD FN+4
  16249. LDD EQ SET MASTER DEVICE EST ORDINAL
  16250. STD FS
  16251. LDM FCBT,CI SET FIRST TRACK OF FILE
  16252. STD FS+1
  16253. LDM APTK SET CURRENT TRACK
  16254. STD FS+2
  16255. STD T6
  16256. LDM APSC
  16257. STD FS+3
  16258. AOD FS+3 SET TO FIRST DATA SECTOR
  16259. LMM SLM
  16260. NJN SCF6 IF NOT AT END OF TRACK
  16261. STD FS+3 SET TO SECTOR ZERO
  16262. RJM SNT SET NEXT TRACK
  16263. STD FS+2
  16264. SCF6 LDN 5 SET STATUS
  16265. STD FS+4
  16266. NFA FA,R REWRITE FNT WORDS
  16267. ADK FNTL
  16268. CWD FN
  16269. ADN FSTL-FNTL
  16270. CWD FS
  16271. LJM SCFX RETURN
  16272. SCP SPACE 4,15
  16273. ** SCP - SET UP CPU PARAMETERS.
  16274. *
  16275. * ENTRY (CB) = ADDRESS OF OLD CATALOG BUFFER.
  16276. * (CI) = ADDRESS OF OLD CATALOG ENTRY IN BUFFER.
  16277. * (FNTA) = FNT ADDRESS OF LOCAL FILE.
  16278. * (IAIF) = INDIRECT ALLOCATION INTERLOCK FLAG.
  16279. * (MSTA) = MASTER DEVICE MST ADDRESS/10.
  16280. * (PFCA) = ADDRESS OF NEW CATALOG ENTRY IN BUFFER.
  16281. *
  16282. * EXIT (CPFB) = BUFFER CONTAINING CPU TRANSFER PARAMETERS.
  16283. * (PFCB) = BUFFER CONTAINING COPY OF NEW PFC ENTRY.
  16284. * (CRAA) PRESET.
  16285. * (SNTA) PRESET.
  16286. * (SRAA) PRESET.
  16287. *
  16288. * USES T1, T6, T7.
  16289. *
  16290. * CALLS RMD, SNT, SRA.
  16291.  
  16292.  
  16293. SCP SUBR ENTRY/EXIT
  16294. RJM RMD RESET TO MASTER DEVICE
  16295. LDM MSTA CALCULATE FWA OF TRT
  16296. SHN 3
  16297. ADN TRLL
  16298. RJM CTA
  16299. SBD TH
  16300. STM CRAA+1 PRESET *COMPCRA*, *COMPSNT* AND *COMPSRA*
  16301. STM SNTA+1
  16302. STM SRAA+1
  16303. SHN -14
  16304. LMC ADCI
  16305. STM CRAA
  16306. STM SNTA
  16307. STM SRAA
  16308.  
  16309. * SAVE COPY OF NEW PFC FOR SYSTEM SECTOR.
  16310.  
  16311. LDM PFCA GET PFC ADDRESS
  16312. STM SCPA
  16313. LDC 5*NWCE-1
  16314. STD T1
  16315. SCP1 LDM *,T1 COPY NEXT BYTE
  16316. SCPA EQU *-1
  16317. STM PFCB,T1
  16318. SOD T1
  16319. PJN SCP1 IF MORE BYTES TO COPY
  16320.  
  16321. * SET LOCAL FILE NAME AND FILE LENGTH(S).
  16322.  
  16323. NFA FNTA,R SET FILE NAME
  16324. ADK FNTL
  16325. CRM CBFN,ON
  16326. LDM CBFN+3 CLEAR STATUS FIELD
  16327. SCN 77
  16328. STM CBFN+3
  16329. LDN 0
  16330. STM CBFN+4
  16331. LDD LF+1 SET UP FILE LENGTHS
  16332. STM CBLF+4
  16333. LDD LF
  16334. STM CBLF+3
  16335. LDM APLF+1
  16336. STM CBLF+2
  16337. LDM APLF
  16338. STM CBLF+1
  16339. LDN 0
  16340. STM CBLF
  16341.  
  16342. * CALCULATE FIRST DATA TRACK AND SECTOR.
  16343.  
  16344. LDM SDAB SET TRACK
  16345. STD T6
  16346. STM SCFC+1
  16347. STM SCPC+1
  16348. LDM SDAC SET SECTOR
  16349. STD T7
  16350. LDM STAT
  16351. LPC STEC
  16352. ZJN SCP3.1 IF NOT *APPEND* TO END OF CHAIN
  16353. LDM PFCB+FCBT SET CORRECT FIRST TRACK
  16354. STM SCFC+1
  16355. STM SCPC+1
  16356. UJN SCP4 SAVE TRACK AND SECTOR
  16357.  
  16358. SCP3.1 AOD T7 ADVANCE TO FIRST DATA SECTOR
  16359. LMM SLM
  16360. NJN SCP4 IF NOT AT END OF TRACK
  16361. STD T7 SET TO SECTOR ZERO
  16362. RJM SNT SET NEXT TRACK
  16363. STD T6
  16364. SCP4 LDD T6 SAVE TRACK
  16365. STM SCFA+1
  16366. LDD T7 SAVE SECTOR
  16367. STM SCFB+1
  16368.  
  16369. * CALCULATE RANDOM ADDRESS OF PERMANENT FILE.
  16370.  
  16371. LDM IAIF
  16372. ZJN SCP4.1 IF NOT EXTENDING CHAIN ON BUFFERED DEVICE
  16373. LDM DVLW SET CORRECT FIRST TRACK FOR FST
  16374. STM SCFC+1
  16375. UJN SCP5 SET *PFID* OF OLD CATALOG
  16376.  
  16377. SCP4.1 LDD CC
  16378. LMN CCGT
  16379. ZJN SCP6 IF *GET* REQUEST
  16380. LMN CCOD&CCGT
  16381. ZJN SCP6 IF *OLD* REQUEST
  16382. SCPC LDC * CALCULATE RANDOM ADDRESS
  16383. * LDC (SDAB) (TRANSFER WITHIN CHAIN)
  16384. * LDC (PFCB+FCBT) (APPEND TO END OF CHAIN)
  16385. RJM SRA
  16386. LDD RI
  16387. STM CBRI+3
  16388. LDD RI+1
  16389. STM CBRI+4
  16390.  
  16391. * SET *PFID* OF OLD CATALOG INTO PARAMETER BLOCK (*APPEND*).
  16392.  
  16393. SCP5 LDD CC
  16394. LMN CCAP
  16395. ZJN SCP7 IF *APPEND* REQUEST
  16396. SCP6 LJM SCPX RETURN
  16397.  
  16398. SCP7 LDM STAT
  16399. LPC STEC
  16400. NJN SCP6 IF APPEND TO END OF CHAIN
  16401. LDM -2,CB SET TRACK
  16402. STM CBID+3
  16403. LDM -1,CB SET SECTOR
  16404. STM CBID+4
  16405. LDM MSTA SET FAMILY NAME
  16406. SHN 3
  16407. ADN PFGL
  16408. CRM CBFM,ON
  16409. LDM CBFM+3 SET DEVICE NUMBER
  16410. LPN 77
  16411. STM CBID+2
  16412. LDD CI CALCULATE PFC ENTRY ORDINAL (PEO)
  16413. SBD CB
  16414. SBN 2
  16415. SHN -NWCES
  16416. LPN 1S"NWCEM"-1
  16417. SHN 6 SET PEO
  16418. RAM CBID+2
  16419. LDN 2 COPY CREATION DATE/TIME
  16420. STD T1
  16421. LDD CI
  16422. RAM SCPB
  16423. SCP8 LDM FCCD,T1 COPY NEXT BYTE
  16424. SCPB EQU *-1
  16425. STM CBCD+2,T1
  16426. SOD T1
  16427. PJN SCP8 IF MORE BYTES TO COPY
  16428. LDM CBUI+3 SET USER INDEX
  16429. SCN 77
  16430. LMD UI
  16431. STM CBUI+3
  16432. LDD UI+1
  16433. STM CBUI+4
  16434. LJM SCPX RETURN
  16435. SPACE 4,10
  16436. * WORKING STORAGE AND BUFFERS.
  16437.  
  16438. * BUFFERS.
  16439.  
  16440. PFCB BSS 5*NWCE PFC SAVE BUFFER
  16441. CPFB BSSZ 5*CPFBL *CPUPFM* PARAMETER BLOCK BUFFER
  16442.  
  16443. * LOCATIONS WITHIN *CPFB* BUFFER.
  16444.  
  16445. CBFN EQU CPFB LOCAL FILE NAME
  16446. CBLF EQU CPFB+5*1 FILE LENGTHS
  16447. CBRI EQU CPFB+5*2 RANDOM INDEX
  16448. CBSR EQU CPFB+5*3 SPECIAL REQUEST BLOCK
  16449.  
  16450. * LOCATIONS WITHIN SPECIAL REQUEST BLOCK IN *CPFB* BUFFER.
  16451.  
  16452. CBID EQU CBSR+5*SFID *PFID* FIELD
  16453. CBCD EQU CBSR+5*SFCD CREATION DATE FIELD
  16454. CBFM EQU CBSR+5*SFFM FAMILY NAME FIELD
  16455. CBUI EQU CBSR+5*SFUI USER INDEX FIELD
  16456. SPACE 4,10
  16457. * COMMON DECKS.
  16458.  
  16459. *CALL COMPCRA
  16460. WEI$ EQU 1 ALLOW BUFFER SPECIFICATION
  16461. *CALL COMPSRA
  16462. *CALL COMPWEI
  16463. WIS$ EQU 1 WRITE IAPF SYSTEM SECTOR
  16464. *CALL COMPWSS
  16465. SPACE 4,10
  16466. USE OVERFLOW
  16467.  
  16468. OVL0 EQU *+5 ZERO-LEVEL OVERLAY LOAD ADDRESS
  16469. ERRNG BFMS-OVL0-ZDFL *0DF* OVERFLOW
  16470. SPACE 4,10
  16471. OVERFLOW OVLU,GETA OVERFLOW INTO *GET* PROCESSING
  16472. SPACE 4,10
  16473. OVERFLOW OVLU,SAVA OVERFLOW INTO *SAVE* PROCESSING
  16474. SPACE 4,10
  16475. OVERFLOW OVLU,APPB OVERFLOW INTO *APPEND* PROCESSING
  16476. OVERLAY (ERROR PROCESSING.),OVLA
  16477. SPACE 4,10
  16478. ** THIS OVERLAY PROCESSES PERMANENT FILE ERRORS BY SENDING
  16479. * THE INDICATED ERROR MESSAGE TO THE DAYFILE, SETTING THE
  16480. * FST ENTRY NOT BUSY OR DELETING THE FNT/FST ENTRY IF CREATED
  16481. * BY *PFM*, AND TERMINATING THE CALLING PROGRAM.
  16482.  
  16483.  
  16484. OVL BSS 0 ENTRY
  16485. * LJM SEP PROCESS ERROR
  16486. SPACE 4,10
  16487. *** PERMANENT FILE ERROR PROCESSING.
  16488. *
  16489. *
  16490. * COMMAND OR CENTRAL PROGRAM CALLS.
  16491. *
  16492. * IF THE ERROR PROCESSING BIT IS SET IN THE FET, PFM
  16493. * RETURNS THE ERROR CODE, SETS THE COMPLETE BIT AND
  16494. * ISSUES THE DAYFILE MESSAGE. THE ERROR CODE IS
  16495. * RETURNED IN WORD 0 OF THE FET BITS 10 - 17.
  16496. *
  16497. * IF THE ERROR PROCESSING BIT IS NOT SET, A DAYFILE
  16498. * MESSAGE IS ISSUED, THE CONTROL POINT ABORTED, AND THE
  16499. * PPU IS DROPPED.
  16500. *
  16501. * IF THE ERROR RETURN ADDRESS *ERAD* IS SET AND THE USER
  16502. * IS PROCESSING ERRORS, THE MESSAGE WILL NOT BE ISSUED
  16503. * TO THE DAYFILE BUT WILL BE RETURNED TO THE USER
  16504. * PROGRAM AT RA + ERAD. FOUR WORDS MUST BE ALLOCATED
  16505. * AT *ERAD* FOR MESSAGE.
  16506. *
  16507. * IF THE ERROR *FILE BUSY* IS ENCOUNTERED AN EVENT
  16508. * DESCRIPTOR (EST ORDINAL/FIRST TRACK) WILL BE SET
  16509. * IN *TERW* IN THE CP AREA SO THAT THE CALLING PROGRAM
  16510. * MAY ISSUE A ROLLOUT IF IT WANTS TO WAIT FOR FILE TO
  16511. * BECOME AVAILABLE.
  16512. *
  16513. * IF A DEVICE REQUIRED BY PFM IS TEMPORARILY
  16514. * INACCESSIBLE, AN ERROR STATUS WILL BE RETURNED TO THE
  16515. * CALLER IF REAL-TIME PROCESSING WAS SELECTED IN THE
  16516. * FET; OTHERWISE, THE JOB WILL BE ROLLED OUT IF IT IS
  16517. * NOT A SUBSYSTEM. THE PFM FUNCTION WILL BE RESTARTED
  16518. * WHEN THE JOB RESUMES EXECUTION. THE *ATTACH*,
  16519. * *CATLIST*, *CHANGE*, *DEFINE*, *DELPFC*, *DROPDS*,
  16520. * *GET*, *PERMIT*, *PURGE*, *SETPFAC*, AND *SETPFAL*
  16521. * REQUESTS CAN BE INTERRUPTED ON ANY I/O OPERATION AND
  16522. * RESTARTED. THE *APPEND*, *REPLACE*, AND *SAVE*
  16523. * REQUESTS CANNOT BE INTERRUPTED ONCE THE CATALOG
  16524. * ENTRY FOR THE PERMANENT FILE HAS BEEN WRITTEN AND
  16525. * THE FILE TRANSFER IS IN PROGRESS.
  16526. *
  16527. *
  16528. * IF ANY OF THE FOLLOWING ERRORS ARE ENCOUNTERED AND THE
  16529. * ERROR IS NOT DUE TO A HARDWARE FAILURE, THE MESSAGE
  16530. * *EQXXX, ERROR IDLE SET.*
  16531. * WILL BE ISSUED TO THE ERROR LOG AND ERROR IDLE STATUS
  16532. * WILL BE SET IN THE MST OF THE APPROPRIATE DEVICE.
  16533. * THIS WILL PREVENT FURTHER ACCESS TO THE DEVICE.
  16534. *
  16535. * * BAD CATALOG/PERMIT SECTOR.*
  16536. * * FILE LENGTH ERROR.*
  16537. *
  16538. * SETTING OF ERROR IDLE STATUS ON A FAILING DEVICE MAY
  16539. * BE REQUESTED FOR ANY OTHER TYPE 2 ERROR BY SPECIFYING
  16540. * THE *EI* PARAMETER ON THE *ERROR* MACRO CALL. THIS
  16541. * SHOULD BE DONE IF THE ERROR CAUSES THE CATALOG OR
  16542. * PERMITS FILE TO BE CORRUPTED. IT WILL BE SET IN
  16543. * THE FOLLOWING SITUATIONS.
  16544. *
  16545. * * MASS STORAGE ERROR.*
  16546. * - AN UNRECOVERABLE WRITE ERROR OCCURRED ON THE
  16547. * CATALOG OR PERMITS FILE AND DATA ON THE FILE HAS
  16548. * BEEN DESTROYED.
  16549. * - AN UNRECOVERABLE WRITE ERROR OCCURRED OR THE
  16550. * DEVICE BECAME INACCESSIBLE WHILE PERMIT SECTORS
  16551. * WERE BEING LINKED.
  16552. * - AN UNRECOVERABLE WRITE ERROR OCCURRED OR THE
  16553. * DEVICE BECAME INACCESSIBLE WHILE WRITING THE
  16554. * CATALOG FILE OR PERFORMING THE FILE TRANSFER FOR
  16555. * *APPEND*, *REPLACE*, OR *SAVE* COMMAND.
  16556. * (THE CATALOG ENTRY FOR THE PERMANENT FILE HAS BEEN
  16557. * ASSIGNED TO THE USER PRIOR TO TRANSFERRING THE FILE
  16558. * AND POINTS TO UNWRITTEN FILE SPACE.)
  16559. *
  16560. * * PFM ABORTED.*
  16561. * - *CPUPFM* HAS ABORTED BEFORE THE FILE TRANSFER IS
  16562. * COMPLETE FOR *APPEND*, *REPLACE*, OR *SAVE*
  16563. * COMMAND.
  16564. *
  16565. * * TRACK LIMIT.*
  16566. * - *CPUPFM* HAS ENCOUNTERED A TRACK LIMIT BEFORE THE
  16567. * FILE TRANSFER IS COMPLETE FOR *APPEND*, *REPLACE*,
  16568. * OR *SAVE* COMMAND.
  16569. SPACE 4,10
  16570. *** DAYFILE MESSAGES.
  16571. *
  16572. * ERROR 1 * (FILE NAME) BUSY.*
  16573. * DIRECT ACCESS FILE ATTACHED WITH CONFLICTING MODE.
  16574. *
  16575. * ERROR 2 * (FILE NAME) NOT FOUND.*
  16576. * PERMANENT FILE SPECIFED COULD NOT BE FOUND.
  16577. * OPTIONAL USER NAME NOT FOUND.
  16578. * LOCAL FILE SPECIFIED NOT FOUND.
  16579. * PERMANENT FILE SPECIFIED WAS NOT THE CORRECT TYPE OF FILE
  16580. * FOR THE COMMAND USED. FOR EXAMPLE, A DIRECT ACCESS FILE
  16581. * WAS FOUND USING A *GET* REQUEST OR AN INDIRECT ACCESS FILE
  16582. * WAS FOUND USING AN *ATTACH* REQUEST.
  16583. *
  16584. * ERROR 3 * (FILE NAME) EMPTY.*
  16585. * FILE CONTAINS NO DATA.
  16586. *
  16587. * ERROR 4 * (FILE NAME) NOT ON MASS STORAGE.*
  16588. * FILE TO BE SAVED DOES NOT RESIDE ON MASS STORAGE.
  16589. * FIRST TRACK OF FILE NOT RECOGNIZABLE.
  16590. *
  16591. * ERROR 5 * (FILE NAME) ALREADY PERMANENT.*
  16592. * USER ALREADY HAS FILE SAVED OR DEFINED.
  16593. *
  16594. * ERROR 6 * (FILE NAME) INCORRECT FILE TYPE.*
  16595. * USER HAS TRIED TO DEFINE A FILE THAT IS NOT A LOCAL FILE.
  16596. *
  16597. * ERROR 7 * FILE NAME ERROR.*
  16598. * FILE NAME CONTAINS INCORRECT CHARACTERS.
  16599. *
  16600. * ERROR 10 * USER ACCESS NOT VALID.*
  16601. * USER NOT VALIDATED FOR DIRECT AND/OR INDIRECT ACCESS FILES,
  16602. * OR ACCESS TO REMOVABLE DEVICES.
  16603. * USER IS NOT VALIDATED FOR ACCESS TO FAST ATTACH FILES.
  16604. * PERMIT *CATLIST* ATTEMPTED ON A FILE WITH AN ACCESS LEVEL
  16605. * ABOVE THAT OF THE JOB.
  16606. *
  16607. * ERROR 11 * INCORRECT DEVICE REQUEST.*
  16608. * DEVICE TYPE SPECIFIED ON REMOVABLE DEVICE REQUEST IS
  16609. * UNRECOGNIZED OR DOES NOT EXIST ON SYSTEM.
  16610. * THE PACKNAME REQUESTED FOR AUXILIARY DEVICE REQUEST IS
  16611. * AVAILABLE IN SYSTEM BUT NOT AS TYPE REQUESTED BY *R* OPTION.
  16612. *
  16613. * ERROR 12 * FILE TOO LONG.*
  16614. * LENGTH OF FILE TO BE PLACED IN PERMANENT FILES EXCEEDS
  16615. * THE LIMIT SET BY INSTALLATION.
  16616. * THIS MESSAGE IS ISSUED ON AN ATTACH FUNCTION IF THE USER
  16617. * ATTEMPTS TO ATTACH A FILE IN WRITE, APPEND OR MODIFY MODE
  16618. * OR DEFINE AN EXISTING FILE AND THE FILE EXCEEDED THE
  16619. * USERS FILE LENGTH CONTROLS.
  16620. *
  16621. * ERROR 13 * PFM INCORRECT REQUEST.*
  16622. * INCORRECT COMMAND CODE PASSED TO PFM.
  16623. * INCORRECT PERMIT MODE OR CATALOG TYPE SPECIFIED.
  16624. * PERMIT TYPE CATLIST WITH NO FILENAME.
  16625. * THE *BR* OR *PR* VALUE SPECIFIED IS INCORRECT.
  16626. *
  16627. * ERROR 14 * DEVICE UNAVAILABLE.*
  16628. * ACCESS TO PERMANENT FILE DEVICE REQUESTED IS NOT POSSIBLE.
  16629. * THIS ERROR IS ISSUED IF THE USER INDEX IS ZERO.
  16630. * THIS ERROR IS ISSUED IF THE MSF DEVICE ON WHICH THE FILE
  16631. * RESIDES IS NOT DEFINED IN THE EQUIPMENT CONFIGURATION.
  16632. *
  16633. * ERROR 15 * DIRECT ACCESS DEVICE ERROR.*
  16634. * DEVICE THAT FILE RESIDES ON MAY NOT CONTAIN DIRECT ACCESS FILE
  16635. *
  16636. * ERROR 16 * PF UTILITY ACTIVE.*
  16637. * UTILITY OPERATION CURRENTLY ACTIVE. OPERATION NOT ATTEMPTED.
  16638. * USER SHOULD RETRY THE OPERATION. ERROR CODE 16 IS ALSO
  16639. * RETURNED IN THE FET FOR ERROR 126 WITH THE ERROR MESSAGE,
  16640. * *WAITING - INACCESSIBLE DEVICE.*
  16641. *
  16642. * ERROR 17 * DATA TRANSFER ERROR.*
  16643. * ERROR IN READ OF DATA DURING TRANSFER OF FILE. TRANSFER
  16644. * IS COMPLETED WITH SECTOR CONTAINING ERROR TRANSFERRED AS READ.
  16645. *
  16646. * ERROR 20 * TOO MANY PERMANENT FILES.*
  16647. * NUMBER OF FILES IN CATALOG EXCEEDS ALLOWABLE LIMIT.
  16648. *
  16649. * ERROR 21 * TOO MUCH INDIRECT ACCESS FILE SPACE.*
  16650. * CUMULATIVE SIZE OF INDIRECT FILES IN CATALOG EXCEEDS
  16651. * THE ALLOWABLE LIMIT.
  16652. *
  16653. * ERROR 22 * PRUS REQUESTED UNAVAILABLE.*
  16654. * NUMBER OF PRUS SPECIFIED ON DEFINE REQUEST IS NOT AVAILABLE.
  16655. *
  16656. * ERROR 23 * I/O SEQUENCE ERROR.*
  16657. * PFM REQUEST ATTEMPTED ON LOCAL FILE THAT IS CURRENTLY ACTIVE.
  16658. *
  16659. * ERROR 24 * LOCAL FILE LIMIT.*
  16660. * THE JOBS LOCAL FILE LIMIT HAS BEEN EXCEEDED BY AN ATTEMPT
  16661. * TO GET OR ATTACH THIS FILE. (FILE NOT ATTACHED OR RETRIEVED)
  16662. *
  16663. * ERROR 25 * PRU LIMIT.*
  16664. * THE JOBS MASS STORAGE PRU LIMIT WAS EXCEEDED BY AN
  16665. * ATTEMPT TO GET THIS FILE. (FILE NOT ATTACHED OR RETRIEVED)
  16666. *
  16667. * ERROR 26 * PERMIT LIMIT EXCEEDED.*
  16668. * THE NUMBER OF EXPLICIT PERMIT ENTRIES FOR A FILE HAS
  16669. * REACHED THE LIMIT DEFINED BY *PMLN*.
  16670. *
  16671. * ERROR 27 * PFM ARGUMENT ERROR.*
  16672. * AN INCORRECT VALUE HAS BEEN SPECIFIED IN THE FET.
  16673. *
  16674. * ERROR 30 * RESEX FAILURE.*
  16675. * RESEX HAS DETECTED AN ERROR IN CONTROL FILES OR SOME OTHER
  16676. * FATAL ERROR HAS OCCURRED IN RESEX.
  16677. *
  16678. * ERROR 31 *EQXXX,DNYY, TRACK LIMIT.*
  16679. * EST ORDINAL XXX HAS NO SPACE.
  16680. *
  16681. * ERROR 32 *EQXXX,DNYY, FILE LENGTH ERROR.*
  16682. * LENGTH OF FILE DOES NOT EQUAL CATALOG LENGTH DURING TRANSFER.
  16683. *
  16684. * ERROR 33 *EQXXX,DNYY, RANDOM INDEX ERROR.*
  16685. * PERMIT RANDOM ADDRESS ERROR.
  16686. *
  16687. * ERROR 34 *EQXXX,DNYY, DIRECT ACCESS FILE ERROR.*
  16688. * SYSTEM SECTOR DATA FOR FILE DOES NOT VERIFY.
  16689. *
  16690. * ERROR 35 *EQXXX,DNYY, REPLACE ERROR.*
  16691. * SAME FILE FOUND TWICE DURING CATALOG SEARCH. THIS CAN
  16692. * OCCUR FOR APPEND OR REPLACE COMMANDS AFTER FILE IS FOUND,
  16693. * PURGED AND CATALOG SEARCH FOR HOLE IS CONTINUED.
  16694. *
  16695. * ERROR 36 *EQXXX,DNYY, PFM ABORTED.*
  16696. * *PFM* WAS UNABLE TO CONTINUE DUE TO AN OPERATOR OVERRIDE,
  16697. * OR *CPUPFM* ABORTED PRIOR TO COMPLETING ITS TRANSFER.
  16698. *
  16699. * ERROR 37 *EQXXX,DNYY, MASS STORAGE ERROR.*
  16700. * ERROR ENCOUNTERED IN READ OR WRITING PORTION OF PF CATALOG OR
  16701. * PERMIT INFORMATION.
  16702. *
  16703. * ERROR 40 * ERROR IN FILE DATA.*
  16704. * ERRORS IN THE FILE DATA WERE DETECTED BY *PFDUMP* WHILE
  16705. * IT WAS DUMPING THE FILE; THE FILE WAS LATER RELOADED.
  16706. *
  16707. * ERROR 41 * ERROR IN PERMIT DATA.*
  16708. * ERRORS IN THE FILE-S PERMIT ENTRIES WERE ENCOUNTERED BY
  16709. * *PFDUMP* WHILE IT WAS DUMPING THE FILE; THE FILE WAS LATER
  16710. * RELOADED.
  16711. *
  16712. * ERROR 42 * DATA/PERMIT ERRORS.*
  16713. * ERRORS WERE ENCOUNTERED IN BOTH THE DATA AND THE PERMIT
  16714. * ENTRIES WHILE *PFDUMP* WAS DUMPING THE FILE; THE FILE
  16715. * WAS LATER RELOADED.
  16716. *
  16717. * ERROR 43 * EOI CHANGED BY RECOVERY.*
  16718. * AN ERROR IN THE FILES EOI POSITION WAS DETECTED BY THE
  16719. * RECOVERY ROUTINES. THE POSITION WAS CHANGED TO THE
  16720. * BEST LOGICAL POSITION.
  16721. *
  16722. * ERROR 44 - 47 RESERVED
  16723. *
  16724. * ERROR 50 *EQXXX,DNYY, FILE BOI/EOI/UI MISMATCH.*
  16725. * THE VERIFICATION OF THE FILE-S STRUCTURE OR OWNER
  16726. * IDENTIFICATION FAILED. THE FILE DATA HAS BEEN LOST.
  16727. *
  16728. * ERROR 51 *EQXXX,DNYY, SYSTEM SECTOR ERROR.*
  16729. * ERRORS ENCOUNTERED IN VERIFICATION OF SYSTEM SECTOR
  16730. * OF FILE.
  16731. *
  16732. * ERROR 52 *EQXXX,DNYY, BAD CATALOG/PERMIT SECTOR.*
  16733. * THE LENGTH OF THE INDICATED CATALOG OR PERMIT SECTOR IS NOT
  16734. * A MULTIPLE OF THE ENTRY SIZE.
  16735. *
  16736. * ERROR 53 *EQXXX,DNYY, TRACK NOT RESERVED.*
  16737. * THERE IS NO TRACK RESERVED FOR THE FILE. THE DATA FOR THE
  16738. * FILE HAS BEEN LOST.
  16739. *
  16740. * ERROR 54 - 70 RESERVED
  16741. *
  16742. * ERROR 71 * (FILE NAME) PERMANENT ERROR.*
  16743. * UNRECOVERABLE ERRORS WERE DETECTED IN ATTEMPTING TO ACCESS
  16744. * THE FILE ON ALTERNATE STORAGE.
  16745. *
  16746. * ERROR 72 * (FILE NAME) STAGE INITIATED.*
  16747. * THE PERMANENT FILE IS BEING STAGED FROM ALTERNATE STORAGE
  16748. * TO DISK.
  16749. *
  16750. * ERROR 73 * (FILE NAME) WAITING FOR SUBSYSTEM.*
  16751. * THE PERMANENT FILE MUST BE STAGED FROM ALTERNATE STORAGE
  16752. * TO DISK AND THE APPROPRIATE SUBSYSTEM IS NOT CURRENTLY
  16753. * AVAILABLE TO PERFORM THE STAGE OPERATION.
  16754. *
  16755. * ERROR 74 * (FILE NAME) INTERLOCKED.*
  16756. * A FILE CAN NOT BE ATTACHED IN *WRITE*, *MODIFY* OR *APPEND*
  16757. * MODE WHEN THE FILE IS ATTACHED IN UTILITY MODE.
  16758. *
  16759. * ERROR 75 * (FILE NAME) IS DIRECT ACCESS.*
  16760. * USER IS ATTEMPTING AN INDIRECT FILE COMMAND WHEN THE FILE
  16761. * IS A DIRECT ACCESS FILE.
  16762. * CURRENTLY ERROR 2 IS REPORTED IN THE *FET*.
  16763. *
  16764. * ERROR 76 * (FILE NAME) IS INDIRECT ACCESS.*
  16765. * USER IS ATTEMPTING A DIRECT ACCESS FILE COMMAND WHEN THE
  16766. * FILE IS AN INDIRECT ACCESS FILE.
  16767. * CURRENTLY ERROR 2 IS REPORTED IN THE *FET*.
  16768. *
  16769. * ERROR 77 * (FILE NAME) IS EXECUTE ONLY.*
  16770. * THE SPECIFIED LOCAL FILE CANNOT BE ACCESSED BY *SAVE*,
  16771. * *REPLACE*, *APPEND* OR *DEFINE*, SINCE IT IS AN
  16772. * EXECUTE-ONLY FILE.
  16773. *
  16774. * ERROR 100 * PF STAGING DISABLED.*
  16775. * THE PERMANENT FILE MUST BE STAGED FROM ALTERNATE STORAGE
  16776. * TO DISK AND EITHER *CARTRIDGE PF STAGING* OR *TAPE
  16777. * PF STAGING*, OR BOTH, HAVE BEEN DISABLED.
  16778. *
  16779. * ERROR 101 * INCORRECT PFC ADDRESS.*
  16780. * THE DEVICE NUMBER, TRACK AND SECTOR SPECIFIED AS THE *PFC*
  16781. * ADDRESS ARE INCORRECT.
  16782. *
  16783. * ERROR 102 * PFC VERIFICATION ERROR.*
  16784. * THE CREATION DATE AND TIME, USER INDEX OR ALTERNATE STORAGE
  16785. * ADDRESS DO NOT AGREE WITH THE CURRENT *PFC* CONTENTS.
  16786. *
  16787. * ERROR 103 * FILE NOT DISK RESIDENT.*
  16788. * THE *UATTACH* FUNCTION DOES NOT SUPPORT ACCESS TO FILES WHICH
  16789. * ARE NOT DISK RESIDENT.
  16790. *
  16791. * ERROR 104 * INTERLOCK NOT AVAILABLE.*
  16792. * A SOFTWARE INTERLOCK IS CURRENTLY NOT AVAILABLE TO A REQUESTOR
  16793. * SPECIFYING *EP* AND *UP* EXIT PROCESSING OPTIONS.
  16794. *
  16795. * ERROR 105 * ALTERNATE IMAGE OBSOLETE.*
  16796. * THE *DROPDS* FUNCTION DOES NOT RETURN THE DISK SPACE FOR
  16797. * FILES WITH ALTERNATE STORAGE MARKED OBSOLETE OR WITHOUT
  16798. * AN ALTERNATE STORAGE ADDRESS SPECIFIED IN THE *PFC*.
  16799. *
  16800. * ERROR 106 * ALTERNATE STORAGE ERROR.*
  16801. * AN ATTEMPT TO DROP DISK SPACE WHEN A PERMANENT ERROR STATUS
  16802. * IS SET FOR THE ALTERNATE STORAGE FILE COPY.
  16803. *
  16804. * ERROR 107 * FNT FULL.*
  16805. * FNT SPACE IS NOT CURRENTLY AVAILABLE FOR A REQUEST WHICH HAS
  16806. * BOTH *EP* AND *UP* EXIT PROCESSING OPTIONS SET.
  16807. *
  16808. * ERROR 110 * INCORRECT CATALOG UPDATE.*
  16809. * THIS ERROR IS ISSUED IF AN ALTERNATE STORAGE ADDRESS EXISTS
  16810. * AND THE ALTERNATE STORAGE COPY IS NOT MARKED OBSOLETE WHEN
  16811. * PERFORMING A *SETASA* FUNCTION. THIS ERROR IS ALSO ISSUED
  16812. * IF A DISK ADDRESS EXISTS FOR A FILE IN THE *PFC* ENTRY WHEN
  16813. * PERFORMING A *SETDA* OR *UREPLAC* FUNCTION.
  16814. *
  16815. * ERROR 111 * PFM EXCESS ACTIVITY.*
  16816. * THE SYSTEM *PFM* ACTIVITY COUNT IS AT LIMIT. THIS CONDITION
  16817. * IS ONLY REPORTED FOR REQUESTS WITH BOTH *EP* AND *UP* EXIT
  16818. * PROCESSING OPTIONS SET.
  16819. *
  16820. * ERROR 112 * NOT VALIDATED TO SET XD/XT.*
  16821. * THE USER HAS ATTEMPTED TO SET AN EXPIRATION DATE FOR A FILE,
  16822. * AND IS NOT VALIDATED FOR THAT PRIVILEGE.
  16823. *
  16824. * ERROR 113 * XD/XT EXCEEDS MAXIMUM.*
  16825. * THIS MESSAGE IS ISSUED WHEN THE USER SPECIFIES AN EXPIRATION
  16826. * DATE OR TERM WHICH IS LARGER THAN THE PREDEFINED SYSTEM
  16827. * MAXIMUM EXPIRATION TERM.
  16828. *
  16829. * ERROR 114 * JOB CANNOT ACCESS FILE.*
  16830. * THE ACCESS LEVEL AND CATEGORY SET OF THE CALLING JOB DOES NOT
  16831. * ALLOW ACCESS TO THE SPECIFIED FILE.
  16832. *
  16833. * ERROR 115 * ACCESS LEVEL NOT VALID FOR JOB.*
  16834. * THE SPECIFIED ACCESS LEVEL IS NOT VALID FOR THE CALLING JOB.
  16835. *
  16836. * ERROR 116 * WRITE-DOWN OF DATA PROHIBITED.*
  16837. * THE LOCAL FILE HAS A HIGHER ACCESS LEVEL THAN THE FILE IT IS
  16838. * REPLACING OR IS BEING APPENDED TO.
  16839. * THE LOCAL FILE FILE HAS A LOWER ACCESS LEVEL THAN THE JOB ON
  16840. * A *DEFINE* REQUEST.
  16841. * THE PERMANENT FILE HAS A LOWER ACCESS LEVEL THAN THE JOB ON
  16842. * A *PERMIT*, *CHANGE*, OR *SETPFAC* REQUEST.
  16843. *
  16844. * ERROR 117 * ACCESS CATEGORIES NOT VALID FOR JOB.*
  16845. * THE SPECIFIED ACCESS CATEGORY SET IS NOT VALID FOR THE
  16846. * CALLING JOB.
  16847. *
  16848. * ERROR 120 * ACCESS LEVEL NOT VALID ON PF DEVICE.*
  16849. * THE LOCAL FILE ACCESS LEVEL IS INCOMPATIBLE WITH THE
  16850. * USERS MASTER DEVICE ACCESS LEVEL LIMITS.
  16851. *
  16852. * ERROR 121 * NOT VALID TO DOWNGRADE DATA.*
  16853. * THE USER HAS ISSUED *SETPFAL* REQUESTING THE FILE TO BE
  16854. * CHANGED TO A LOWER ACCESS LEVEL AND DOES NOT HAVE THE
  16855. * PRIVILEGE TO MAKE DATA LESS SECURE.
  16856. *
  16857. * ERROR 122 * (FILE NAME) - NO TEMP DEVICE FOUND.*
  16858. * THE USER HAS ATTEMPTED TO RETRIEVE AN INDIRECT PERMANENT
  16859. * FILE FOR WHICH THERE IS NO TEMPORARY DEVICES VALID FOR THE
  16860. * FILE-S ACCESS LEVEL.
  16861. *
  16862. * ERROR 123 * ACCESS LEVEL NOT VALID FOR FILE.*
  16863. * ONE OF TWO ERRORS -
  16864. * 1. THE SPECIFIED ACCESS LEVEL IS LESS THAN THE CURRENT
  16865. * ACCESS LEVEL OF THE LOCAL FILE, AND THE CALLER IS NOT
  16866. * VALIDATED TO DOWNGRADE FILES.
  16867. * 2. THE SPECIFIED ACCESS LEVEL IS NOT VALID ON THE DEVICE THAT
  16868. * THE LOCAL FILE RESIDES ON; THEREFORE, THE USER CAN NOT *SAVE*
  16869. * OR *DEFINE* THE FILE AT THAT ACCESS LEVEL.
  16870. *
  16871. * ERROR 124 * (FILE NAME) TEMPORARY ERROR, TRY LATER.*
  16872. * THE SYSTEM HAS ENCOUNTERED A TEMPORARY PROBLEM WHICH PREVENTS
  16873. * IT FROM STAGING YOUR FILE IN FROM ALTERNATE STORAGE.
  16874. * WAIT AWHILE, THEN TRY AGAIN.
  16875. *
  16876. * ERROR 125 * WAITING FOR NFL.*
  16877. * YOUR JOB HAS BEEN DELAYED AND/OR ROLLED OUT WAITING FOR NFL.
  16878. *
  16879. * ERROR 126 * WAITING - INACCESSIBLE DEVICE.*
  16880. * ACCESS TO THE PERMANENT FILE DEVICE REQUESTED IS NOT
  16881. * ALLOWED AT THIS TIME BECAUSE THE DEVICE HAS *SUSPECT*,
  16882. * *OFF*, OR *DOWN* STATUS. ERROR CODE 16 IS RETURNED IN
  16883. * THE FET FOR THIS CONDITION. USER SHOULD RETRY THE
  16884. * OPERATION.
  16885. *
  16886. * ERROR 127 (NO MESSAGE)
  16887. * REQUEST IS BEING RETRIED BY *PFM*.
  16888. *
  16889. * ERROR 130 * ERROR IN CATLIST CONTINUATION DATA.*
  16890. * THE CATLIST CONTINUATION DATA SPECIFIED IN *FET+6* POINTS
  16891. * TO AN INCORRECT TRACK AND/OR SECTOR.
  16892. SPACE 4,30
  16893. *** ERROR LOG MESSAGES.
  16894. *
  16895. * THE FOLLOWING MESSAGES ARE ISSUED TO THE ERROR LOG AS WELL
  16896. * AS TO THE USER AND SYSTEM DAYFILES. IN THE ERROR LOG, THE
  16897. * PREFIX *EQXXX,DNYY,* IS ADDED TO EACH OF THE MESSAGES.
  16898. *
  16899. * * TRACK LIMIT.*
  16900. * * FILE LENGTH ERROR.*
  16901. * * RANDOM INDEX ERROR.*
  16902. * * DIRECT ACCESS FILE ERROR.*
  16903. * * REPLACE ERROR.*
  16904. * * PFM ABORTED.*
  16905. * * MASS STORAGE ERROR.*
  16906. * * FILE BOI/EOI/UI MISMATCH.*
  16907. * * SYSTEM SECTOR ERROR.*
  16908. * * BAD CATALOG/PERMIT SECTOR.*
  16909. * * TRACK NOT RESERVED.*
  16910. *
  16911. * WHENEVER ONE OF THE ABOVE MESSAGES IS ISSUED TO THE ERROR
  16912. * LOG, ONE OF THE FOLLOWING MESSAGES IS ALSO ISSUED TO THE
  16913. * ERROR LOG TO IDENTIFY THE FILE IN ERROR.
  16914. *
  16915. * *EQXXX, FM=FAMILY,PF=PFN,UI=USERINDEX.*
  16916. * *EQXXX, TK=TRACK,SC=SECTOR.*
  16917. *
  16918. * IF *PFM* SETS ERROR IDLE ON THE DEVICE AS THE RESULT OF
  16919. * THE ERROR CONDITION, THE FOLLOWING MESSAGE IS ALSO ISSUED
  16920. * TO THE ERROR LOG.
  16921. *
  16922. * *EQXXX, ERROR IDLE SET.*
  16923. TITLE SYSTEM ERROR PROCESSING.
  16924. SEP SPACE 4,25
  16925. ** SEP - SYSTEM ERROR PROCESSING.
  16926. *
  16927. * ENTRY (P1) = 3/EXC,7/MNE,1/EIF,1/CIF.
  16928. * (EXC) = EXIT CASE.
  16929. * (MNE) = ERROR MNEMONIC.
  16930. * (EIF) = ERROR IDLE FLAG.
  16931. * (CIF) = CHANNEL INTERLOCKED FLAG.
  16932. * (P2) = EST ORDINAL.
  16933. *
  16934. * EXIT (EP) = *EP* BOOLEAN.
  16935. * (P0) = ERROR IDLE FLAG.
  16936. * (P1) = ERROR CODE.
  16937. * (P3) = EXIT CASE.
  16938. * (RT) = *RT* BOOLEAN.
  16939. * (UP) = *UP* BOOLEAN.
  16940. * SEPB = EXIT CASE.
  16941. * TO *EXC* (X=0,1,...,6) TO PROCESS EXIT CASE.
  16942. * TO *RCL* TO RETRY REQUEST.
  16943. *
  16944. * USES T1 - T3, P1 - P3, FA, CM - CM+4, FN - FN+4, FS - FS+4.
  16945. *
  16946. * CALLS CAD, CAI, CEI, CLE, PDE, PPF, PRT, SFA.
  16947.  
  16948.  
  16949. MBUF BSS 0 MESSAGE ASSEMBLY BUFFER
  16950.  
  16951. SEP BSS 0 ENTRY
  16952. LDD P1 SEPARATE EXIT CASE
  16953. SHN 0-11
  16954. STD P3
  16955. STM SEPB SAVE EXIT CASE
  16956. LDD P1 SEPARATE ERROR IDLE FLAG
  16957. LPN 2
  16958. STD P0
  16959. LDD P1 SEPARATE ERROR CODE
  16960. SHN 0-2
  16961. LPC 177
  16962. STD P1
  16963.  
  16964. * SET UP THE *RT*, *EP* AND *UP* DIRECT CELLS.
  16965.  
  16966. LDM EPOP SET UP *RT*
  16967. SHN 0-1
  16968. LPN 1
  16969. STD RT
  16970. LDM EPOP SET UP *EP*
  16971. SHN 0-2
  16972. LPN 1
  16973. STD EP
  16974. LDM EPOP SET UP *UP*
  16975. SHN 0-3
  16976. LPN 1
  16977. STD UP
  16978.  
  16979. * PERFORM COMMON INITIAL ERROR PROCESSING.
  16980.  
  16981. RJM CAI CLEAR ALLOCATION AND *DAPF* INTERLOCKS
  16982. RJM CAD CHECK FOR ACCESS DENIED
  16983. RJM CEI CHECK FOR ERROR IDLE
  16984. RJM CLE CHECK FOR LENGTH ERROR
  16985. RJM PRT PROCESS PRESERVED AND RESERVED TRACKS
  16986. RJM PDE PROCESS *DMP=*
  16987. RJM PPF PROCESS SPECIAL *PFM* FILES
  16988.  
  16989. * INVOKE EXIT CASE.
  16990.  
  16991. LDD P1 CHECK ERROR CODE
  16992. LMK /ERRMSG/RTR
  16993. ZJP RCL IF REQUEST TO BE RETRIED
  16994. LDM SEPA,P3 GET EXIT CASE ADDRESS
  16995. STM SEPA
  16996. LJM E0C EXIT 0 CASE
  16997. SEPA EQU *-1
  16998. CON E1C EXIT 1 CASE
  16999. CON E2C EXIT 2 CASE
  17000. CON E3C EXIT 3 CASE
  17001. CON E4C EXIT 4 CASE
  17002. CON E5C EXIT 5 CASE
  17003. CON E6C EXIT 6 CASE
  17004. CON E7C EXIT 7 CASE
  17005. SEPB CON 0 EXIT CASE OF *EXC*
  17006. E0C SPACE 4,15
  17007. ** E0C - EXIT 0 CASE PROCESSING.
  17008. *
  17009. * EXIT ERROR CODE IS RETURNED IN THE *FET*.
  17010. * IF (EP) = 0 THE JOB IS ABORTED.
  17011. * IF (EP) = 1, THE JOB IS NOT ABORTED.
  17012. *
  17013. * USES CM - CM+4.
  17014. *
  17015. * CALLS PEM, UFF.
  17016.  
  17017.  
  17018. E0C BSS 0 ENTRY
  17019. LDD P1
  17020. LMK /ERRMSG/FBS
  17021. NJN E0C1 IF NOT *FILE BUSY*
  17022. LDD CP SET *FILE BUSY* EVENT INTO *TERW*
  17023. ADK TERW
  17024. CRD CM
  17025. LDD CM+2 SET TIME
  17026. SCN 77
  17027. SHN 3
  17028. LMM ERRD
  17029. SHN 22-3
  17030. STD CM+2
  17031. SHN -6
  17032. SCN 77
  17033. LMM ERRE SET EST ORDINAL
  17034. STD CM+3
  17035. LDM ERRC SET FOLDED EVENT
  17036. STD CM+4
  17037. LDD CP
  17038. ADK TERW
  17039. CWD CM
  17040. E0C1 RJM PEM PROCESS ERROR MESSAGE
  17041. LJM UFF UPDATE FET FIELDS AND EXIT
  17042. E1C SPACE 4,25
  17043. ** E1C - EXIT 1 CASE PROCESSING.
  17044. *
  17045. * SPECIAL *EP* AND *UP* CONTROLLED FOR TIME DEPENDENT
  17046. * PROCESSING WITH A POSSIBILITY OF ROLLOUT.
  17047. *
  17048. * ENTRY (EP) = *EP* BOOLEAN.
  17049. * (UP) = *UP* BOOLEAN.
  17050. *
  17051. * EXIT IF *EP* AND *UP*.
  17052. * IF EMRA, COPY MESSAGE TO EMRA BUFFER.
  17053. * SET STATUS IN FET.
  17054. * EXIT PFM.
  17055. * SET MESSAGE IN *MS2W*.
  17056. * IF SSID FIELD ZERO, ROLLOUT JOB.
  17057. * RECALL REQUEST.
  17058. * EXIT PFM.
  17059. *
  17060. * USES CM+1 - CM+4.
  17061. *
  17062. * CALLS GEA, REM, WCM.
  17063. *
  17064. * MACROS MONITOR.
  17065.  
  17066.  
  17067. E1C BSS 0 ENTRY
  17068. LDD EP
  17069. ZJN E1C3 IF *EP* NOT SET
  17070. LDD UP
  17071. ZJN E1C3 IF *UP* NOT SET
  17072.  
  17073. * RETURN STATUS TO USER.
  17074.  
  17075. E1C1 RJM GEA GET USER ERROR MESSAGE ADDRESS *EMRA*
  17076. ZJN E1C2 IF NO ERROR MESSAGE ADDRESS
  17077. LDM ERRMSG,P1 SPECIFY MESSAGE ADDRESS
  17078. RJM REM RETURN ERROR MESSAGE
  17079. E1C2 LJM UFF UPDATE FET FIELDS AND EXIT
  17080.  
  17081. * RECALL/ROLLOUT THE USER.
  17082.  
  17083. E1C3 RJM WCM SET MESSAGE IN *MS2W*
  17084. LDM SSID CHECK SUBSYSTEM ID
  17085. NJN E1C4 IF JOB NOT ROLLABLE
  17086. LDM ERRD SET ROLLOUT TIME
  17087. STD CM+2
  17088. LDM ERRE SET ROLLOUT EST ORDINAL
  17089. STD CM+3
  17090. LDM ERRC SET FOLDED ROLLOUT EVENT
  17091. STD CM+4
  17092. ADD CM+3
  17093. ADD CM+2
  17094. NJN E1C3.1 IF TIMED EVENT ROLLOUT
  17095. SOM E1CA SET SCHEDULER ROLLOUT OPTION
  17096. ERRNZ ROTE-ROSR-1 CODE DEPENDS ON VALUE
  17097. E1C3.1 LDD MA WRITE *ROCM* PARAMETERS TO MB
  17098. CWD CM
  17099. E1CA LDN ROTE SELECT TIMED/EVENT ROLLOUT
  17100. * LDN ROSR (SELECT SCHEDULER ROLLOUT)
  17101. STD CM+1
  17102. MONITOR ROCM REQUEST ROLLOUT
  17103. E1C4 LJM RCL SET FOR PFM RECALL AND EXIT PFM
  17104. E2C SPACE 4,15
  17105. ** E2C - EXIT 2 CASE PROCESSING.
  17106. *
  17107. * SPECIAL *UP* OR *RT* CONTROLLED FOR STAGE INITIATED
  17108. * PROCESSING.
  17109. *
  17110. * ENTRY (RT) = *RT* BOOLEAN.
  17111. * (UP) = *UP* BOOLEAN.
  17112. *
  17113. * EXIT IF *UP* OR *RT*,
  17114. * IF *EMRA*, COPY MESSAGE TO *EMRA* BUFFER.
  17115. * SET STATUS IN FET.
  17116. * EXIT PFM.
  17117. * SET MESSAGE AT *MS1W* IN *CPA* FOR THE JOB.
  17118. * IF SSID FIELD ZERO, ROLLOUT JOB.
  17119. * RECALL REQUEST.
  17120. * EXIT PFM.
  17121.  
  17122.  
  17123. E2C BSS 0 ENTRY
  17124. LDD UP
  17125. ZJN E2C2 IF *UP* NOT SET
  17126. E2C1 LJM E1C1 RETURN STATUS TO CALLER
  17127.  
  17128. E2C2 LDD RT
  17129. NJN E2C1 IF *RT* SET
  17130. UJP E1C3 COMPLETE FOR NOT *UP*/*RT*
  17131. E3C SPACE 4,15
  17132. ** E3C - EXIT 3 CASE PROCESSING.
  17133. *
  17134. * UNCONDITIONALLY ABORT THE REQUESTING JOB.
  17135. *
  17136. * EXIT MESSAGE ISSUED TO JOB DAYFILE.
  17137. * MESSAGE ISSUED TO SYSTEM DAYFILE.
  17138. *
  17139. * CALLS IDM, UFF.
  17140.  
  17141.  
  17142. E3C BSS 0 ENTRY
  17143. LDM ERRMSG,P1 ISSUE MESSAGE TO DAYFILE
  17144. RJM IDM
  17145.  
  17146. * ABORT THE JOB.
  17147.  
  17148. LDK STAJ SET *ABORT JOB* STATUS BIT
  17149. RAM STAU
  17150. LJM UFF UPDATE FET FIELDS AND EXIT
  17151. E4C SPACE 4,15
  17152. ** E4C - EXIT 4 CASE PROCESSING.
  17153. *
  17154. * SPECIAL *EP*/*IP* OR *EP*/*UP* CONTROLLED FOR TIME DEPENDENT
  17155. * PROCESSING WITH RECALL POSSIBILITY.
  17156. *
  17157. * ENTRY (EP) = *EP* BOOLEAN.
  17158. * (UP) = *UP* BOOLEAN.
  17159. * (EPOP) = ERROR PROCESSING OPTIONS.
  17160. *
  17161. * EXIT IF *EP*/*IP*, OR IF *EP*/*UP* AND NON-ROLLABLE JOB,
  17162. * IF EMRA, COPY MESSAGE TO EMRA BUFFER.
  17163. * SET STATUS IN FET.
  17164. * EXIT PFM.
  17165. * RECALL REQUEST.
  17166. * EXIT PFM.
  17167. *
  17168. * CALLS E1C1, RCL.
  17169.  
  17170.  
  17171. E4C BSS 0 ENTRY
  17172. LDD EP
  17173. ZJN E4C1 IF *EP* NOT SET
  17174. LDM EPOP
  17175. LPN 1
  17176. NJN E4C0 IF *IP* SET
  17177. LDD UP
  17178. ZJN E4C1 IF *UP* NOT SET
  17179. LDM SSID CHECK SUBSYSTEM ID
  17180. ZJN E4C1 IF ROLLABLE JOB
  17181. E4C0 LJM E1C1 RETURN STATUS TO USER
  17182.  
  17183. E4C1 RJM WCM SET MESSAGE IN *MS2W*
  17184. LJM RCL RECALL *PFM*
  17185. E5C SPACE 4,10
  17186. ** E5C - EXIT 5 CASE PROCESSING.
  17187. *
  17188. * SECURITY VIOLATION PROCESSING - ABORT JOB WITH *SVET* ERROR.
  17189. * IF CALLER IS *SSJ=*, PROCESS AS NORMAL ERROR.
  17190. *
  17191. * ENTRY (P1) = ERROR CODE.
  17192. *
  17193. * EXIT TO *E0C* IF CALLER IS *SSJ=*.
  17194. * MESSAGE ISSUED TO JOB DAYFILE.
  17195. * MESSAGE ISSUED TO SYSTEM DAYFILE.
  17196. * (SVET) = SECURITY VIOLATION ERROR FLAG SET.
  17197. *
  17198. * CALLS IDM, UFF.
  17199.  
  17200.  
  17201. E5C BSS 0 ENTRY
  17202. LDM SSJS
  17203. NJP E0C IF CALLER IS *SSJ=*
  17204. LDM ERRMSG,P1 ISSUE MESSAGE TO DAYFILE
  17205. RJM IDM
  17206.  
  17207. * ABORT THE JOB WITH AN *SVET* ERROR.
  17208.  
  17209. LDN SVET SET SECURITY VIOLATION ERROR FLAG
  17210. STD CM+1
  17211. MONITOR CEFM
  17212. LJM UFF UPDATE FET FIELDS AND EXIT
  17213. E6C SPACE 4,25
  17214. ** E6C - EXIT 6 CASE PROCESSING.
  17215. *
  17216. * SPECIAL *RT* CONTROLLED FOR TIME DEPENDENT PROCESSING OF
  17217. * AN INACCESSIBLE MASS STORAGE DEVICE.
  17218. *
  17219. * ENTRY (P1) = ERROR CODE.
  17220. * (P2) = EST ORDINAL OF DEVICE.
  17221. * (RT) = *RT* BOOLEAN.
  17222. * (PWRF) = RESTART FLAGS FOR *PFM* RECALL.
  17223. * *RT* IS SET IF THE CALLER IS A SUBSYSTEM.
  17224. *
  17225. * EXIT TO *E1C1*, IF *RT* SET, TO RETURN STATUS TO CALLER.
  17226. * TO *1RJ* TO ROLLOUT THE JOB.
  17227. *
  17228. * USES IR+4, MP - MP+4.
  17229. *
  17230. * CALLS PAF, *1RJ*.
  17231. *
  17232. * MACROS EXECUTE.
  17233.  
  17234.  
  17235. E6C BSS 0 ENTRY
  17236. LDD RT
  17237. NJP E1C1 IF *RT* SET
  17238.  
  17239. * SELECT EVENT ROLLOUT THROUGH OVERLAY *1RJ*.
  17240.  
  17241. RJM PAF PROCESS PF ACTIVITY COUNT AND FNT
  17242. LDN ZERL SET PARAMETER WORD FOR *PFM* RECALL
  17243. CRD MP
  17244. LDM PWRF RESTART FLAGS
  17245. STD MP
  17246. LDD P1 ERROR CODE
  17247. STD MP+1
  17248. LDD P2 SET EST ORDINAL
  17249. STD IR+4
  17250. EXECUTE 1RJ ROLLOUT THE JOB
  17251. E7C SPACE 4,10
  17252. ** E7C - EXIT 7 CASE PROCESSING.
  17253. *
  17254. * SPECIAL PROCESSING FOR TYPE 2 ERRORS IN *PURGE*. ISSUE THE
  17255. * ERROR MESSAGE TO THE ERROR LOG BUT DO NOT ABORT THE JOB.
  17256. *
  17257. * NOTE THAT CATALOG ENTRY FOR THE FILE HAS BEEN DELETED BEFORE
  17258. * THIS OVERLAY IS INVOKED IN THIS CASE.
  17259. *
  17260. * EXIT MESSAGE ISSUED TO ERROR LOG.
  17261. * ERROR CODE CLEARED.
  17262. *
  17263. * CALLS SEQ, UFF.
  17264.  
  17265.  
  17266. E7C BSS 0 ENTRY
  17267. RJM SEQ ISSUE ERROR LOG MESSAGE
  17268. LDN 0 CLEAR ERROR CODE
  17269. STD P1
  17270. LJM UFF UPDATE FET FIELDS AND EXIT
  17271. TITLE SUBROUTINES.
  17272. CPN SPACE 4,10
  17273. ** CPN - COPY NAME.
  17274. * COPIES NAME WITH BLANK FILL.
  17275. *
  17276. * ENTRY (T3) = SOURCE ADDRESS.
  17277. * (A) = DESTINATION ADDRESS.
  17278. *
  17279. * USES T3, P3.
  17280.  
  17281.  
  17282. CPN SUBR ENTRY/EXIT
  17283. STD P3 SAVE DESTINATION ADDRESS
  17284. ADN 3
  17285. STM CPNA
  17286. CPN1 LDI T3
  17287. SCN 77
  17288. NJN CPN2 IF NOT NULL CHARACTER
  17289. LDC 100*1R
  17290. CPN2 STI P3
  17291. LDI T3
  17292. LPN 77
  17293. NJN CPN3 IF NOT NULL CHARACTER
  17294. LDN 1R
  17295. CPN3 RAI P3 ASSEMBLE CHARACTERS
  17296. AOD T3
  17297. AOD P3
  17298. LMC **
  17299. CPNA EQU *-1
  17300. NJN CPN1 IF NOT LAST FULL BYTE
  17301. LDI T3
  17302. SCN 77
  17303. ZJN CPNX IF NULL CHARACTER
  17304. LMN 1R,
  17305. STI P3
  17306. UJN CPNX RETURN
  17307. GEA SPACE 4,15
  17308. ** GEA - GET ERROR MESSAGE RETURN ADDRESS.
  17309. *
  17310. * ENTRY (EP) = ERROR PROCESSING STATUS.
  17311. *
  17312. * EXIT (A) = 0 IF *EP* OR *EMRA* NOT SPECIFIED.
  17313. * (A) = *EMRA* ADDRESS IF *EP* AND *EMRA* SPECIFIED.
  17314.  
  17315.  
  17316. GEA SUBR ENTRY/EXIT
  17317. LDD EP
  17318. ZJN GEAX IF *EP* BOOLEAN NOT SET IN *FET*
  17319. LDM EMRA FORM *EMRA* BASE ADDRESS
  17320. LPN 37
  17321. SHN 14
  17322. ADM EMRA+1
  17323. UJN GEAX RETURN WITH*EMRA*
  17324. IDM SPACE 4,10
  17325. ** IDM - ISSUE DAYFILE MESSAGE.
  17326. *
  17327. * ENTRY (A) = ADDRESS OF MESSAGE PLUS DESTINATION.
  17328. *
  17329. * EXIT ISSUES MESSAGE WITH FET ADDRESS.
  17330. *
  17331. * USES T1 - T4.
  17332. *
  17333. * CALLS DFM, C2D.
  17334.  
  17335.  
  17336. IDM SUBR ENTRY/EXIT
  17337. STD T4 SAVE ADDRESS
  17338. STD T1
  17339. SHN -14
  17340. STD T3
  17341. LDM SFAA
  17342. LPN 77
  17343. ADM SFAA+1
  17344. ZJN IDM1 IF NO FET ADDRESS PRESET
  17345. LDM EPOP CHECK ADDRESS SUPPRESS BIT
  17346. LPN 20
  17347. ZJN IDM2 IF FET ADDRESS NOT TO BE SUPPRESSED
  17348. IDM1 LJM IDM6 ISSUE MESSAGE WITHOUT ADDRESS
  17349.  
  17350. * FIND END OF MESSAGE.
  17351.  
  17352. IDM2 LDI T1
  17353. SHN -6
  17354. ZJN IDM3 IF END OF MESSAGE
  17355. LDI T1
  17356. LPN 77
  17357. ZJN IDM4 IF END OF MESSAGE
  17358. AOD T1
  17359. UJN IDM2 LOOP
  17360.  
  17361. IDM3 SOD T1 REPLACE *.* WITH *,*
  17362. LDI T1
  17363. SCN 77
  17364. ADN 1R,
  17365. STI T1
  17366. AOD T1
  17367. UJN IDM5 ADD FET ADDRESS TO MESSAGE
  17368.  
  17369. IDM4 LDC 2R, REPLACE *.* WITH *,*
  17370. STI T1
  17371. AOD T1
  17372.  
  17373. * STORE * AT * AT END OF MESSAGE.
  17374.  
  17375. IDM5 LDC 2R A
  17376. STI T1
  17377. AOD T1
  17378. LDC 2RT
  17379. STI T1
  17380. AOD T1
  17381.  
  17382. * SET FET ADDRESS IN MESSAGE.
  17383.  
  17384. RJM SFA CONVERT FET ADDRESS
  17385. SHN 14
  17386. SBD RA
  17387. SHN 6
  17388. STD T2
  17389. SHN -14
  17390. RJM C2D CONVERT DIGITS
  17391. STI T1
  17392. AOD T1
  17393. LDD T2
  17394. SHN -6
  17395. RJM C2D CONVERT DIGITS
  17396. STI T1
  17397. AOD T1
  17398. LDD T2
  17399. RJM C2D CONVERT DIGITS
  17400. STI T1
  17401. AOD T1
  17402. LDC 2R.
  17403. STI T1
  17404. AOD T1
  17405. LDN 0 SET ZERO BYTE
  17406. STI T1
  17407.  
  17408. * ISSUE MESSAGE.
  17409.  
  17410. IDM6 LDD T3 RESET MESSAGE ADDRESS
  17411. SHN 14
  17412. ADD T4
  17413. RJM DFM ISSUE MESSAGE
  17414. LJM IDMX RETURN
  17415. MEC SPACE 4,15
  17416. ** MEC - MODIFY ERROR CODES.
  17417. *
  17418. * ENTRY (P1) = ERROR CODE FOR POSSIBLE MODIFICATION.
  17419. *
  17420. * EXIT (P1) = ERROR CODE TO BE REPORTED IN THE *FET*.
  17421.  
  17422.  
  17423.  
  17424. * CHANGE CODE WHICH REPORTS A WAIT FOR AN INACCESSIBLE
  17425. * DEVICE TO *PF UTILITY ACTIVE*.
  17426.  
  17427. MEC2 LMK /ERRMSG/WID&/ERRMSG/FIA
  17428. NJN MECX IF NOT *WID*, RETURN
  17429. LDK /ERRMSG/PFA CHANGE ERROR CODE TO *PFA*
  17430. STD P1
  17431.  
  17432. MEC SUBR ENTRY/EXIT
  17433. LDD P1 CHECK FOR ERROR CODES TO MODIFY
  17434. LMN /ERRMSG/FDA
  17435. ZJN MEC1 IF *FDA* THEN MODIFY
  17436. LMN /ERRMSG/FIA&/ERRMSG/FDA
  17437. NJN MEC2 IF NOT *FIA*
  17438. MEC1 LDN /ERRMSG/FNF CHANGE ERROR CODE TO *FNF*
  17439. STD P1
  17440. UJN MECX RETURN
  17441. MFN SPACE 4,10
  17442. ** MFN - MERGE FILE NAME WITH MESSAGE.
  17443. *
  17444. * ENTRY (A) = FIRST WORD ADDRESS OF MESSAGE.
  17445. * (FN - FN+3) = FILE NAME.
  17446. *
  17447. * EXIT (A) = FIRST WORD ADDRESS OF MESSAGE.
  17448. *
  17449. * USES T1 - T3.
  17450.  
  17451.  
  17452. MFN SUBR ENTRY/EXIT
  17453. STD T1 SAVE MESSAGE ADDRESS
  17454. LDC MBUF ASSEMBLY AREA
  17455. STD T2
  17456. LDN 1R BLANK FIRST CHARACTER
  17457. STI T2
  17458. AOD T2
  17459. LDN FN
  17460. STD T3
  17461. LDD FN+3 CLEAR TRAILING CONTROL INFORMATION
  17462. SCN 77
  17463. STD FN+3
  17464. MFN1 LDI T3 GET BYTE
  17465. SHN -6 UPPER CHARACTER
  17466. ZJN MFN2 IF END OF FILE NAME
  17467. STI T2
  17468. AOD T2
  17469. LDI T3 LOWER CHARACTER
  17470. LPN 77
  17471. ZJN MFN2 IF END OF FILE NAME
  17472. STI T2
  17473. AOD T2
  17474. AOD T3
  17475. UJN MFN1 LOOP TO END OF FILE NAME
  17476.  
  17477. MFN2 LDN 1R INSERT SPACE
  17478. STI T2
  17479. AOD T2
  17480. MFN3 LDI T1 UPPER MESSAGE CHARACTER
  17481. SHN -6
  17482. STI T2
  17483. ZJN MFN4 IF END OF MESSAGE
  17484. AOD T2
  17485. LDI T1 LOWER MESSAGE CHARACTER
  17486. LPN 77
  17487. STI T2
  17488. ZJN MFN4 IF END OF MESSAGE
  17489. AOD T2
  17490. AOD T1
  17491. UJN MFN3 MOVE NEXT CHARACTER
  17492.  
  17493. MFN4 STM 1,T2 SET END OF MESSAGE
  17494. STM 2,T2
  17495. LDC MBUF
  17496. STD T1
  17497. STD T3
  17498. MFN5 LDI T1
  17499. ZJN MFN6 IF END OF MESSAGE REACHED
  17500. SHN 6
  17501. LMM 1,T1
  17502. STI T3
  17503. AOD T3
  17504. LDN 2
  17505. RAD T1
  17506. UJN MFN5 LOOP TO COMPLETE MESSAGE
  17507.  
  17508. MFN6 STI T3 SET END OF MESSAGE
  17509. LDC MBUF EXIT WITH (A) = MESSAGE ADDRESS
  17510. LJM MFNX RETURN
  17511. PAF SPACE 4,15
  17512. ** PAF - PROCESS PF ACTIVITY COUNT AND LOCAL FILE FNT.
  17513. *
  17514. * ENTRY (EPFA) = EST ORDINAL OF DEVICE IF PF ACTIVITY
  17515. * TO BE DECREMENTED.
  17516. * (FNTA) = FNT ADDRESS OF LOCAL FILE.
  17517. *
  17518. * EXIT LOCAL FILE FNT SET COMPLETE.
  17519. * PF ACTIVITY COUNT DECREMENTED IF IT WAS SET.
  17520. *
  17521. * USES CM - CM+4, FS - FS+4.
  17522. *
  17523. * MACROS MONITOR.
  17524.  
  17525.  
  17526. PAF SUBR ENTRY/EXIT
  17527.  
  17528. * DECREMENT PF ACTIVITY COUNT.
  17529.  
  17530. LDM EPFA EST ORDINAL
  17531. ZJN PAF1 IF ACTIVITY NOT SET
  17532. STD CM+1
  17533. LDN DPAS DECREMENT PF ACTIVITY COUNT
  17534. STD CM+3
  17535. MONITOR STBM
  17536.  
  17537. * SET LOCAL FILE FNT COMPLETE.
  17538.  
  17539. PAF1 LDM FNTA
  17540. STD FA
  17541. ZJN PAFX IF NO LOCAL FILE FNT, RETURN
  17542. NFA FA,R
  17543. ADN FSTL
  17544. CRD FS
  17545. LDD FS+4 SET FST COMPLETE
  17546. SCN 1
  17547. ADN 1
  17548. STD FS+4
  17549. NFA FA,R
  17550. ADN FSTL
  17551. CWD FS
  17552. UJN PAFX RETURN
  17553. PEA SPACE 4,15
  17554. ** PEA - PROCESS ERRORS REQUIRING SPECIAL ACTION.
  17555. *
  17556. * ENTRY (P1) = ERROR CODE.
  17557. * (EP) = *EP* BOOLEAN FROM *FET*.
  17558. * (SEPB) = EXIT CASE.
  17559. *
  17560. * EXIT IF THE USER IS NOT PROCESSING ERRORS;
  17561. * SET *TKET* ERROR FLAG IF *PRL* ERROR.
  17562. * SET *FLET* ERROR FLAG IF *LFL* ERROR.
  17563. * THE *STAJ* (ABORT JOB) STATUS BIT IS SET.
  17564. *
  17565. * USES CM - CM+4.
  17566. *
  17567. * MACROS MONITOR.
  17568.  
  17569.  
  17570. PEA SUBR ENTRY/EXIT
  17571. LDD EP
  17572. NJN PEAX IF *EP* SPECIFIED
  17573. LDD P1 CHECK ERROR TYPE
  17574. LMN /ERRMSG/PRL
  17575. NJN PEA1 IF NOT TRACK LIMIT
  17576. LDN TKET SET *TKET* ERROR FLAG
  17577. STD CM+1
  17578. UJN PEA2 SET TRACK LIMIT
  17579.  
  17580. PEA1 LMN /ERRMSG/LFL&/ERRMSG/PRL CHECK ERROR TYPE
  17581. NJN PEA3 IF NOT FILE LIMIT
  17582. LDN FLET SET *FLET* ERROR FLAG
  17583. STD CM+1
  17584. PEA2 MONITOR CEFM
  17585. UJN PEAX RETURN
  17586.  
  17587. PEA3 LDM SEPB
  17588. NJN PEAX IF SPECIAL EXIT CASE
  17589. LDK STAJ SET *ABORT JOB* STATUS BIT
  17590. RAM STAU
  17591. UJN PEAX RETURN
  17592. PEM SPACE 4,15
  17593. ** PEM - PROCESS ERROR MESSAGE.
  17594. *
  17595. * ENTRY (P1) = ERROR CODE.
  17596. * (EP) = *EP* BOOLEAN FROM FET (0 OR 1).
  17597. *
  17598. * EXIT ERROR MESSAGE ISSUED BY TYPE.
  17599. *
  17600. * USES T1.
  17601. *
  17602. * CALLS DFM, GEA, IDM, MFN, PEA, REM, SEQ.
  17603.  
  17604.  
  17605. PEM SUBR ENTRY/EXIT
  17606. LDD P1
  17607. ZJN PEMX IF NO ERROR (*RPFSTAT* REQUEST)
  17608. LDM ERRCLS,P1 ERROR TYPE OR CLASS
  17609. STD T1
  17610. SHN 1 DETERMINE MESSAGE CODE BASE ADDRESS
  17611. ADC TDMO
  17612. STM PEMB SET MESSAGE CODE ADDRESS
  17613. LDM PEMA,T1 ESTABLISH CASE OF MESSAGE TYPE
  17614. STM PEMA
  17615. LJM PEM1 TYPE = 0 (FILE NAME REQUIRED)
  17616. PEMA EQU *-1
  17617. CON PEM2 TYPE = 1 (ISSUE TO JOB DAYFILE ONLY)
  17618. CON PEM5 TYPE = 2 (SYSTEM ERROR)
  17619. CON PEM6 TYPE = 3 (NO MESSAGE ERROR)
  17620.  
  17621. * PROCESS TYPE 0 ERROR MESSAGE.
  17622.  
  17623. PEM1 LDM ERRMSG,P1 BASE ADDRESS OF MESSAGE
  17624. RJM MFN MERGE FILENAME AND MESSAGE
  17625. STM ERRMSG,P1 SET NEW ERROR MESSAGE ADDRESS
  17626.  
  17627. * PROCESS TYPE 1 ERROR MESSAGE.
  17628.  
  17629. PEM2 RJM GEA GET USER ERROR MESSAGE ADDRESS *EMRA*
  17630. ZJN PEM3 IF ERMSG AND *EP* NOT SPECIFIED
  17631. LDM ERRMSG,P1 SPECIFY MESSAGE ADDRESS
  17632. RJM REM RETURN ERROR MESSAGE
  17633. UJN PEM4 RETURN
  17634.  
  17635. PEM3 RJM PEA PROCESS ERRORS REQUIRING SPECIAL ACTION
  17636. LDM **,EP GET MESSAGE OPTION
  17637. PEMB EQU *-1 (TABLE ADDRESS FOR MESSAGE TYPE)
  17638. SHN 14 POSITION
  17639. MJN PEM4 IF NO MESSAGE TO ISSUE
  17640. ADM ERRMSG,P1 ADD MESSAGE ADDRESS
  17641. RJM IDM ISSUE MESSAGE
  17642. PEM4 LJM PEMX RETURN
  17643.  
  17644. * PROCESS TYPE 2 ERROR MESSAGE.
  17645. * SYSTEM ERROR - ISSUE *SYSTEM ERROR* TO JOB DAYFILE.
  17646.  
  17647. PEM5 LDC PEMD+CPON *SYSTEM ERROR*
  17648. RJM DFM
  17649. RJM SEQ ISSUE ERROR LOG MESSAGE
  17650. UJN PEM2 COMPLETE ERROR PROCESSING
  17651.  
  17652. * PROCESS TYPE 3 ERROR MESSAGE.
  17653.  
  17654. PEM6 LDM ERRMSG,P1 SET MESSAGE DESTINATION ADDRESS
  17655. STM PEMC
  17656. LDD CP READ MESSAGE AT CP AREA
  17657. ADN MS1W
  17658. CRM **,TR
  17659. PEMC EQU *-1
  17660. LJM PEM2 COMPLETE ERROR PROCESSING
  17661.  
  17662. PEMD DATA C*SYSTEM ERROR.*
  17663. TDMO SPACE 4,10
  17664. ** TDMO - TABLE OF DAYFILE MESSAGE OPTIONS.
  17665. *
  17666. *T 12/(OPTION IF CP ABORTING),12/(OPTION IF *EP* SET)
  17667. * BIT 5 IS SET IF NO MESSAGE IS TO BE ISSUED.
  17668.  
  17669.  
  17670. TDMO BSS 0
  17671. CON 0,CPON/10000B TYPE 0
  17672. CON 0,CPON/10000B TYPE 1
  17673. CON NMSN/10000B,NMSN/10000B TYPE 2
  17674. CON 40B,40B TYPE 3
  17675. PPF SPACE 4,15
  17676. ** PPF - PROCESS SPECIAL *PFM* FILES.
  17677. *
  17678. * ENTRY (FNTA) = LOCAL FILE FNT ADDRESS.
  17679. * (ERRB) = 0 IF LOCAL FILE CREATED BY *PFM*.
  17680. * (FNTB) = /PFM*PFN/ FNT ADDRESS.
  17681. * (FNTC) = /PFM*ILK/ FNT ADDRESS.
  17682. * (FNTD) = /PFM*APF/ FNT ADDRESS.
  17683. *
  17684. * EXIT FILES UNLOADED IF CREATED BY *PFM*.
  17685. *
  17686. * CALLS *0DF*.
  17687.  
  17688.  
  17689. PPF SUBR ENTRY/EXIT
  17690. LDN 1
  17691. STM LOCF-1 SET *UNLOAD* OPTION FOR *0DF*
  17692.  
  17693. * PROCESS LOCAL FILE.
  17694.  
  17695. LDM FNTA
  17696. ZJN PPF1 IF NO LOCAL FILE FNT
  17697. STD FA
  17698. LDM ERRB
  17699. NJN PPF1 IF LOCAL FILE NOT CREATED BY *PFM*
  17700. PPFA LDN 0
  17701. * LDN 1 (*SYOT* + *GET* + *FILE LENGTH ERROR*)
  17702. NJN PPF1 IF FILE SHOULD NOT BE RETURNED
  17703. EXECUTE 0DF,LOCF
  17704. MJN PPF1 IF DEVICE INACCESSIBLE
  17705. LDN 0 CLEAR LOCAL FILE FNT ADDRESS
  17706. STM FNTA
  17707.  
  17708. * PROCESS /PFM*PFN/.
  17709.  
  17710. PPF1 LDM FNTB GET FNT ADDRESS
  17711. ZJN PPF2 IF FILE NOT PRESENT
  17712. STD FA
  17713. EXECUTE 0DF,LOCF
  17714.  
  17715. * PROCESS /PFM*ILK/.
  17716.  
  17717. PPF2 LDM FNTC GET FNT ADDRESS
  17718. ZJN PPF3 IF FILE NOT PRESENT
  17719. STD FA
  17720. EXECUTE 0DF,LOCF
  17721.  
  17722. * PROCESS /PFM*APF/.
  17723.  
  17724. PPF3 LDM FNTD GET FNT ADDRESS
  17725. ZJN PPF4 IF FILE NOT PRESENT
  17726. STD FA
  17727. EXECUTE 0DF,LOCF
  17728. PPF4 LJM PPFX RETURN
  17729. RCL SPACE 4,15
  17730. ** RCL - RECALL PFM.
  17731. *
  17732. * ENTRY (P1) = ERROR CODE.
  17733. * (PWRF) = RESTART FLAGS.
  17734. *
  17735. * EXIT (CN - CN+4) = INPUT REGISTER FOR *PFM* RECALL.
  17736. * (FN - FN+4) = RECALL REQUEST FOR MONITOR.
  17737. * (MP - MP+4) = PARAMETER WORD FOR *PFM* RECALL.
  17738. * (AIPF, AIPF+1) = 0.
  17739. * (STAU) = *STRP* BIT SET TO RECALL *PFM*.
  17740. * TO *3PU* TO RECALL *PFM*.
  17741.  
  17742.  
  17743. RCL BSS 0 ENTRY
  17744. LDN 0 CLEAR PF ACCUMULATOR INCREMENT
  17745. STM AIPF
  17746. STM AIPF+1
  17747. LDN ZERL
  17748. CRD FN SET RECALL REQUEST
  17749. CRD MP SET PARAMETER WORD
  17750. LDM PWRF RESTART FLAGS
  17751. STD MP
  17752. LDD P1 ERROR CODE
  17753. STD MP+1
  17754. LDD IA READ INPUT REQUEST REGISTER
  17755. CRD CN
  17756. LDD MP+1 CHECK ERROR CODE
  17757. LMK /ERRMSG/RTR
  17758. NJN RCL2 IF NOT RETRY REQUEST
  17759. LDD CC COMMAND CODE
  17760. LMN CCRS
  17761. NJN RCL1 IF NOT *RPFSTAT* REQUEST
  17762. LDD CN+2 SET ORIGINAL COMMAND CODE IN REQUEST
  17763. SCN 77
  17764. LMM PWCC
  17765. STD CN+2
  17766. RCL1 LDN 0
  17767. UJN RCL3 SET DELAY TO 0 MILLISECONDS
  17768.  
  17769. RCL2 LDC 250D SET DELAY TO 250D MILLISECONDS
  17770. RCL3 STD FN+4
  17771. LDC PTMF SET TIMED RECALL
  17772. STD FN+1
  17773. LDK STRP SET *RECALL PFM* STATUS BIT
  17774. RAM STAU
  17775. EXECUTE 3PU RECALL *PFM*
  17776. REM SPACE 4,10
  17777. ** REM - RETURN ERROR MESSAGE.
  17778. *
  17779. * ENTRY (A) = ADDRESS OF ERROR MESSAGE.
  17780. * (EMRA - EMRA+1) ADDRESS FOR MESSAGE RETURN.
  17781. *
  17782. * CALLS NONE
  17783. *
  17784. * USES T1, T2, T3
  17785.  
  17786.  
  17787. REM SUBR
  17788. STM REMA SAVE MESSAGE ADDRESS
  17789. STD T1
  17790. LDN 5 SET BYTES PER WORD
  17791. STD T2
  17792. LDN 1
  17793. STD T3 INITIALIZE CM WORD COUNT
  17794.  
  17795. REM1 LDI T1 SEARCH FOR END OF MESSAGE
  17796. ZJN REM2 IF ZERO BYTE FOUND
  17797. AOD T1
  17798. SOD T2
  17799. NJN REM1 IF NOT FULL CM WORD
  17800. AOD T3
  17801. LDN 5
  17802. STD T2 RESET BYTES PER WORD
  17803. UJN REM1 CONTINUE TO END OF MESSAGE
  17804.  
  17805. REM2 AOD T1 CLEAR REMAINDER OF MESSAGE TO FULL WORD
  17806. SOD T2
  17807. ZJN REM3 IF FULL CM WORD
  17808. LDN 0
  17809. STI T1 CLEAR MESSAGE TAIL
  17810. UJN REM2 LOOP FOR FULL CM WORD
  17811.  
  17812. REM3 LDM EMRA STORE MESSAGE
  17813. LPN 37
  17814. SHN 6
  17815. ADD RA
  17816. SHN 6
  17817. ADM EMRA+1
  17818. CWM *,T3 SEND MESSAGE TO CENTRAL
  17819. REMA EQU *-1
  17820. LJM REMX RETURN
  17821. SEQ SPACE 4,12
  17822. ** SEQ - SET EQUIPMENT INFORMATION IN MESSAGE.
  17823. *
  17824. * SETS THE DEVICE TYPE, EST ORDINAL AND DEVICE NUMBER INTO
  17825. * THE ERROR MESSAGE AND ISSUES IT TO THE ERROR LOG. ALSO
  17826. * ISSUES TO THE ERROR LOG EITHER A MESSAGE SPECIFYING FAMILY,
  17827. * FILE NAME AND USER INDEX, OR A MESSAGE SPECIFYING TRACK
  17828. * AND SECTOR.
  17829. *
  17830. * ENTRY (CC) = COMMAND CODE.
  17831. * (P1) = ERROR CODE.
  17832. * (P2) = EST ORDINAL.
  17833. * (ERRC) = TRACK (FOR *BCS* ERROR).
  17834. * (ERRD) = SECTOR (FOR *BCS* ERROR).
  17835. *
  17836. * CALLS CFN, C2D, DFM.
  17837. *
  17838. * USES T2, T3, CM - CM+4.
  17839. *
  17840. * MACROS SFA.
  17841.  
  17842.  
  17843. SEQ6 LDM ERRMSG,P1 ISSUE MESSAGE TO ERRLOG
  17844. ADC ERLN
  17845. RJM DFM
  17846. SEQA LDN 0
  17847. * LDN 1 (EXTENDED MESSAGE REQUIRED)
  17848. ZJN SEQX IF EXTENDED MESSAGE NOT REQUIRED
  17849. LDC SEQB+ERLN ISSUE FM/PF/UI EXTENDED MESSAGE
  17850. * LDC SEQD+ERLN (ISSUE TRACK/SECTOR EXTENDED MESSAGE)
  17851. SEQE EQU *-1
  17852. RJM DFM
  17853. SEQF UJN SEQX RETURN
  17854. * PSN (ERROR IDLE SET)
  17855. LDC SEQG+ERLN *EQXXX, ERROR IDLE SET.*
  17856. RJM DFM
  17857.  
  17858. SEQ SUBR ENTRY/EXIT
  17859. LDD P1
  17860. LMN /ERRMSG/RSE
  17861. ZJN SEQ6 IF RESEX ERROR
  17862. AOM SEQA FLAG EXTENDED MESSAGE REQUIRED
  17863. LDM ERRMSG,P1 SET MESSAGE ADDRESS
  17864. STD T2
  17865. LDD P2 CONVERT UPPER TWO DIGITS OF EST ORDINAL
  17866. SHN -3
  17867. RJM C2D
  17868. STM 1,T2
  17869. STM SEQB+1
  17870. STM SEQD+1
  17871. STM SEQG+1
  17872. LDD P2 CONVERT LOWER DIGIT OF EST ORDINAL
  17873. LPN 7
  17874. SHN 6
  17875. ADC 2R0,
  17876. STM 2,T2
  17877. STM SEQB+2
  17878. STM SEQD+2
  17879. STM SEQG+2
  17880. SFA EST,P2 READ EST ENTRY
  17881. ADK EQDE
  17882. CRD CM
  17883. LDD CM+4 READ PFGL WORD OF MST
  17884. SHN 3
  17885. ADN PFGL
  17886. CRD CM
  17887. LDD CM+3 CONVERT DEVICE NUMBER
  17888. RJM C2D
  17889. STM 4,T2
  17890. LDD P1
  17891. LMN /ERRMSG/BCS
  17892. NJN SEQ1 IF NOT *BAD CATALOG/PERMIT SECTOR*
  17893. LJM SEQ5 PROCESS TRACK/SECTOR ERROR MESSAGE
  17894.  
  17895. * SET UP *EQXXX, FM= ,PF= ,UI= .* MESSAGE.
  17896.  
  17897. SEQ1 LDN CM COPY FAMILY NAME
  17898. STD T3
  17899. LDC SEQB+5 COPY NAME TO BUFFER
  17900. RJM CPN
  17901. LDD CC
  17902. LMN CCCT
  17903. NJN SEQ2 IF NOT CATLIST ERROR
  17904. LDD FN
  17905. NJN SEQ2 IF FILE NAME DEFINED
  17906. LDC SEQC SET FILE NAME TO *PERMITS*
  17907. UJN SEQ4 SET *PERMITS* ADDRESS
  17908.  
  17909. SEQ2 LDM PFFN CHECK PERMANENT FILE NAME
  17910. ZJN SEQ3 IF NOT SPECIFIED IN FET
  17911. LDC PFFN SET ADDRESS OF PERMANENT FILE NAME
  17912. UJN SEQ4 SET ADDRESS
  17913.  
  17914. SEQ3 LDN FN SET ADDRESS OF LOCAL FILE NAME
  17915. SEQ4 STD T3
  17916. LDC SEQB+13
  17917. RJM CPN
  17918. LDD UI+1 COPY USER INDEX
  17919. RJM C2D
  17920. STM SEQB+23
  17921. LDD UI+1
  17922. SHN -6
  17923. RJM C2D
  17924. STM SEQB+22
  17925. LDD UI
  17926. RJM C2D
  17927. STM SEQB+21
  17928. LJM SEQ6 ISSUE MESSAGES
  17929.  
  17930. * SET UP *EQXXX, TK= ,SC= .* MESSAGE.
  17931.  
  17932. SEQ5 LDM ERRC CONVERT TRACK NUMBER
  17933. SHN -6
  17934. RJM C2D
  17935. STM SEQD+5
  17936. LDM ERRC
  17937. RJM C2D
  17938. STM SEQD+6
  17939. LDM ERRD CONVERT SECTOR NUMBER
  17940. SHN -6
  17941. RJM C2D
  17942. STM SEQD+11
  17943. LDM ERRD
  17944. RJM C2D
  17945. STM SEQD+12
  17946. LDN SEQD-SEQB FORCE TRACK/SECTOR OF EXTENDED MESSAGE
  17947. RAM SEQE
  17948. LJM SEQ6 ISSUE MESSAGES
  17949.  
  17950. SEQB DATA C*EQXXX, FM= , PF= , UI= .*
  17951. SEQC DATA C*PERMITS*
  17952. SEQD DATA C*EQXXX, TK= ,SC= .*
  17953. SEQG DATA C*EQXXX, ERROR IDLE SET.*
  17954. UFF SPACE 4,15
  17955. ** UFF - UPDATE FET FIELDS.
  17956. *
  17957. * ENTRY (P1) = ERROR CODE.
  17958. *
  17959. * EXIT TO *3RT*.
  17960. * (FN - FN+4) = FET + 0 WITH ERROR STATUS SET.
  17961. * (FS - FS+4) = FET + 1.
  17962. * (STAU) = *STDS* FLAG SET TO DROP PP.
  17963. *
  17964. * USES T1, T2.
  17965. *
  17966. * CALLS MEC, SFA, *3PU*.
  17967.  
  17968.  
  17969. UFF BSS 0 ENTRY
  17970. RJM MEC MODIFY ERROR CODE IF NEEDED
  17971. RJM SFA READ FIRST WORD OF *FET*
  17972. ZJN UFF1 IF NO FET ADDRESS
  17973. CRD FN
  17974. ADN 1 READ FET + 1
  17975. CRD FS
  17976. LDD P1 FORM MSB OF ERROR CODE
  17977. SHN -2
  17978. STD T2
  17979. LDD P1 FORM LSB OF ERROR CODE
  17980. LPN 3
  17981. SHN 13-1
  17982. ADN 1 SET COMPLETE BIT
  17983. STD T1
  17984. LDD FN+3 MERGE WITH END OF FILE NAME
  17985. SCN 77
  17986. ADD T2
  17987. STD FN+3
  17988. LDD FN+4
  17989. LPC 1776 CLEAR COMPLETE AND ERROR CODE BITS
  17990. ADD T1
  17991. STD FN+4
  17992. UFF1 LDK STDS SET *DROP PP* STATUS BIT
  17993. RAM STAU
  17994. EXECUTE 3PU DROP PP
  17995. WCM SPACE 4,15
  17996. ** WCM - WRITE CONTROL POINT MESSAGE.
  17997. *
  17998. * ENTRY (P1) = ERROR CODE.
  17999. *
  18000. * EXIT MESSAGE WRITTEN TO *MS2W* OF JOB CONTROL POINT.
  18001. *
  18002. * USES T1.
  18003. *
  18004. * CALLS MFN.
  18005.  
  18006.  
  18007. WCM SUBR ENTRY/EXIT
  18008. LDM ERRCLS,P1 CHECK MESSAGE TYPE
  18009. NJN WCM1 IF NOT TYPE 0 MESSAGE
  18010. LDM ERRMSG,P1 MERGE FILE NAME WITH MESSAGE
  18011. RJM MFN
  18012. UJN WCM2 SETUP TO WRITE MESSAGE
  18013.  
  18014. WCM1 LDM ERRMSG,P1
  18015. WCM2 STM WCMA SET FOR MESSAGE COPY TO *MS2W*
  18016. ADN 5*3-1 FORCE END OF LINE
  18017. STM WCMB+1
  18018. LDN 0
  18019. WCMB STM *
  18020. LDD CP SET DESTINATION ADDRESS
  18021. ADN MS2W
  18022. CWM *,TR COPY MESSAGE TO *MS2W* OF JOB
  18023. WCMA EQU *-1
  18024. UJN WCMX RETURN
  18025. TITLE ERROR MESSAGES.
  18026. ** ERROR MESSAGES.
  18027. *
  18028. * FORMAT (FIRST WORD), ERROR DESTINATION FLAG.
  18029. * (SECOND WORD), FIRST WORD ADDRESS OF MESSAGE.
  18030. *
  18031. * CONTENTS OF FIRST WORD.
  18032. * 0, SEND FILE NAME MESSAGE TO CONTROL POINT DAYFILE.
  18033. * 1, SEND MESSAGE TO CONTROL POINT DAYFILE.
  18034. * 2, SEND MESSAGE TO CONTROL POINT DAYFILE AND ERRORLOG.
  18035.  
  18036.  
  18037. LIST -R
  18038.  
  18039. MXER EQU /ERRMSG/MXER
  18040. ERRCLS INDEX
  18041.  
  18042. FBS ERRMSG 0,(BUSY.)
  18043. FNF ERRMSG 0,(NOT FOUND.)
  18044. EFL ERRMSG 0,(EMPTY.)
  18045. NMS ERRMSG 0,(NOT ON MASS STORAGE.)
  18046. FAP ERRMSG 0,(ALREADY PERMANENT.)
  18047. IFT ERRMSG 0,(INCORRECT FILE TYPE.)
  18048.  
  18049. FNE ERRMSG 1,( FILE NAME ERROR.)
  18050. IUA ERRMSG 1,( USER ACCESS NOT VALID.)
  18051. IDR ERRMSG 1,( INCORRECT DEVICE REQUEST.)
  18052. FTL ERRMSG 1,( FILE TOO LONG.)
  18053. ILR ERRMSG 1,( PFM INCORRECT REQUEST.)
  18054. PFN ERRMSG 1,( DEVICE UNAVAILABLE.)
  18055. DAD ERRMSG 1,( DIRECT ACCESS DEVICE ERROR.)
  18056. PFA ERRMSG 1,( PF UTILITY ACTIVE.)
  18057. DTE ERRMSG 1,( DATA TRANSFER ERROR.)
  18058. COF ERRMSG 1,( TOO MANY PERMANENT FILES.)
  18059. COS ERRMSG 1,( TOO MUCH INDIRECT ACCESS FILE SPACE.)
  18060. SPN ERRMSG 1,( PRUS REQUESTED UNAVAILABLE.)
  18061. IOE ERRMSG 1,( I/O SEQUENCE ERROR.)
  18062. LFL ERRMSG 1,( LOCAL FILE LIMIT.)
  18063. PRL ERRMSG 1,( PRU LIMIT.)
  18064. PLE ERRMSG 1,( PERMIT LIMIT EXCEEDED.)
  18065. PAE ERRMSG 1,( PFM ARGUMENT ERROR.)
  18066. RSE ERRMSG 2,( RESEX FAILURE.)
  18067. TKL ERRMSG 2,(EQXXX,DNYY, TRACK LIMIT.)
  18068. FLE ERRMSG 2,(EQXXX,DNYY, FILE LENGTH ERROR.)
  18069. RIN ERRMSG 2,(EQXXX,DNYY, RANDOM INDEX ERROR.)
  18070. DAF ERRMSG 2,(EQXXX,DNYY, DIRECT ACCESS FILE ERROR.)
  18071. RPE ERRMSG 2,(EQXXX,DNYY, REPLACE ERROR.)
  18072. ABT ERRMSG 2,(EQXXX,DNYY, PFM ABORTED.)
  18073. MSE ERRMSG 2,(EQXXX,DNYY, MASS STORAGE ERROR.)
  18074. EDA ERRMSG 1,( ERROR IN FILE DATA.)
  18075. EPT ERRMSG 1,( ERROR IN PERMIT DATA.)
  18076. EDP ERRMSG 1,( DATA/PERMIT ERRORS.)
  18077. FLC ERRMSG 1,( EOI CHANGED BY RECOVERY.)
  18078. NEM ERRMSG 3,( )
  18079. RS2 ERRMSG 1,() RESERVED
  18080. RS3 ERRMSG 1,() RESERVED
  18081. RS4 ERRMSG 1,() RESERVED
  18082. FSE ERRMSG 2,(EQXXX,DNYY, FILE BOI/EOI/UI MISMATCH.)
  18083. SSE ERRMSG 2,(EQXXX,DNYY, SYSTEM SECTOR ERROR.)
  18084. BCS ERRMSG 2,(EQXXX,DNYY, BAD CATALOG/PERMIT SECTOR.)
  18085. TNR ERRMSG 2,(EQXXX,DNYY, TRACK NOT RESERVED.)
  18086. PPE ERRMSG 0,(PERMANENT ERROR.)
  18087. PSI ERRMSG 0,(STAGE INITIATED.)
  18088. PWE ERRMSG 0,(WAITING FOR SUBSYSTEM.)
  18089. FIN ERRMSG 0,(INTERLOCKED.)
  18090. FDA ERRMSG 0,(IS DIRECT ACCESS.)
  18091. FIA ERRMSG 0,(IS INDIRECT ACCESS.)
  18092. FEO ERRMSG 0,(IS EXECUTE ONLY.)
  18093. SGD ERRMSG 1,( PF STAGING DISABLED.)
  18094. IPA ERRMSG 1,( INCORRECT PFC ADDRESS.)
  18095. PVE ERRMSG 1,( PFC VERIFICATION ERROR.)
  18096. FND ERRMSG 1,( FILE NOT DISK RESIDENT.)
  18097. INA ERRMSG 1,() INTERLOCK NOT AVAILABLE (NO MESSAGE)
  18098. AIO ERRMSG 1,( NO ALTERNATE STORAGE COPY OF FILE.)
  18099. ASE ERRMSG 1,( ALTERNATE STORAGE ERROR.)
  18100. FTF ERRMSG 1,( FNT FULL.)
  18101. ICU ERRMSG 1,( INCORRECT CATALOG UPDATE.)
  18102. PEA ERRMSG 1,( PFM EXCESS ACTIVITY.)
  18103. NVX ERRMSG 1,( NOT VALIDATED TO SET XD/XT.)
  18104. DEM ERRMSG 1,( XD/XT EXCEEDS MAXIMUM.)
  18105. JCA ERRMSG 1,( JOB CANNOT ACCESS FILE.)
  18106. LNJ ERRMSG 1,( ACCESS LEVEL NOT VALID FOR JOB.)
  18107. WDP ERRMSG 1,( WRITE-DOWN OF DATA PROHIBITED.)
  18108. CNJ ERRMSG 1,( ACCESS CATEGORIES NOT VALID FOR JOB.)
  18109. LNP ERRMSG 1,( ACCESS LEVEL NOT VALID ON PF DEVICE.)
  18110. NVD ERRMSG 1,( NOT VALID TO DOWNGRADE DATA.)
  18111. NTD ERRMSG 0,(- NO TEMP DEVICE FOUND.)
  18112. LNF ERRMSG 1,( ACCESS LEVEL NOT VALID FOR FILE.)
  18113. TPE ERRMSG 0,(TEMPORARY ERROR, TRY LATER.)
  18114. WNF ERRMSG 1,( WAITING FOR NFL.)
  18115. WID ERRMSG 1,( WAITING - INACCESSIBLE DEVICE.)
  18116. RTR ERRMSG 3,() REQUEST BEING RETRIED BY PFM (NO MESSAGE)
  18117. ECD ERRMSG 1,( ERROR IN CATLIST CONTINUATION DATA.)
  18118.  
  18119. INDEX MXER
  18120.  
  18121.  
  18122. ERRMSG INDEX
  18123. ERRMT HERE
  18124. INDEX MXER
  18125.  
  18126. LIST *
  18127.  
  18128. USE LITERALS
  18129. SPACE 4,10
  18130. * COMMON DECKS.
  18131.  
  18132.  
  18133. *CALL COMPACS
  18134. *CALL COMPCTI
  18135. *CALL COMPC2D
  18136. *CALL COMPSES
  18137. *CALL COMPTGB
  18138.  
  18139.  
  18140. * ACCOUNT FILE MESSAGE BUFFER.
  18141.  
  18142. SVM DATA C*MPNF, *
  18143. BSSZ 14
  18144.  
  18145. SVMA DATA 2H, MESSAGE SEPARATOR
  18146. CON 0 END OF STRING
  18147. SVMB DATA 2H. MESSAGE TERMINATOR
  18148. CON 0
  18149. SPACE 4,10
  18150. LOCF EQU *+5 ZERO LEVEL OVERLAY ADDRESS
  18151. ERRNG BFMS-LOCF-ZDFL *0DF* OVERFLOW
  18152. TITLE OVERLAYABLE SUBROUTINES.
  18153. CAD SPACE 4,10
  18154. ** CAD - CHECK FOR ACCESS DENIED.
  18155. *
  18156. * ENTRY (P1) = ERROR MESSAGE.
  18157. * (PFPN) = OPTIONAL PACK NAME.
  18158. * (PFOU) = ALTERNATE USER NAME.
  18159. *
  18160. * EXIT *MPNF* ACCOUNT FILE MESSAGE ISSUED ON *FNF* ERRORS.
  18161. *
  18162. * CALLS ACS, DFM, SFN.
  18163. *
  18164. * USES T1, FN - FN+4.
  18165.  
  18166.  
  18167. CAD SUBR ENTRY/EXIT
  18168. LDD P1
  18169. LMN /ERRMSG/FNF
  18170. NJN CADX IF NOT * FILE NOT FOUND.*
  18171. LDM PFOU
  18172. ZJN CADX IF NOT AN ALTERNATE USER
  18173. LDD MA SAVE FN - FN+4
  18174. CWD FN
  18175. CRM CADA,ON
  18176. LDM PFFN GET PERMANENT FILE NAME
  18177. ZJN CAD1 IF PF NAME NOT SPECIFIED
  18178. LDN PFFN-PFSN
  18179. CAD1 ADC PFSN
  18180. RJM SFN
  18181. LDC SVM+3 INITIALIZE MESSAGE POINTER FOR ACS CALLS
  18182. STD T1
  18183. LDN FN INSERT FILE NAME IN MESSAGE BUFFER
  18184. RJM ACS
  18185. LDC SVMA APPEND COMMA SEPARATOR
  18186. RJM ACS
  18187. LDC PFOU SET USER NAME IN MESSAGE BUFFER
  18188. RJM SFN
  18189. LDN FN
  18190. RJM ACS
  18191. LDC SVMA APPEND COMMA SEPARATOR
  18192. RJM ACS
  18193. LDM PFPN CHECK FOR PACK NAME
  18194. ZJN CAD2 IF NO PACK NAME
  18195. LDC PFPN SET PACK NAME IN MESSAGE BUFFER
  18196. RJM SFN
  18197. LDN FN
  18198. RJM ACS
  18199. CAD2 LDC SVMB APPEND MESSAGE TERMINATOR
  18200. RJM ACS
  18201. LDC SVM+ACFN ISSUE DAYFILE MESSAGE
  18202. RJM DFM
  18203. LDC CADA RESTORE FILE NAME
  18204. RJM SFN
  18205. LJM CADX RETURN
  18206.  
  18207.  
  18208. CADA BSSZ 5 FILE NAME
  18209. CAI SPACE 4,15
  18210. ** CAI - CLEAR ALLOCATION AND *DAPF* INTERLOCKS.
  18211. *
  18212. * ENTRY (EQ) = MASTER DEVICE EST ORDINAL.
  18213. * (AILK) = CATALOG/PERMIT ALLOCATION INTERLOCK TRACK.
  18214. * (DAIF) = DIRECT ACCESS FILE INTERLOCK FLAG.
  18215. * (IAIF) = INDIRECT ALLOCATION INTERLOCK FLAG.
  18216. * (PFEQ) = DIRECT ACCESS FILE EST ORDINAL.
  18217. * (PFFT) = DIRECT ACCESS FILE FIRST TRACK.
  18218. *
  18219. * EXIT ALLOCATION INTERLOCKS CLEARED.
  18220. * DIRECT ACCESS FILE INTERLOCK CLEARED.
  18221. *
  18222. * USES T5.
  18223. *
  18224. * CALLS CTI.
  18225.  
  18226.  
  18227. CAI SUBR ENTRY/EXIT
  18228. LDD EQ
  18229. ADC 4000 SET CHECKPOINT VIA *STBM*
  18230. STD T5
  18231. LDM AILK
  18232. ZJN CAI1 IF NO CATALOG/PERMIT ALLOCATION INTERLOCK
  18233. RJM CTI CLEAR TRACK INTERLOCK
  18234. CAI1 LDM IAIF
  18235. ZJN CAI2 IF INDIRECT ALLOCATION INTERLOCK NOT SET
  18236. LDM DVLW
  18237. RJM CTI CLEAR INDIRECT ALLOCATION INTERLOCK
  18238. LDN 0 CLEAR INDIRECT ALLOCATION INTERLOCK FLAG
  18239. STM IAIF
  18240. CAI2 LDM DAIF
  18241. ZJN CAIX IF DIRECT ACCESS FILE INTERLOCK NOT SET
  18242. LDM PFEQ
  18243. ADC 6000 CHECKPOINT + NO HANG ON UNRESERVED TRACK
  18244. STD T5
  18245. LDM PFFT
  18246. RJM CTI CLEAR DIRECT ACCESS FILE INTERLOCK
  18247. UJP CAIX RETURN
  18248. CEI SPACE 4,15
  18249. ** CEI - CHECK FOR ERROR IDLE REQUIRED.
  18250. *
  18251. * ENTRY (P0) = ERROR IDLE FLAG.
  18252. * (P1) = ERROR CODE.
  18253. * (P2) = EST ORDINAL.
  18254. *
  18255. * EXIT ERROR IDLE STATUS SET ON DEVICE IF APPROPRIATE.
  18256. * (SEQF) = PRESET TO FORCE *EQXXX, ERROR IDLE SET.*
  18257. * MESSAGE IF ERROR IDLE SET.
  18258. *
  18259. * USES T5.
  18260. *
  18261. * CALLS SES.
  18262. *
  18263. * MACROS SMSTF.
  18264.  
  18265.  
  18266. CEI SUBR ENTRY/EXIT
  18267. LDD P0
  18268. ZJN CEIX IF NO ERROR IDLE REQUESTED
  18269. ISTORE SEQF,(PSN) FORCE *EQXXX, ERROR IDLE SET.* MESSAGE
  18270. LDD P2 SET ERROR IDLE STATUS ON DEVICE
  18271. STD T5
  18272. LDN STEI ERROR IDLE STATUS
  18273. RJM SES
  18274. SMSTF GDEI SET ERROR IDLE FLAG
  18275. UJN CEIX RETURN
  18276. CLE SPACE 4,10
  18277. ** CLE - CHECK FOR LENGTH ERROR.
  18278. *
  18279. * ENTRY (P1) = ERROR CODE.
  18280. * (CC) = COMMAND CODE.
  18281. *
  18282. * EXIT (PPFA, PRTA) UPDATED IF *SYOT* LENGTH ERROR ON *GET*.
  18283.  
  18284.  
  18285. CLE SUBR ENTRY/EXIT
  18286. LDD CC
  18287. LMN CCGT
  18288. NJN CLEX IF NOT *GET* REQUEST
  18289. LDM JORG
  18290. LMK SYOT
  18291. NJN CLEX IF NOT SYSTEM ORIGIN JOB
  18292. LDD P1
  18293. LMN /ERRMSG/FLE
  18294. NJN CLEX IF NOT *FILE LENGTH ERROR*
  18295. AOM PPFA
  18296. AOM PRTA
  18297. UJN CLEX RETURN
  18298. PDE SPACE 4,15
  18299. ** PDE - PROCESS *DMP=* JOB.
  18300. *
  18301. * ENTRY (CP) = CONTROL POINT ADDRESS.
  18302. *
  18303. * EXIT (SEPW) = CPU COMMUNICATION WORD CLEARED
  18304. *
  18305. * USES T3, CM - CM+4.
  18306.  
  18307.  
  18308. PDE SUBR ENTRY/EXIT
  18309. LDD CP CHECK *DMP=* STATUS
  18310. ADC SEPW
  18311. STD T3
  18312. CRD CM
  18313. LDD CM
  18314. LPN 20
  18315. NJN PDEX IF *DMP=* ENTRY POINT PRESENT
  18316. LDN ZERL CLEAR CPU COMMUNICATION WORD
  18317. CRD CM
  18318. LDD T3
  18319. ADN SPCW-SEPW
  18320. CWD CM
  18321. UJN PDEX RETURN
  18322. PRT SPACE 4,20
  18323. ** PRT - PROCESS PRESERVED AND RESERVED TRACKS.
  18324. *
  18325. * ENTRY (FS - FS+4) = LOCAL FILE FST.
  18326. * (FNTA) = LOCAL FILE FNT ADDRESS.
  18327. * (PTKT) = PRESERVED TRACK IF NON-ZERO.
  18328. * (RTKE) = EST ORDINAL FOR RESERVED TRACK.
  18329. * (RTKT) = RESERVED TRACK IF NON-ZERO.
  18330. *
  18331. * EXIT (FS+1 - FS+3) = 0 IF RESERVED TRACK RELEASED.
  18332. * (AIPR, AIPR+1) = 0 IF RESERVED TRACK RELEASED.
  18333. * PRESERVED FILE BIT CLEARED IF SET.
  18334. * RESERVED TRACK RELEASED IF RESERVED.
  18335. *
  18336. * USES FA, CM - CM+4.
  18337. *
  18338. * MACROS MONITOR, NFA.
  18339.  
  18340.  
  18341. PRT SUBR ENTRY/EXIT
  18342. LDM PTKT CHECK PRESERVED TRACK
  18343. ZJN PRT1 IF TRACK NOT PRESERVED
  18344. STD CM+2
  18345. SBM RTKT
  18346. ZJN PRT1 IF TRACK ALSO RESERVED
  18347. LDD FS SET EST ORDINAL AND CHECKPOINT
  18348. LMC 4000
  18349. STD CM+1
  18350. LDN CPFS CLEAR PRESERVED FILE BIT
  18351. STD CM+3
  18352. MONITOR STBM
  18353. PRT1 LDN 0
  18354. * LDN 1 (*SYOT* + *GET* + *FILE LENGTH ERROR*)
  18355. PRTA EQU *-1
  18356. NJN PRTX IF TRACK SHOULD NOT BE RELEASED
  18357. LDM RTKT CHECK RESERVED TRACK
  18358. ZJN PRTX IF NO RESERVED TRACK TO RELEASE
  18359. STD CM+2 DROP RESERVED TRACK
  18360. LDM RTKE
  18361. LMC 4000
  18362. STD CM+1
  18363. MONITOR DTKM
  18364. * LDN 0 CLEAR FST
  18365. STD FS+1
  18366. STD FS+2
  18367. STD FS+3
  18368. STM AIPR CLEAR MASS STORAGE INCREMENT
  18369. STM AIPR+1
  18370. LDM FNTA RESTORE FNT ADDRESS
  18371. STD FA
  18372. NFA FA,R UPDATE FST
  18373. ADN FSTL
  18374. CWD FS
  18375. UJP PRTX RETURN
  18376.  
  18377.  
  18378. OVERFLOW OVLA,EPFW OVERFLOW INTO ERROR PROCESSING AREA
  18379. OVERLAY (TERMINATE PROGRAM.),OVLA
  18380. SPACE 4,10
  18381. *** THIS OVERLAY PERFORMS TERMINATION PROCESSING FOR *PFM*.
  18382.  
  18383.  
  18384. OVL BSS 0 ENTRY
  18385. LDM IAIF
  18386. ZJN OVL0 IF INDIRECT ALLOCATION INTERLOCK NOT SET
  18387. RJM HNG HANG
  18388.  
  18389. OVL0 RJM CLF COMPLETE LOCAL FILE FST
  18390. LDM STAU CHECK *PFM* STATUS BITS
  18391. LPK STRP+STDP
  18392. NJN OVL1 IF *PFM* TO BE RECALLED OR TERMINATED
  18393. RJM CCI CLEAR CATALOG INTERLOCK
  18394. RJM SFS SET FET STATUS
  18395. OVL1 UJN DPP DROP PP
  18396. CLF SPACE 4,10
  18397. ** CLF - COMPLETE LOCAL FILE FST.
  18398. *
  18399. * ENTRY (FNTA) = LOCAL FILE FNT ADDRESS.
  18400. *
  18401. * USES CM - CM+4.
  18402.  
  18403.  
  18404. CLF SUBR ENTRY/EXIT
  18405. LDM FNTA
  18406. STD FA
  18407. ZJN CLFX IF NO LOCAL FILE FNT
  18408. NFA FA,R
  18409. ADN FSTL
  18410. CRD CM
  18411. LDD CM+4 SET LOCAL FILE FST COMPLETE
  18412. SCN 1
  18413. LMN 1
  18414. STD CM+4
  18415. NFA FA,R
  18416. ADN FSTL
  18417. CWD CM
  18418. UJN CLFX RETURN
  18419. DPP SPACE 4,25
  18420. ** DPP - DROP PP.
  18421. *
  18422. * ENTRY (CN - CN+4) = INPUT REGISTER FOR *PFM* RECALL.
  18423. * (FN - FN+4) = RECALL REQUEST FOR MONITOR.
  18424. * (MP - MP+4) = PARAMETER WORD FOR *PFM* RECALL.
  18425. * (AIPF, AIPF+1) = ACCUMULATOR INCREMENT FOR PF ACCESS.
  18426. * (AIPR, AIPR+1) = ACCUMULATOR INCREMENT FOR PRU COUNT.
  18427. * (EPFA) = EST ORDINAL OF DEVICE IF PF ACTIVITY COUNT
  18428. * TO BE DECREMENTED.
  18429. * (STAU) = *STAJ* BIT SET IF JOB TO BE ABORTED.
  18430. * *STRP* BIT SET IF *PFM* TO BE RECALLED.
  18431. *
  18432. * EXIT PF ACTIVITY COUNT DECREMENTED IF IT WAS SET.
  18433. * ACCOUNTING UPDATED.
  18434. * JOB ABORTED IF *STAJ* SET.
  18435. * *PFM* RECALLED IF *STRP* SET.
  18436. * TO *PPR*.
  18437. *
  18438. * USES CM - CM+4.
  18439. *
  18440. * MACROS MONITOR, NFA.
  18441.  
  18442.  
  18443. DPP BSS 0 ENTRY
  18444.  
  18445. * DECREMENT PF ACTIVITY COUNT.
  18446.  
  18447. LDM EPFA EST ORDINAL
  18448. ZJN DPP2 IF ACTIVITY NOT SET
  18449. STD CM+1
  18450. LDN DPAS DECREMENT PF ACTIVITY COUNT
  18451. STD CM+3
  18452. MONITOR STBM
  18453.  
  18454. * UPDATE ACCOUNTING.
  18455.  
  18456. DPP2 LDM AIPR SET ACCUMULATOR INCREMENT FOR PRU COUNT
  18457. STM DPPB
  18458. LDM AIPR+1
  18459. STM DPPB+1
  18460. LDM AIPF SET ACCUMULATOR INCREMENT FOR PF ACCESS
  18461. STM DPPD
  18462. LDM AIPF+1
  18463. STM DPPD+1
  18464. LDD MA TRANSMIT REQUEST TO MESSAGE BUFFER
  18465. CWM DPPA,TR
  18466. LDN 2 SET NUMBER OF REQUESTS
  18467. STD CM+1
  18468. LDM STAU CHECK *PFM* STATUS BITS
  18469. LPK STAJ+STRP
  18470. NJN DPP3 IF JOB BEING ABORTED OR *PFM* RECALLED
  18471. STD CM+2 SELECT DROP PP OPTION
  18472. MONITOR UADM UPDATE ACCOUNTING
  18473. LJM DPP5 EXIT TO PP RESIDENT
  18474.  
  18475. DPP3 LDM DPPB
  18476. ADM DPPB+1
  18477. ADM DPPD
  18478. ADM DPPD+1
  18479. ZJN DPP3.1 IF NO ACCOUNTING TO UPDATE
  18480. LDN 1 SELECT NO DROP OPTION
  18481. STD CM+2
  18482. MONITOR UADM UPDATE ACCOUNTING
  18483. DPP3.1 LDM STAU
  18484. LPK STRP
  18485. NJN DPP4 IF *PFM* TO BE RECALLED
  18486. MONITOR ABTM ABORT JOB
  18487. UJN DPP5 EXIT TO PP RESIDENT
  18488.  
  18489. * RECALL *PFM*.
  18490.  
  18491. DPP4 LDD CN+1 CLEAR AUTO RECALL BIT IN INPUT REGISTER
  18492. SCN 40
  18493. STD CN+1
  18494. LDD IA
  18495. CWD CN
  18496. LDN 40 FORCE AUTO RECALL BIT IN RECALL REQUEST
  18497. RAD CN+1
  18498. LDD MA
  18499. CWD CN INPUT REGISTER FOR RECALL
  18500. ADN 1
  18501. CWD MP PARAMETER WORD FOR RECALL
  18502. ADN 1
  18503. CWD FN
  18504. CRD CM RECALL REQUEST
  18505. MONITOR RECM RECALL AND DROP PP
  18506. DPP5 LJM PPR EXIT TO PP RESIDENT
  18507.  
  18508.  
  18509. DPPA BSS 0 REQUEST TO UPDATE ACCOUNTING
  18510. CON CDCS SUBFUNCTION CODE
  18511. CON ACLW ADDRESS OF CONTROL POINT WORD
  18512. CON 0*100+22 POSITION AND WIDTH OF FIELD
  18513. DPPB CON 0,0 VALUE OF INCREMENT FOR PRU COUNT
  18514.  
  18515. DPPC BSS 0 REQUEST TO UPDATE ACCOUNTING
  18516. CON AISS SUBFUNCTION CODE
  18517. CON IOAW ADDRESS OF CONTROL POINT WORD
  18518. CON 0*100+24 POSITION AND WIDTH OF FIELD
  18519. DPPD CON 0,0 VALUE OF INCREMENT FOR PF ACCESS
  18520. SFS SPACE 4,15
  18521. ** SFS - SET FET STATUS.
  18522. *
  18523. * ENTRY (STAU) = STATUS FLAGS.
  18524. * (FN - FN+4) = FET + 0 IF *STDS* SET IN *STAU*.
  18525. * (FS - FS+4) = FET + 1 IF *STDS* SET IN *STAU*.
  18526. *
  18527. * EXIT FET SET COMPLETE.
  18528. *
  18529. * USES CM - CM+4, FN - FN+4, FS - FS+4.
  18530. *
  18531. * CALLS SFA.
  18532.  
  18533.  
  18534. SFS SUBR ENTRY/EXIT
  18535. RJM SFA
  18536. ZJN SFSX IF NO FET ADDRESS
  18537. LDM STAU
  18538. LPK STDS
  18539. NJN SFS1 IF RETURNING ERROR CODE IN FET
  18540. RJM SFA
  18541. CRD FN READ FET STATUS WORD
  18542. ADN 1
  18543. CRD FS FET LENGTH/RANDOM BIT
  18544. LDD FN+4
  18545. LPC 1776
  18546. LMN 1 SET COMPLETION STATUS
  18547. STD FN+4
  18548. LDD FN+3 CLEAR UPPER BITS OF ERROR STATUS
  18549. SCN 77
  18550. STD FN+3
  18551.  
  18552. * UPDATE RANDOM INDEX IF RANDOM FET.
  18553. * DO NOT UPDATE IF FET IS TOO SHORT OR OUTSIDE FL.
  18554.  
  18555. SFS1 LDD FS+3 CHECK FET LENGTH
  18556. SHN -6
  18557. SBN CFCN-4
  18558. MJN SFS2 IF FET TOO SHORT
  18559. LDD FS+1
  18560. SHN 21-13
  18561. PJN SFS2 IF NOT RANDOM FET
  18562. LDD IR+3 CHECK RANDOM INDEX FIELD WITHIN FL
  18563. LPN 77
  18564. SHN 14
  18565. LMD IR+4
  18566. ADN CFCN
  18567. SHN -6
  18568. SBD FL
  18569. PJN SFS2 IF RANDOM INDEX FIELD NOT WITHIN FL
  18570. LDN ZERL
  18571. CRD CM
  18572. LDD HN SET RANDOM INDEX REWOUND
  18573. STD CM+2
  18574. RJM SFA
  18575. ADN CFCN
  18576. CWD CM
  18577. SFS2 RJM SFA
  18578. CWD FN
  18579. UJP SFSX RETURN
  18580. SPACE 4,10
  18581. ** DEFINE COMMAND PROCESSOR SYMBOLS.
  18582.  
  18583.  
  18584. QUAL 3PC
  18585. CMD HERE
  18586. QUAL *
  18587. SPACE 4,10
  18588. OVERFLOW OVLA,EPFW OVERFLOW INTO ERROR PROCESSING AREA
  18589.  
  18590. TTL PFM - PERMANENT FILE MANAGER.
  18591. END