Table of Contents

DMREC

Table Of Contents

  • [00003] TAF/CRM BATCH RECOVERY
  • [00009] TAF/CRM BATCH RECOVERY.
  • [00246] MACRO DEFINITIONS.
  • [00250] FILE BACKUP DIRECTORY - ZZDBDIR.
  • [00479] ERROR - ERROR PROCESSING MACRO.
  • [00518] ZIPPP - CRM EXPAND MACRO.
  • [00565] ZAPPP - CRM EXPAND MACRO.
  • [00630] ASSEMBLY CONSTANTS AND EQUIVALENCES.
  • [00791] MISCELLANEOUS SYMBOLS FOR EXC - EXECUTE CONTROL CARD.
  • [01054] TDIR - TABLE OF VALID DIRECTIVES.
  • [01125] TDFN - TABLE OF DATA BASE FILE NAMES.
  • [01141] TTIG - TABLE OF TRANSACTIONS TO IGNORE.
  • [01162] TVSN - TABLE OF VSN ENTRIES.
  • [01174] TTBRF - TABLE OF DOWNED *BRF-S*.
  • [01186] TEOR - TABLE OF VSN-S AND END OF RECORD COUNTS.
  • [01198] RECOVERY VSN TABLE.
  • [01207] FTAB - INTERMEDIATE IGNORE TABLE.
  • [01224] TLOG - TABLE OF LOG ENTRIES.
  • [01238] MAIN ROUTINE.
  • [01337] DIRECTIVE PROCESSORS.
  • [01339] AAI - APPLY AFTER IMAGES.
  • [01481] ACF - ATTACH *ZZDBDIR* FILE (BACKUP DIRECTORY FILE).
  • [01654] SUBROUTINES.
  • [01656] ADD - ADD VSN AND CORRESPONDING DUMP ENTRIES.
  • [01757] ADF - ATTACH DATA BASE FILES.
  • [01874] ALC - ADVANCE LINE COUNT.
  • [01929] ARB - ALLOCATE BUFFER SPACE.
  • [02037] ATF - ATTACH OR DEFINE FILE.
  • [02079] BBE - BUILD BACKUP DIRECTORY ENTRIES.
  • [02379] BFL - BLANK FILL LINE.
  • [02400] BIF - BUILT INDEX FILE.
  • [02446] BLT - BUILD LOG TABLE.
  • [02560] BRT - BUILD RECOVERY TABELS.
  • [02918] BSB - BLANK FILL STRING BUFFER.
  • [02938] BVT - BUILD VSN TABLE.
  • [03174] CER - CHECK ERROR STATUS.
  • [03199] CFD - CHECK FOR DELETE.
  • [03253] CND - CHECK NEXT DIRECTIVE.
  • [03287] CRT - CREATE LOG FILES.
  • [03482] CTD - CHECK TIME AND DATE.
  • [03573] CTW - CHARACTERS TO WORDS.
  • [03600] CVN - CHECK VSN NUMBER.
  • [03651] CWM - CHECK WRITE MODE.
  • [03678] CYC - CHANGE CYCLE NUMBER.
  • [03764] DBF - DUMP BLOCK FORMAT.
  • [03845] DCK - DECOLLATE KEY.
  • [03933] DCR - DECOMPRESS RECORD
  • [04077] DDF - DUMP DATA FILE.
  • [04153] DEL - DELETE ENTRIES IN BACKUP DIRECTORY.
  • [04215] DER - DETECT END-OF-REEL.
  • [04295] DMP - DUMP DATA BASE FILES.
  • [04557] DRF - DUMP RECORD FORMAT.
  • [04695] EDF - EXPAND DATA FILES.
  • [04898] EDI - EDIT DIRECTORY.
  • [04963] EFD - EDIT FILE DUMP ENTRY.
  • [05101] EIT - EDIT BACKUP DIRECTORY.
  • [05215] ELD - EDIT AFTER IMAGE LOG DUMP ENTRY.
  • [05287] ELH - ENTER DUMP LINE HEADER.
  • [05322] ESB - ENTER STRING BUFFER.
  • [05345] EXC - EXECUTE CONTROL CARD.
  • [05466] EXP - EXPAND DATA FILES.
  • [05561] FAW - FORMAT ALPHA WORD.
  • [05634] FER - FIT ERROR STATUS.
  • [05677] FML - FORMAT PRINT LINE(S).
  • [05741] FND - FIND NEXT DIRECTIVE.
  • [05765] FOW - FORMAT OCTAL WORD.
  • [05814] GAL - GENERATE AFTER IMAGE HEADER LISTING.
  • [05990] GDR - GET DATA RECORD.
  • [06117] GFA - GET AFTER/BEFORE IMAGE RECOVERY FILE LOCAL.
  • [06169] GFL - GENERATE FULL LISTING.
  • [06314] GFV - GET FIRST VSN.
  • [06541] GNR - GET NEXT RECORD.
  • [06683] GNW - GET NEXT WORD.
  • [06714] GPL - GENERATE PARTIAL LISTING.
  • [06821] GPR - GET PARAMETER.
  • [06895] GRM - GET *RMKDEF* CARDS FROM THE XXJ.
  • [07000] GXJ - GET *XXJ* FILE (XX=DATA BASE).
  • [07312] IFV - INITIALIZE FILES AND VARIABLES.
  • [07379] IGN - IGNORE AFTER IMAGE LOG ENTRIES.
  • [07440] LBL - LOAD BLOCK.
  • [07508] LDE - LIST DIRECTORY ENTRY.
  • [07542] LDH - LIST DIRECTORY HEADER.
  • [07623] LFH - LIST FILE HEADER.
  • [07667] LKC - LIST KEY CONTENTS.
  • [07763] LOD - LOAD DATA BASE FILES.
  • [07922] LPH - LIST PAGE HEADER.
  • [07979] LRD - LOAD RECORD.
  • [08360] LST - LIST BACKUP DIRECTORY AND AFTER IMAGE LOG HEADERS.
  • [08433] MDI - MODIFY DIRECTORY.
  • [08538] MDS - MODIFY DIRECTORY SELECTIVELY.
  • [08681] NOP - NOTIFY OPERATOR.
  • [08738] NTF - NOTIFY TAF.
  • [08783] PAC - PACK CONTROL CARD.
  • [08838] PDE - PRINT DELETED ENTRY.
  • [08918] PDT - PACK DATE AND TIME.
  • [09008] PRD - PUT RECORD.
  • [09236] PRS - PRESET ROUTINE.
  • [09318] PVE - PROCESS VSN ENTRY.
  • [09373] RAF - RETURN ALL FILES.
  • [09396] RDD - READ DIRECTIVE FROM INPUT FILE.
  • [09456] RDE - READ DIRECTORY ENTRY.
  • [09601] RDF - RETURN DATA FILES.
  • [09628] RDT - REFORMAT DATE OR TIME.
  • [09667] RECOVER DATA FILE.
  • [09784] RQT - REQUEST TAPE FOR DMREC DUMP/LOAD OPERATIONS.
  • [09905] RRE - READ RECORD ERROR.
  • [10111] RSC - REMOVE EXTRA SPACES AND COMMAS.
  • [10161] RTE - RETURN TAPE ERROR ON DUMP PROCESSING.
  • [10229] RTF - REQUEST TAPE FILE.
  • [10350] RVE - READ VSN ENTRY.
  • [10426] RXJ - READ *XXJ* FILE ENTRIES (XX=DATA BASE).
  • [10705] SDT - SET DATE AND TIME.
  • [10751] SHT - SET HEADER TYPE.
  • [10793] THTY - TABLE OF HEADER TYPES.
  • [10811] SPR - STORE PARAMETERS FROM DIRECTIVES.
  • [11239] STL - SET TITLE LINE FOR OUTPUT PAGE.
  • [11295] SVK - SET VSN KEY.
  • [11320] THDR - TABLE OF LISTING HEADERS.
  • [11372] TKL - TERMINATE KEY LIST.
  • [11412] UDT - UNPACK DATE AND TIME.
  • [11470] UPD - UPDATE DATA FILE.
  • [11695] WBL - WRITE BLANK LINE.
  • [11718] WEM - WRITE ERROR MESSAGE.
  • [11807] WFH - WRITE FILE HEADER.
  • [11853] WSB - WRITE STRING BUFFER.
  • [11874] BUFFERS.

Source Code

DMREC.txt
  1. IDENT DMREC TAF/CRM BATCH RECOVERY
  2. SST FL,TDFN
  3. TITLE TAF/CRM BATCH RECOVERY
  4. *COMMENT TAF/CRM BATCH RECOVERY
  5. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  6. ENTRY DMREC
  7. LDSET LIB=SRT5LIB
  8. SPACE 4,10
  9. *** DMREC - TAF/CRM BATCH RECOVERY.
  10. *
  11. * T. L. JAKOB - 80/09/30.
  12. SPACE 4,10
  13. ** REDEFINE BOTH THE CRM *GET* AND *REPLACE* MACROS.
  14.  
  15. *CALL COMCMAC
  16. RMGET OPSYN GET
  17. RMREP OPSYN REPLACE
  18. CTEXT CPCOM.
  19. *CALL CPCOM
  20. ENDX
  21.  
  22. SYSCOM B1
  23.  
  24. *** THIS UTILITY IS DESIGNED TO REGENERATE *CRM*
  25. * DATA BASE FILES IN THE *TAF/CRM* ENVIRONMENT
  26. * IF THEY HAVE BEEN FOUND INCONSISTENT OR DESTROYED.
  27. *
  28. * COMMAND FORMAT -
  29. *
  30. * DMREC(I=IFN,L=LFN,TT=ID)
  31. * OR
  32. * DMREC(L=LFN,TT=ID,Z)/*.........
  33. *
  34. * WHERE:
  35. *
  36. * IFN = INPUT FILE NAME ( DEFULT - INPUT )
  37. * LFN = OUTPUT FILE NAME ( DEFULT - OUTPUT )
  38. * Z = COMMAND CONTAINS DIRECTIVES
  39. * (*/* AND *=* CAN NOT BE SEPARATOR
  40. * CHARACTERS FOR DIRECTIVES).
  41. * ID = IDENTIFIER ( 2 CHARACTERS ).
  42. *
  43. * COMMENTS IN THE INPUT STREAM HAVE ONE OF THE FOLLOWING
  44. * FORMATS:
  45. *
  46. * *.<COMMENT>
  47. * */<COMMENT>
  48. * *COMMENT <COMMENT>
  49. *
  50. * INPUT DIRECTIVES ARE IN FREE FORMAT (THEY CAN START IN ANY
  51. * COLUMN). EACH DIRECTIVE STARTS ON A NEW CARD.
  52. * DIRECTIVE FIELDS CAN NOT BE SPLIT BETWEEN TWO CARDS.
  53. *
  54. * THE *XXJ* FILE MUST BE CREATED UNDER *TAF-S* USER NAME.
  55. * THE DIRECTORY FILE *ZZDBDIR* IS A PRIVATE DIRECT ACCESS
  56. * FILE CREATED UNDER THE USERS USER NAME.
  57. *
  58. *
  59. * DIRECTIVE FORMATS.
  60. *
  61. * *DUMP,DBPFN1/FORMAT,DBPFN2,DBPFNN,VSN=VSN1/VSN2/VSNN.
  62. * OR
  63. * *DUMP,ZZDBANN,VSN=VSNN.
  64. *
  65. * WHERE:
  66. * DBPFNI = DATA BASE PFN TO DUMP.
  67. * ZZDBANN = AFTER IMAGE RECOVERY FILE.
  68. * FORMAT = *BLOCK* OR *RECORD*.
  69. * = DEFAULT (NOT SPECIFIED) - BLOCK MODE USED IF
  70. * PFN ATTACHABLE IN WRITE MODE OTHERWISE,
  71. * RECORD MODE IS ASSUMED. *ARF* IS ALWAYS
  72. * DUMPED IN BLOCK FORMAT.
  73. * VSN1 = VSN-S OF DUMP TAPES - MUST BE BLANK
  74. * LABELED.
  75. * IF MORE TAPES ARE REQUIRED THAN ARE
  76. * SPECIFIED OR, NO VSN IS SPECIFIED, ANOTHER
  77. * BLANK LABELED TAPE IS REQUESTED. *ARF-S*
  78. * CAN NOT SPAN MULTIPLE TAPE REELS. (*TVSNL*
  79. * DEFINES THE MAXIMUM NUMBER OF CONTINUATION
  80. * TAPES.)
  81. *
  82. *
  83. * *LOAD,DBPFN/FORMAT,DATE=YYMMDD,TIME=HHMMSS.
  84. * OR
  85. * *LOAD,DBPFN/FORMAT,VSN=VSN.
  86. *
  87. * WHERE:
  88. * DBPFN = DATA BASE PFN.
  89. * FORMAT = *BLOCK* OR *RECORD*.
  90. * = DEFAULT - EITHER (DETERMINED BY
  91. * DIRECTORY ENTRY).
  92. * DATE = THE LATEST DUMP BEFORE THIS DATE IS USED.
  93. * = DEFAULT - TODAY.
  94. * TIME = THE LATEST DUMP BEFORE THIS TIME IS USED.
  95. * = DEFAULT - 00.00.00.
  96. * VSN = VSN OF TAPE TO LOAD FROM - DATE AND TIME
  97. * MUST NOT BE SPECIFIED. SINCE ONLY ONE
  98. * FILE CAN BE DUMPED ON A TAPE SET, FORMAT
  99. * IS IGNORED.
  100. *
  101. *
  102. * *UPDATE,DBPFN,DATE=DATE1/DATE2,TIME=TIME1/TIME2,VSN=VSN1.
  103. *
  104. * WHERE:
  105. * DBPFN = DATA BASE PFN TO UPDATE.
  106. * DATE1 = START DATE FOR *AFTER IMAGE* APPLICATION.
  107. * = DEFAULT - DATE OF DUMP RECORD ON BACK-UP
  108. * DIRECTORY SPECIFIED BY VSN OR LATEST
  109. * DUMP.
  110. * DATE2 = END DATE FOR *AFTER IMAGE* APPLICATION.
  111. * = DEFAULT - TODAY.
  112. * TIME1 = START TIME FOR *AFTER IMAGE* APPLICATION.
  113. * = DEFAULT - TIME OF DUMP RECORD ON BACK-UP
  114. * DIRECTORY SPECIFIED BY VSN OR LATEST
  115. * DUMP.
  116. * TIME2 = END TIME FOR *AFTER IMAGE* APPLICATION.
  117. * = DEFAULT - 00.00.00.
  118. * VSN1 = VSN OF DATA BASE FILE DUMP TAPE.
  119. *
  120. *
  121. * *IGNORE,TS=SQ1/SQ2/...SQN.
  122. * OR
  123. * *IGNORE,TN=NM1/NM2/...NMN.
  124. *
  125. * WHERE:
  126. * SQI = TASK SEQUENCE NUMBER.
  127. * NMI = TASK NAME.
  128. *
  129. * NOTE: THIS DIRECTIVE MAY ONLY FOLLOW THE (UPDATE) OR
  130. * (RECOVER) DIRECTIVE.
  131. *
  132. *
  133. * *EXPAND,DB,PERCENT=NN.
  134. * OR
  135. * *EXPAND,DBPFN,PERCENT=NN.
  136. *
  137. * WHERE:
  138. * DBPFN = DATA BASE PFN.
  139. * DB = ALL DATA BASE FILES.
  140. * NN = PERCENT (DECIMAL).
  141. * = DEFAULT - PERCENTAGE RECORDED IN BACK-UP
  142. * DIRECTORY.
  143. *
  144. *
  145. * *EDIT,DB.
  146. * OR
  147. * *EDIT,DBPFN1,DBPFNN.
  148. *
  149. * WHERE:
  150. * DB = DATA BASE NAME FOR DIRECTORY EDITING.
  151. * DBPFN = DATA BASE FILE FOR DIRECTORY EDITING.
  152. *
  153. *
  154. * *CYCLE,CYCL=N.
  155. *
  156. * WHERE:
  157. * N = ( 0 - 9 ) NUMBER OF DUMP TAPES TO RETAIN.
  158. *
  159. * NOTE: THIS DIRECTIVE CAN ONLY BE USED AS PART OF AN
  160. * (*EDIT) SEQUENCE.
  161. *
  162. *
  163. * *ADD,VSN=VSNN.
  164. *
  165. * WHERE:
  166. * VSNN = VSN OF TAPE WHOSE ENTRY WILL BE ADDED
  167. * TO THE DIRECTORY.
  168. *
  169. * NOTE: THIS DIRECTIVE CAN ONLY BE USED AS PART OF AN
  170. * (*EDIT) SEQUENCE.
  171. *
  172. *
  173. * *DELETE,DATE=YYMMDD,TIME=HHMMSS.
  174. * OR
  175. * *DELETE,VSN=VSNN.
  176. *
  177. * WHERE:
  178. * YYMMDD = DATE OF DIRECTORY DUMP RECORD TO DELETE.
  179. * HHMMSS = TIME OF DIRECTORY DUMP RECORD TO DELETE.
  180. * VSNN = VSN OF TAPE WHOSE ENTRY WILL BE DELETED
  181. * FROM THE DIRECTORY.
  182. *
  183. * NOTE: THIS DIRECTIVE CAN ONLY BE USED AS PART OF AN
  184. * (*EDIT) SEQUENCE.
  185. *
  186. *
  187. * *RECOVER,DBPFN/FORMAT,TIME=HHMMSS,DATE=YYMMDD,VSN=YYYYYY.
  188. *
  189. * WHERE:
  190. * DBPFN = DATA BASE PFN TO RECOVER.
  191. * FORMAT = *BLOCK* OR *RECORD*, IF NEITHER IS SPECIFIED,
  192. * THE FORMAT PARAMETER IS IGNORED IN THE
  193. * SELECTION OF A FILE TO RECOVER.
  194. * YYMMDD = DATA AT WHICH THE RECOVERY PROCESS WILL END.
  195. * HHMMSS = TIME AT WHICH THE RECOVERY PROCESS WILL END.
  196. * YYYYYY = VSN OF DUMP TAPE TO USE FOR THE LOADING
  197. * AND RECOVERY OF THE *DB* FILE.
  198. *
  199. *
  200. * *CREATE,ZZDBANN,LENGTH=NNNN.
  201. * OR
  202. * *CREATE,ZZDBBNN.
  203. *
  204. * WHERE:
  205. * ZZDBANN = AFTER IMAGE RECOVERY FILE.
  206. * ZZDBBNN = BEFORE IMAGE RECOVERY FILE.
  207. * NNNN = PRU LENGTH FOR *ARF* ONLY.
  208. *
  209. * RESTRICTIONS ON *NN* VALUE:
  210. * FOR *AFTER IMAGE* LOG FILE *NN* CAN BE 01 OR 02 ONLY.
  211. * FOR *BEFORE IMAGE* LOG FILE *NN* MUST BE WITHIN THE
  212. * RANGE SPECIFIED ON *BRF* DIRECTIVE IN *XXJ* FILE.
  213. *
  214. *
  215. * *LIST,DB,TIME=HHMMSS,DATE=YYMMDD.
  216. * OR
  217. * *LIST,DBPFN1,DBPFNN,TIME=HHMMSS,DATE=YYMMDD.
  218. * OR
  219. * *LIST,DB,VSN=VSNN,TIME=HHMMSS.
  220. *
  221. * WHERE:
  222. * DB = DATA BASE NAME.
  223. * YYMMDD = DATE FOR DELINEATING LIST.
  224. * HHMMSS = TIME FOR DELINEATING LIST.
  225. * VSNN = VSN OF *ARF* DUMP TAPE FOR LISTING.
  226. *
  227. MESSAGES SPACE 4,10
  228. *
  229. *** DAYFILE MESSAGES.
  230. *
  231. * TAG MESSAGES.
  232. *
  233. * ACF11 *DIRECTORY UNUSABLE*.
  234. * ARB2 *NO SPACE FOR LOG FILE BUFFER*.
  235. * DMRB *DMREC COMPLETE*.
  236. * DMRC *NO DMREC DIRECTIVES*.
  237. * DMRD *ERROR(S) ENCOUNTERED IN DMREC PROCESSING*.
  238. * DMRE *DMREC FAILED - XXXXXXX ZZ*.
  239. * GXJR *USER ACCESS NOT VALID*.
  240. * NOPB *NOTE FAILURE, THEN TYPE IN CFO,JSN.GO*.
  241. * PRSA *COMMAND ARGUMENT ERRORS*.
  242. * RTEB *PARITY ERROR IN TAPE WITH VSN = XXXXXX*.
  243. * RTEC *DUMP WILL START OVER*.
  244. * RTED *TAPE VSN = XXXXXX IS BAD, PLEASE REPLACE*.
  245. * RTFB *VSN - XXXXXX ALREADY IN DIRECTORY*.
  246. TITLE MACRO DEFINITIONS.
  247. ERROR SPACE 4,20
  248.  
  249. SPACE 4,10
  250. ** FILE BACKUP DIRECTORY - ZZDBDIR.
  251. *
  252. * THE FILE BACKUP DIRECTORY IS AN INDEXED SEQUENTIAL FILE,
  253. * RESIDING UNDER THE USER INDEX OF A PARTICULAR *XXJ* FILE.
  254. * THE FILE BACKUP DIRECTORY CONTAINS INFORMATION ABOUT
  255. * THE DATA BASE, INDEX AND AFTER IMAGE LOG FILES WITHIN ONE
  256. * DATA BASE. THIS IMPLIES THAT THERE IS ONE FILE BACKUP
  257. * DIRECTORY PER TAF/CRM DATA BASE WITHIN THE SYSTEM. THE
  258. * FILE BACKUP DIRECTORY IS ALLOCATED (DIRECT ACCESS FILE) AND
  259. * MAINTAINED BY *DMREC*. THE FILE BACKUP DIRECTORY WILL BE
  260. * CREATED BY DMREC WHEN *DMREC* IS CALLED THE FIRST TIME. AN
  261. * INFORMATIVE MESSAGE INDICATING THE CREATION OF THE FILE
  262. * BACKUP WILL BE ISSUED.
  263. *
  264. * PERMANENT FILE NAME = ZZDBDIR.
  265. *
  266. * WHERE DB = DATA BASE NAME.
  267. *
  268. * THE LOGICAL STRUCTURE OF THE FILE BACKUP DIRECTORY IS AS
  269. * FOLLOWS
  270. *
  271. * KEY (FOR IS) RECORD CONTENTS
  272. * ------------ ---------------
  273. *
  274. *
  275. * (CHARACTER POSITION 1-20) (CHARACTER POSITION 21-60)
  276. *
  277. * DB,0 DIRECTORY HEADER
  278. *
  279. * DBPFNAAA,0 DATA BASE FILE HEADER
  280. *
  281. * DBPFNBBB,0<PACKED DATE AND DATA BASE FILE DUMP ENTRY
  282. * TIME>
  283. *
  284. * DBPFN,N,<PACKED DATE AND AFTER IMAGE LOG DUMP ENTRY
  285. * TIME>
  286. *
  287. * ****VSN,* TAPE-VSN ENTRY
  288. *
  289. *
  290. *
  291. * A) DATA BASE DIRECTORY HEADER.
  292. *
  293. * CHARACTER
  294. * POSITION FIELD DESCRIPTION
  295. * -------- ----- -----------
  296. *
  297. * 1-2 DB DATA BASE ID.
  298. *
  299. * 3-20 0
  300. *
  301. * 21-30 PACKED DATE AND TIME WHEN THE FILE BACKUP
  302. * RECOVERY WAS CREATED.
  303. *
  304. * 31-36 0
  305. *
  306. * 37-40 COUNT OF NUMBER OF BRF-S DOWN FOR THIS
  307. * DATA BASE.
  308. *
  309. * 41-46 VSN OF FIRST *ARF* DUMP OF CURRENT SESSION.
  310. *
  311. * 47-50 PRE-ALLOCATION PERCENTAGE.
  312. *
  313. * 51-60 NUMBER OF BACKUP DUMPS TO RETAIN.
  314. *
  315. *
  316. *
  317. * B) DATA BASE FILE HEADER.
  318. *
  319. * CHARACTER
  320. * POSITION FIELD DESCRIPTION
  321. * --------- ----- -----------
  322. *
  323. * 1-7 DBPFN DATA BASE FILE NAME.
  324. *
  325. * 8-10 *AAA* DATA BASE FILE HEADER ID.
  326. *
  327. * 11-20 0
  328. *
  329. * 41-50 PRE-ALLOCATION PERCENTAGE (0 IS A LEGAL
  330. * PERCENTAGE).
  331. *
  332. * 51-60 NUMBER OF BACKUP FILE DUMP COPIES TO RETAIN
  333. * (OR "0" IF NOT SPECIFIED).
  334. *
  335. *
  336. * C) DATA BASE FILE DUMP RECORD.
  337. *
  338. * CHARACTER
  339. * POSITION FIELD DESCRIPTION
  340. * --------- ----- -----------
  341. *
  342. * 1-7 DBPFN DATA BASE FILE NAME.
  343. *
  344. * 8-10 *BBB* DATA BASE FILE DUMP RECORD ID.
  345. *
  346. * 11-20 PACKED DATE AND TIME**.
  347. *
  348. * 21-26 VSN VSN OF DUMP TAPE (FIRST REEL OF TAPE).
  349. *
  350. * 27-30 "6" OR "0" "6" IF RECORD DUMP, "0" IF BLOCK DUMP.
  351. *
  352. * 31-37 INDEX FILE NAME (IF APPLICABLE).
  353. *
  354. * 41-50 FILE ORDINAL FOR DATA FILE DUMP ON TAPE.
  355. *
  356. * 51-60 FILE ORDINAL FOR INDEX FILE DUMP ON TAPE.
  357. *
  358. *
  359. * D) AFTER IMAGE LOG DUMP ENTRY.
  360. *
  361. * CHARACTER
  362. * POSITION FIELD DESCRIPTION
  363. * -------- ----- -----------
  364. *
  365. * 1-7 DBPFN DATA BASE FILE NAME.
  366. *
  367. * 8-10 N AFTER IMAGE LOG COPY NUMBER.
  368. *
  369. * 11-20 PACKED DATA AND TIME OF FIRST TRANSACTION
  370. * ON TAPE.
  371. *
  372. * 21-26 VSN OF DUMP TAPE.
  373. *
  374. * 41-50 NUMBER OF AFTER IMAGE RECORDS FOR THIS
  375. * PARTICULAR DATA BASE FILE ON TAPE.
  376. *
  377. * 51-60 PACKED DATE/TIME OF LAST TRANSACTION.
  378. *
  379. *
  380. *
  381. *
  382. *
  383. * **THE DATE AND TIME ENTRY CONTAINS THE END TIME OF THE DUMP IN
  384. * CASE OF A BLOCK DUMP AND THE BEGIN TIME OF THE DUMP IN CASE
  385. * OF A RECORD DUMP.
  386. *
  387. *
  388. * E) VSN - ENTRY.
  389. *
  390. * CHARACTER
  391. * POSITION FIELD DESCRIPTION
  392. * --------- ----- -----------
  393. *
  394. * 1-4 ****
  395. *
  396. * 5-10 VSN VSN OF THE TAPE.
  397. *
  398. * 11-20 "*" 10 CHARACTERS OF "*".
  399. *
  400. * 21-26 VSN-N VSN OF NEXT TAPE IN DUMP SET. IF 0, CURRENT
  401. * ENTRY IS THE LAST ONE IN THE TAPE SET.
  402. *
  403. * 31-40 N FILE DUMP-NUMBER OF FILES ON THE TAPE
  404. * (REEL).
  405. * *ARF* DUMP - NUMBER OF *EOR* MARKS ON TAPE.
  406. *
  407. * 41-50 M FILE DUMP - NUMBER OF FILES ON ALL TAPES
  408. * OF SET.
  409. * *LRF* DUMP - THE NUMBER OF FILES WHOSE AFTER
  410. * IMAGES RESIDE ON THIS DUMP.
  411. *
  412. * 51-56 VSN-X FILE DUMP - 0.
  413. * *ARF* DUMP - VSN OF NEXT *ARF* DUMP TAPE.
  414. *
  415. * 57-60 N FILE DUMP - 1, FIRST REEL OF SET.
  416. * - 0, CONTINUATION REEL.
  417. * *ARF* DUMP - 0
  418. *
  419. *
  420. * THERE ARE FIVE TYPES OF RECORDS IN THE FILE BACKUP DIRECTORY.
  421. * THEY ARE ARRANGED IN A HIERARCHICAL STRUCTURE. THERE EXISTS
  422. * ONE RECORD PER ENTIRE DATA BASE (DATA BASE DIRECTORY HEADER),
  423. * ONE RECORD PER FILE WITHIN THE DATA BASE (DATA BASE FILE
  424. * HEADER), ONE RECORD PER FILE DUMPED ONTO A DUMP TAPE (DATA
  425. * BASE FILE DUMP RECORD), ONE RECORD PER FILE PER AFTER
  426. * IMAGE LOG DUMP, CONTAINING AFTER IMAGES FOR THE SPECIFIC
  427. * FILE (AFTER IMAGE LOG DUMP ENTRIES) AND ONE RECORD PER TAPE
  428. * REEL WITHIN THE GLOBAL BACKUP-TAPE SET (VSN - ENTRIES).
  429.  
  430. *
  431. * THE FOLLOWING EXAMPLE ILLUSTRATES THE RECORD RELATIONSHIP
  432. * WITHIN THE FILE BACKUP DIRECTORY
  433. *
  434. * - SUPPOSE DATA BASE "DB" CONTAINS TWO FILES, "DBF1" AND
  435. * "DBF2".
  436. *
  437. * - TWO FILES DUMPS WERE TAKEN, THE FIRST ON "PDATE-1", THE
  438. * SECOND ON "PDATE-2". BOTH FILE DUMPS EXTENDED OVER
  439. * TWO REELS OF TAPE (WITH THE VSN-S "VSN-A", "VSN-B",
  440. * AND "VSN-C", "VSN-D" RESPECTIVELY).
  441. *
  442. * - ONE AFTER IMAGE LOG DUMP WAS TAKEN CONTAINING AFTER IMAGE
  443. * LOG ENTRIES FOR BOTH "DBF1" AND "DBF". THE DUMP WAS TAKEN
  444. * AT DATE "PDATE-3" ONTO VSN "VSN-E".
  445. *
  446. * THE FOLLOWING ILLUSTRATES THE ENTRIES, AS CREATED ON THE
  447. * FILE BACKUP DIRECTORY.
  448. *
  449. * FULL KEY (FOR 1S) CONTENTS RECORD TYPE
  450. * ---------------- -------- -----------
  451. *
  452. * DB <DATA BASE HEADER>
  453. *
  454. * DBF1 <DATA BASE FILE HEADER>
  455. *
  456. * DBF2 <DATA BASE FILE HEADER>
  457. *
  458. * DBF1,BBB,PDATE-1 VSN-A <DATA BASE FILE DUMP>
  459. *
  460. * DBF1,BBB,PDATE-2 VSN-C <DATA BASE FILE DUMP>
  461. *
  462. * DBF1,1,PDATE-3 VSN-E <AFTER IMAGE LOG DUMP>
  463. *
  464. * DBF2,BBB,PDATE-1 VSN-A <DATA BASE FILE DUMP>
  465. *
  466. * DBF2,BBB,PDATE-2 VSN-C <DATA BASE FILE DUMP>
  467. *
  468. * DBF2,1,PDATE-3 VSN-E <AFTER IMAGE LOG DUMP>
  469. *
  470. * VSN-A,*...* VSN-B < VSN - ENTRY >
  471. *
  472. * VSN-B,*...* 0 < VSN - ENTRY >
  473. *
  474. * VSN-C,*...* VSN-D < VSN - ENTRY >
  475. *
  476. * VSN-D,*...* 0 < VSN - ENTRY >
  477. *
  478. * VSN-E,*...* 0 < VSN - ENTRY >
  479. ** ERROR - ERROR PROCESSING MACRO.
  480. *
  481. * ERROR P1,P2,P3,P4,P5,P6
  482. *
  483. * ENTRY *P1* = ADDRESS OR ERROR MESSAGE.
  484. * (*P1*L = LENGTH OF ERROR MESSAGE).
  485. * *P2* = ADDRESS OF REPLACEMENT WORD (OPTIONAL).
  486. * *P3* = ADDRESS OF STATEMENT IN ERROR (OPTIONAL).
  487. * *P4* = RETURN ADDRESS.
  488. * *P5* = READ NEXT DIRECTIVE INDICATOR (OPTIONAL).
  489. * *P6* = ERROR(S) ENCOUNTERED INDICATOR (OPTIONAL).
  490. *
  491. * USES X - 1, 2, 5, 6.
  492. * A - 1, 2, 6.
  493. * B - 4.
  494. *
  495. * CALLS RDD, WEM.
  496.  
  497.  
  498. PURGMAC ERROR
  499.  
  500. ERROR MACRO P1,P2,P3,P4,P5,P6
  501. IFC NE,*P5**,1
  502. RJ RDD READ NEXT DIRECTIVE
  503. MX2 0
  504. BX1 X2
  505. SB4 P1
  506. SX5 P1_L
  507. IFC NE,*P2**,1
  508. SA1 P2
  509. IFC NE,*P3**,1
  510. SA2 P3
  511. RJ WEM WRITE ERROR MESSAGE
  512. IFC NE,*P6**,2
  513. SX6 B1
  514. SA6 ERROR
  515. EQ P4 RETURN
  516. ERROR ENDM
  517. ZIPPP SPACE 4,25
  518. ** ZIPPP - CRM EXPAND MACRO.
  519. *
  520. * *ZIPPP* ADDS A CHARACTER TO A STRING.
  521. *
  522. * ZIPPP AA, BB, CC.
  523. *
  524. * ENTRY *AA* = CHARACTER LOCATION.
  525. * *BB* = LOCATION IF NO STORE NECESSARY.
  526. * *CC* = ERROR ADDRESS.
  527. * (B6) = LENGTH REMAINING IN DESTINATION AREA.
  528. * (X6) = CURRENT DESTINATION WORD.
  529. * (A6) = ADDRESS OF CURRENT DESTINATION WORD.
  530. * (B4) = NUMBER OF CHARACTERS LEFT IN DESTINATION WORD.
  531. * (B5) = NUMBER OF CHARACTERS LEFT IN SOURCE WORD.
  532. *
  533. * EXIT (B6) = LENGTH REMAINING IN DESTINATION AREA.
  534. * (X6) = CURRENT DESTINATION WORD.
  535. * (A6) = ADDRESS OF CURRENT DESTINATION WORD.
  536. * (B4) = NUMBER OF CHARACTERS LEFT IN DESTINATION WORD.
  537. * (B5) = NUMBER OF CHARACTERS LEFT IN SOURCE WORD.
  538. *
  539. * USES X - 6.
  540. * A - 6.
  541. * B - 4, 6.
  542.  
  543.  
  544. PURGMAC ZIPPP
  545.  
  546. ZIPPP MACRO AA,CC,BB
  547. LOCAL WIT
  548. SB6 B6-B1
  549. NG B6,CC IF ERROR ENCOUNTERED
  550. LX6 6
  551. BX6 X6+AA
  552. SB4 B4-B1
  553. .A IFC NE,**BB*
  554. NZ B4,BB IF RETURN NORMAL
  555. .A ELSE
  556. NZ B4,WIT IF CONTINUE IN LINE
  557. .A ENDIF
  558. SA6 A6+B1
  559. SX6 B0
  560. SB4 B5
  561. IFC EQ,**BB*,1
  562. WIT BSS 0
  563. ZIPPP ENDM
  564. SPACE 4,10
  565. ** ZAPPP - CRM EXPAND MACRO.
  566. *
  567. * *ZAPPP* RETRIEVES THE NEXT CHARACTER FROM A STRING.
  568. *
  569. * ENTRY (X4) = SOURCE WORD.
  570. * (A4) = ADDRESS OF SOURCE WORD.
  571. * (X0) = 54/777777777777777777B,6/0.
  572. * (B3) = NUMBER OF CHARACTERS IN SOURCE WORD.
  573. * (B2) = LENGTH OF RECORD.
  574. * (B5) = NUMBER OF CHARACTERS IN NEXT WORD.
  575. *
  576. * EXIT (X4) = SOURCE WORD.
  577. * (A4) = ADDRESS OF SOURCE WORD.
  578. * (X0) = 54/777777777777777777B,6/0.
  579. * (B3) = NUMBER OF CHARACTERS IN SOURCE WORD.
  580. * (B2) = LENGTH OF RECORD.
  581. * (B5) = NUMBER OF CHARACTERS IN NEXT WORD.
  582. *
  583. * USES X - 4, 5.
  584. * A - 4.
  585. * B - 2, 3.
  586.  
  587.  
  588. PURGMAC ZAPPP
  589.  
  590.  
  591. ZAPPP MACRO
  592. LOCAL WAT
  593. LX4 6
  594. BX5 -X0*X4
  595. SB3 B3-B1
  596. SB2 B2-B1
  597. NZ B3,WAT IF MORE CHARACTERS IN THIS WORD
  598. SA4 A4+B1
  599. SB3 B5
  600. WAT BSS 0
  601. ZAPPP ENDM
  602.  
  603.  
  604. * COMMON DECKS
  605.  
  606. *CALL COMKTAF
  607. *CALL COMKIPR
  608. QUAL SSD
  609. *CALL COMSSSD
  610. QUAL *
  611. *CALL COMKFLD
  612. *CALL COMKTDM
  613. *CALL COMKARF
  614. *CALL COMKCRM
  615. *CALL COMKZFN
  616. *CALL COMCARG
  617. *CALL COMCDXB
  618. *CALL COMCZTB
  619. *CALL COMCCMD
  620. *CALL COMCSNM
  621. *CALL COMCUPC
  622. *CALL COMCUSB
  623. *CALL COMCZAP
  624. *CALL COMCMVE
  625. *CALL COMCCDD
  626. *CALL COMCEDT
  627. *CALL COMCSFN
  628. *CALL COMCCOD
  629. *CALL COMSPFM
  630. TITLE ASSEMBLY CONSTANTS AND EQUIVALENCES.
  631. SPACE 4,10
  632.  
  633. *** ASSEMBLY CONSTANTS.
  634.  
  635. TDTR EQU 200B+40B*DTTP+TDEN
  636.  
  637. NUMARF EQU 1 NUMBER OF DUPLICATE *ARF* COPIES
  638.  
  639. NDUMP EQU 100 NUMBER OF DUMPS/DIRECTIVE &lt; HBUFL/2
  640.  
  641. EXPCT EQU 10 DEFAULT EXPAND PERCENTAGE
  642.  
  643. NCOPY EQU 2 NUMBER OF DEFAULT DUMP COPIES TO KEEP
  644.  
  645. TTIGL EQU 5000 MAXIMUM NUMBER OF IGNORE TABLE
  646.  
  647. FTABL EQU 5000 MAXIMUM NUMBER OF CONCURRENT ACTIVE TASKS
  648.  
  649. TLOGL EQU 100 MAXIMUM NUMBER OF FILES IN DATA BASE
  650.  
  651. TVSNL EQU 40 MAXIMUM NUMBER OF VSNS ALLOWED
  652.  
  653. WBUFL EQU 4001B WORKING BUFFER
  654.  
  655.  
  656. ** MISCELLANEOUS EQUIVALENCES.
  657.  
  658. IBUFL EQU 101B INPUT BUFFER LENGTH
  659. OBUFL EQU 101B OUTPUT BUFFER LENGTH
  660. PBUFL EQU 101B PROC BUFFER LENGTH
  661. DBUFL EQU 4001B DUMP BUFFER LENGTH
  662. TBUFL EQU 4001B TAPE BUFFER LENGTH
  663. HBUFL EQU 1001B HASH BUFFER LENGTH
  664. DIRL EQU 160 INPUT CHARACTER BUFFER LENGTH
  665. OLWSL EQU 136 LINE LENGTH (CHARACTERS)
  666. CBUFL EQU 1000B LENGTH OF DECOMPRESSION BUFFER
  667. LRDBUFL EQU 1000B LENGTH OF HASH LOAD BUFFER
  668. ACTR EQU 64B ARGUMENT COUNT
  669. CCDR EQU 70B CONTROL STATMENT IMAGE
  670. LINP EQU 60 LINES/PRINTER PAGE
  671. TRECL EQU 15 RECOVERY VSN TABLE LENGTH
  672.  
  673.  
  674. * FET-S AND FIT-S.
  675.  
  676. I BSS 0 INPUT FET
  677. INPUT FILEB IBUF,IBUFL,(FET=7)
  678.  
  679. O BSS 0 OUTPUT FET
  680. OUTPUT FILEC OBUF,OBUFL
  681.  
  682. DF BSS 0 DUMP/LOAD FET
  683. ARF BSS 0 AFTER IMAGE RECOVERY FILE FET
  684. DUMP BSS 0
  685. ZZZDATA FILEB DBUF,DBUFL,EPR,(FET=14)
  686.  
  687. IF BSS 0 INDEX FILE DUMP/LOAD FET
  688. INDEX BSS 0
  689. ZZINDEX FILEB DBUF,DBUFL,EPR,(FET=13)
  690.  
  691. OF BSS 0 OWNCODE ROUTINE FET
  692. OWN FILEB DBUF,DBUFL,EPR,(FET=13)
  693.  
  694. TP BSS 0 TAPE FET
  695. TAPE FILEB TBUF,TBUFL,XL,(FET=13),UPR,EPR
  696.  
  697. * FET FOR ZZZZZDG CRM FILE.
  698.  
  699. ZZZZZDG FILEB HBUF,HBUFL,(FET=14),EPR
  700.  
  701. * FET FOR FILE STATEMENT INFORMATION.
  702.  
  703. ZZZZZDR FILEB HBUF,HBUFL,(FET=7)
  704.  
  705. * FET FOR PROCEDURE FILE.
  706.  
  707. ZZZZSUB FILEB PBUF,PBUFL,(FET=8)
  708.  
  709. * FET FOR ZZZZZXD FILE - HOLDS FL .
  710.  
  711. ZZZZZG7 FILEB 1,2,EPR,UPR,(FET=8)
  712.  
  713. * FET AND BUFFERS FOR *XXJ* FILE.
  714.  
  715. XBUFL EQU 101B
  716. XXJ FILEB XBUF,XBUFL,(FET=13),EPR
  717. XBUF BSS XBUFL
  718.  
  719. * FET FOR BACK-UP DIRECTORY FILE.
  720.  
  721. ZZDBDIR FILEB DBUF,DBUFL,(FET=13B),EPR
  722.  
  723. * FET FOR CATLIST.
  724.  
  725. C BSS 0
  726. CAT FILEB HBUF,HBUFL,FET=16B
  727.  
  728.  
  729. * DIRECTORY FILE FIT.
  730.  
  731. DIRR FILE LFN=ZZDBDIR,FO=IS,RT=F,FL=60,KT=S,KL=20,ORG=NEW,DCT=D
  732.  
  733. * DATA FILE FIT.
  734.  
  735. DFIT FILE LFN=ZZZDATA,FO=IS,ORG=NEW,EFC=3
  736.  
  737. * AUXILARY FIT FOR BACKUP DIRECTORY FROM DUMP TAPE
  738.  
  739. FITA FILE LFN=ZZINDEX,FO=IS,RT=F,FL=60,KL=20,ORG=NEW,KT=S
  740.  
  741. * FET FOR CREATE LOG FILE
  742.  
  743. RECF RFILEC WBUF,WBUFL,EPR,FET=13D
  744.  
  745. * TEMPORARY SORT INPUT AND OUTPUT FILES
  746.  
  747. SORTI FILE FO=SQ,RT=F,BT=C,FL=60
  748. SORTO FILE FO=SQ,RT=F,BT=C,FL=60,PD=IO
  749.  
  750. * DECOLLATION TABLE FOR *DIRR*.
  751.  
  752. D CON 00010203040506075555B
  753. CON 10111213141516175555B
  754. CON 20212223242526275555B
  755. CON 30313233343536375555B
  756. CON 40414243444546475555B
  757. CON 50515253545556575555B
  758. CON 60616263646566675555B
  759. CON 70717273747576775555B
  760.  
  761.  
  762. ** COMMAND ARGUMENT TABLES.
  763.  
  764.  
  765. TT BSSZ 1 *TT* COMMAND ARGUMENT
  766. Z BSSZ 1 *Z* COMMAND ARGUMENT
  767.  
  768.  
  769. ** HDR1 LABEL FOR DUMP/LOAD TAPES.
  770.  
  771.  
  772. LBLAA DATA 10HTAF/CRM -
  773. DATA 7L*DMREC*
  774.  
  775. ** RECORD LOAD MIPGEN PROCEDURE.
  776.  
  777. PROCC DATA C*.PROC,ZZZZSUB.*
  778. VFD 60/10HFILE,ZZZDA
  779. PROCCFO VFD 60/10HTA,FO=
  780. DATA C*,XN=ZZINDEX.*
  781. DATA C*MIPGEN,ZZZDATA,ZZZZZDR,,ABT.*
  782. DATA C*ZZZZZG7.*
  783. DATA C*REVERT.*
  784. PROCCL EQU *-PROCC LENGTH OF COMMAND BUFFER
  785.  
  786. PROCD DATA C*.PROC,ZZZZSUB.*
  787. DATA C*MIPDIS,ZZZDATA,D.*
  788. DATA C*ZZZZZG7.*
  789. DATA C*REVERT.*
  790. PROCDL EQU *-PROCD LENGTH OF BUFFER
  791. ** MISCELLANEOUS SYMBOLS FOR EXC - EXECUTE CONTROL CARD.
  792.  
  793. OVLFWA EQU 100B FWA GENERATED OVERLAY
  794.  
  795. A0S CON 0 *A0*
  796. CS CON 0 POINTER TO COMMAND
  797. JA CON 0 JOB ACTIVITY RETURNED BY *GETACT*
  798. LW CON 0 LAST WORD OF FL
  799. LWADDR CON 0 LAST WORD ADDRESS OF FL
  800. PBA CON 0 ADDRESS OF PARAMETER BLOCK
  801. FL CON 0 MEMORY STATUS WORD
  802.  
  803. * LOADER CONTROL TABLE.
  804.  
  805. LT50 VFD 12/5000B,12/0,18/OVLFWA,18/EXC3
  806.  
  807. * END LOADER CONTROL TABLE.
  808.  
  809. LOWMEM BSS OVLFWA-ARGR+1
  810.  
  811. PROC DATA C*BEGIN,,ZZZZSUB.*
  812.  
  813. ** MISCELLANEOUS GLOBAL SYMBOLS.
  814.  
  815. ACFA VFD 12/2RZZ,12/0,18/3RDIR,18/0
  816. LWORD VFD 12/2LZZ,12/0,6/1LB,30/0
  817. LMASK VFD 12/7777B,12/0,6/77B,30/0
  818. DAT BSSZ 1
  819. ITIT BSSZ 1 POINTER TO NEXT *TTIG* SLOT
  820. TEMP1 BSSZ 1
  821. TEMP2 BSSZ 1
  822. IIBRF BSSZ 1 ADDRESS OF NEXT *TTBRF* ENTRY
  823. UDATE BSSZ 1 UNPACKED DATE
  824. UTIME BSSZ 1 UNPACKED TIME
  825. FILLD VFD 6/1L ,12/0,6/1L/,12/0,6/1L/,12/0,6/1L.
  826. FILLT VFD 6/1L ,12/0,6/1L.,12/0,6/1L.,12/0,6/1L.
  827. MTIME VFD 6/1L ,12/2L23,6/1L.,12/2L59,6/1L.,12/2L59,6/1L.
  828. SKEY BSSZ 1 KEY
  829. FVSN BSSZ 1 FIRST VSN
  830. EDFN VFD 42/0,18/0 EMPTY FILE DIRECTORY ENTRY
  831. VFD 60/0
  832. VFD 36/0,18/0,6/0
  833. VFD 42/0,18/0
  834. VFD 60/0
  835. VFD 60/0
  836.  
  837. EVSN VFD 24/4L****,36/0 EMPTY VSN DIRECTORY ENTRY
  838. VFD 60/10L**********
  839. VFD 36/0,24/0
  840. VFD 60/0
  841. VFD 60/0
  842. VFD 60/0
  843.  
  844. FILLER VFD 24/4L****,36/0 VSN ENTRY FILLER
  845. NUMF BSSZ 1 NUMBER OF FILES ( TOTAL )
  846. NUMV BSSZ 1 NUMBER OF VSN S ( TOTAL )
  847. FSTVSN BSSZ 1 FIRST VSN
  848. IDFN BSSZ 1 INDEX TO TDFN
  849. IVSN BSSZ 1 ADDRESS OF NEXT VSN
  850. NFLS BSSZ 1 TOTAL FILE COUNT PER TAPE
  851. FORD BSSZ 1 FILE ORDINAL
  852. HOLD BSSZ 1 TEMPORARY
  853. HOLD1 BSSZ 1 TEMPORARY
  854. HOLD2 BSSZ 1 TEMPORARY
  855. HOLD3 BSSZ 1 TEMPORARY
  856. HOLD4 BSSZ 1 TEMPORARY
  857. HOLD5 BSSZ 1 TEMPORARY
  858. HOLD6 BSSZ 1 TEMPORARY
  859. NXTENT BSSZ 1 NEXT *TLOG* ENTRY
  860. FSTFLG BSSZ 1 FIRST *ARF* OF SESSION FLAG
  861. BRFFLG BSSZ 1 *BRF* RECOVERY FLAG
  862. LFWA BSSZ 1 FWA OF LOAD RECORD
  863. LSTTRAN BSSZ 1 PACKED DATE/TIME OF LAST TRANSACTION
  864. TAPERR BSSZ 1 TAPE ERROR CNT
  865. EORCNT BSSZ 1 COUNT OF EOR-S ON TAPE
  866. PREC BSSZ 1 INDEX TO *TREC* TABLE
  867. XXPFN2 BSSZ 1 PERMANENT FILE NAME
  868. PEOR BSSZ 1 POINTER TO *TEOR* TABLE
  869. LLGN BSSZ 1 RECORD LENGTH IN WORDS
  870. LCOMP BSSZ 1 COMPRESSION FLAG
  871. LUCC BSSZ 1 UNUSED CHARACTERS
  872. LKLOC BSSZ 1 KEY LOCATION
  873. LKP BSSZ 1 KEY POSITION
  874. LKS BSSZ 1 KEY SIZE
  875. LCOLL BSSZ 20B COLLATION/DECOLLATION TABLE
  876. DMPFLG BSSZ 1 DUMP FLAG - C H E C K ---------
  877. DIRFLAG BSSZ 1 LWA OF CURRENT DIRECTIVE
  878. STDTIM BSSZ 1 PACKED START DATE AND TIME
  879. ETDTIM BSSZ 1 PACKED END DATE AND TIME
  880. EDATE BSSZ 1 END DATE
  881. ETIME BSSZ 1 END TIME
  882. DATE BSSZ 1 START DATE
  883. TIME BSSZ 1 START TIME
  884. DATE1 BSSZ 1 END DATE
  885. TIME1 BSSZ 1 END TIME
  886. TN BSSZ 1 TASK NAME
  887. TS BSSZ 1 TASK SEQUENCE NUMBER
  888. CYCL BSSZ 1 CYCLE NUMBER
  889. LENGTH BSSZ 1 LENGTH OF FILE
  890. FIRSTT BSSZ 1 PACKED DATE/TIME OF FIRST TRANSACTION
  891. LASTT BSSZ 1 PACKED DATE/TIME OF LAST TRANSACTION
  892. TRIP1 BSSZ 1 FIRST TRIP FLAG
  893. TTFLG BSSZ 1 TELL TAF FLAG
  894. TPMODE BSSZ 1 READ/WRITE MODE INDICATOR
  895. MRL BSSZ 1 ABSOLUTE MAXIMUM RECORD LENGTH
  896. JOBORG BSSZ 1 JOB ORIGIN CODE
  897. RBA BSSZ 1 ADRESS OF RECORD BUFFER
  898. RQTREQ BSSZ 1 REQUEST FROM ROUTINE *RQT*
  899. DBNAME BSSZ 1 DATA BASE NAME
  900. DIRECT BSSZ 1 CURRENT DIRECTIVE NAME
  901. EOF BSSZ 1 END-OF-FILE FLAG FOR DIRECTIVE FILE
  902. ERROR BSSZ 1 ERROR(S) ENCOUNTERED FLAG
  903. JUSER DATA -1 CURRENT USER
  904. OPFLG BSSZ 1 OPERATION FLAG
  905. EVENT BSSZ 1 EVENT FLAG
  906. KEY1 VFD 12/2HXX,48/0 CRM KEY1
  907. VFD 60/0
  908. KEY2 VFD 12/2HXX,48/0 CRM KEY2
  909. VFD 60/0
  910. YYBUF BSSZ 6 BUFFER
  911. XXBUF BSSZ 6 BUFFER
  912. XXPCT BSSZ 1 PERCENTAGE ( EXPAND DIRECTIVE )
  913. EXCOPY CON 1 NUMBER OF DUPLICATES
  914. SHIFTC BSSZ 1 SHIFT COUNT
  915. DATAF BSSZ 1 SIZE OF DATA FILE IN PRUS
  916. DMTAPE BSSZ 1 NUMBER OF DUMP TAPES
  917. INDXF BSSZ 1 SIZE OF INDEX FILE IN PRUS
  918. XXPFN1 BSSZ 1 TEMPORARY XXPFN
  919. NCHAR BSSZ 1 NUMBER OF CHARACTERS IN NAME
  920. DATEP BSSZ 1 TEMPORARY PACKED DATE -TIME
  921. PERCENT BSSZ 1 PERCENT GIVEN FLAG
  922. TEMPO BSSZ 1 TEMPORARY CELL - DUMMY
  923. SDATE BSSZ 1 TEMPORARY START DATE
  924. STIME BSSZ 1 TEMPORARY START TIME
  925. SDATE1 BSSZ 1 TEMPORARY END DATE
  926. STIME1 BSSZ 1 TEMPORARY END TIME
  927. SVSN BSSZ 1 TEMPORARY VSN
  928. STDFN BSSZ 1 TEMPORARY FILE NAME
  929. TEMPP BSSZ 1 TEMPORARY
  930.  
  931. * FIELDS FROM XXJ FILE.
  932.  
  933. XXUSER BSSZ 1 CURRENT USER NAME
  934. XXPW BSSZ 1 CURRENT PASSWORD
  935. XXFAM BSSZ 1 CURRENT FAMILY
  936. XXMRL BSSZ 1 MAXIMUM RECORD LENGTH FOR ALL FILES
  937. XXMKL BSSZ 1 MAXIMUM KEY LENGTH
  938. XXMBL BSSZ 1 MAXIMUM BLOCK LENGTH
  939. XXBRF BSSZ 1 TOTAL NUMBER OF *BRF-S* FOR DATA BASE
  940.  
  941. XXPFN BSSZ 1 PERMANENT FILE NAME
  942. XXTY BSSZ 1 FILE TYPE (DA, IS)
  943. XXACC BSSZ 1 READ/WRITE MODE
  944. XXRL BSSZ 1 RECORD LENGTH
  945. XXKL BSSZ 1 PRIMARY KEY LENGTH
  946. XXHASH BSSZ 1 HASHING ROUTINE NAME
  947. XXREC BSSZ 1 RECOVERY INDICATOR
  948. XXFWI BSSZ 1 FORCE WRITE INDICATOR
  949. XXPACK BSSZ 1 PACK NAME FOR DATA FILE
  950. XXDEV BSSZ 1 DEVICE FOR DATA FILE
  951. XXPC BSSZ 1 PRE-ALLOCATION PERCENTAGE FOR DATA FILE
  952.  
  953. XXIXN BSSZ 1 PERMANENT FILE NAME OF INDEX FILE
  954. XXNAKY BSSZ 1 NUMBER OF ALTERNATE KEYS
  955. XXIXP BSSZ 1 INDEX PACK NAME
  956. XXIDEV BSSZ 1 INDEX DEVICE
  957. XXIPC BSSZ 1 PRE-ALLOCATION PERCENTAGE FOR INDEX FILE
  958.  
  959. XXMODE BSSZ 1 ATTACH MODE FOR MS DUMP/LOAD FILE
  960.  
  961. * COMMAND ARGUMENT TABLE.
  962.  
  963. ARGA BSS 0
  964. I ARG ARGB,I
  965. L ARG ARGB+1,O
  966. TT ARG ARGB-2,TT
  967. Z ARG -ARGB-3,Z
  968. CON 0
  969.  
  970. ARGB CON 0LCOMPILE+3
  971. CON 0LLIST+3
  972. CON 1
  973. CON 1
  974.  
  975. * FSTT LOCATIONS.
  976.  
  977. * THERE IS A 3 WORD OFFSET OF THE *FSTT* TABLE.
  978.  
  979. FSTT20 EQU 15B
  980. FSTT21 EQU 16B
  981. FSTT22 EQU 17B
  982. FSTT56 EQU 53B
  983. FSTT66 EQU 63B
  984. FSTT100 EQU 75B
  985.  
  986. * MISC. CELLS FOR LIST AND EDIT
  987.  
  988. LFNC BSSZ 1 LFN CONTROL
  989. LSTC BSSZ 1 LIST CONTROL
  990. MTIM DATA 10H 00.00.00. MIDNIGHT TIME
  991. TKY1 BSSZ 1 WORD ONE OF KEY
  992. TKY2 BSSZ 1 WORD TWO OF KEY
  993. CKY1 BSSZ 1 TEMPORARY KEY WORD
  994. CKY2 BSSZ 1 TEMPORARY KEY WORD
  995. VKY1 BSSZ 1 TEMPORARY KEY WORD
  996. VKY2 BSSZ 1 TEMPORARY KEY WORD
  997. AKY1 BSSZ 1 TEMPORARY KEY WORD
  998. AKY2 BSSZ 1 TEMPORARY KEY WORD
  999. WDCT BSSZ 1 WORD COUNT
  1000. RPCT BSSZ 1 REPEAT COUNT
  1001. BKEY DATA 1H WORD OF BLANKS
  1002. BLKL DATA 1L BLANK LINE
  1003. VSNK DATA 10H********** WORD OF ASTERISKS
  1004. WSAL EQU 6 WSA LENGTH
  1005. WSAB BSSZ WSAL RECORD WSA
  1006. TFIL DATA 10H FILE DUMP FILE TYPE
  1007. LOGT DATA 10H AI LOG NN AFTER IMAGE TYPE
  1008. TFOR DATA 10H B BLOCK TYPE
  1009. DATA 10H R RECORD TYPE
  1010. BIND DATA 1AB BEGIN INDICATOR
  1011. HDRC BSSZ 1 HEADER CONTROL
  1012. LHDR BSSZ 1 LAST HEADER
  1013. EOFF EQU 100B END OF FILE
  1014. EOSF EQU 10B END OF SECTION FOR SEQUENTIAL FILE
  1015. KNFF EQU 445B KEY NOT FOUND
  1016. LWAK BSSZ 1 LWA OF KEY AREA
  1017. KEYW BSSZ 1 CURRENT ADDRESS IN KEY AREA
  1018. PLINL EQU 10 PRINT LINE LENGTH
  1019. PLIN BSSZ PLINL+1 PRINT LINE BUFFER
  1020. SCPC CON 0 BYTE POSITION
  1021. OPWD CON 3 OPTION CONTROL WRD (PRESET TO OCTAL/ALPHA)
  1022. EQTW CON 0 EQUIVALENCE TEST WORD
  1023. DTOL BSSZ 4 DATA FOR ONE LINE
  1024. WCBL CON 0 BEGINNING OF LINE WORD COUNT
  1025. MALR DATA C* -- ABOVE LINE REPEATED --*
  1026. RECC BSSZ 1 RECORD COUNT
  1027. CYCD BSSZ 1 CYCLE NUMBER FROM DIRECTORY HEADER
  1028. CYCF BSSZ 1 CYCLE CHANGE FLAG
  1029. CYCC BSSZ 1 CYCLE COUNT
  1030. CYCT BSSZ 1 TEMPORARY CYCLE COUNT
  1031. CYCM EQU 9 MAXIMUM CYCLE NUMBER
  1032. LDATE BSSZ 1 LAST CYCLE DATE/TIME
  1033. LFNP BSSZ 1 CURRENT FILE POINTER
  1034. ADDF BSSZ 1 ADD FLAG - ADD/DELETE VSN
  1035. DELF BSSZ 1 DELETE FLAG - DUMP/VSN ENTRY
  1036. EDTF BSSZ 1 EDIT FLAG - AUTO/MANUAL EDIT
  1037. TDFSL EQU 64 LENGTH OF COPY OF *TDFN* TABLE
  1038. TDFS BSSZ TDFSL COPY OF *TDFN* USED BY EDIT
  1039. TQRF BSSZ TQRFE *TBRF* TABLE
  1040. TARF BSSZ TARFE *TARF* TABLE
  1041.  
  1042. * WORDS/LINE TABLE INDEXED BY *JOBORG*.
  1043.  
  1044. WPLT BSS 0
  1045. CON 2 TERMINAL
  1046. CON 4 NON-TERMINAL
  1047.  
  1048. * LIST OF FILES PARAMETERS.
  1049.  
  1050. LOF VFD 12/0,18/LOFA,30/0
  1051. LOFA VFD 42/0,18/2
  1052. LOFB BSSZ 2
  1053. TABLES SPACE 4,10
  1054. ** TDIR - TABLE OF VALID DIRECTIVES.
  1055. *
  1056. * THIS TABLE CONTAINS THE VALID DIRECTIVES
  1057. * FOR *TAF/CRM* BATCH RECOVERY. IT ALSO CONTAINS THE
  1058. * OPERATION FLAGS WHICH VALIDATE THE USE OF SPECIFIC
  1059. * PARAMETERS ON ITS RELATED DIRECTIVE. SUBCODES ARE
  1060. * USED IN PROCESSING THE *CYCLE*, *ADD* AND *DELETE*
  1061. * DIRECTIVES WHICH ARE USED IN *EDIT*, AND IN
  1062. * RECOVERY PROCESSING IN *LOAD*.
  1063. *
  1064. *T TDIR 42/A, 18/B
  1065. *T,TDIR+1 1/C,1/D,1/E,1/F,1/G,1/H,1/I,1/J,1/K,49/,2/L
  1066. *
  1067. * A = TDMA - DIRECTIVE NAME.
  1068. * B = TDMB - PROCESSOR ADDRESS.
  1069. * C = TDMC - TIME.
  1070. * D = TDMD - DATE.
  1071. * E = TDME - VSN.
  1072. * F = TDMF - BLOCK/RECORD.
  1073. * G = TDMG - TASK NAME.
  1074. * H = TDMH - TASK SEQUENCE NUMBER.
  1075. * I = TDMI - LENGTH.
  1076. * J = TDMJ - PERCENT.
  1077. * K = TDMK - CYCLE.
  1078. * L = TDML - SUBCODE.
  1079.  
  1080. * INPUT DIRECTIVE TABLE.
  1081.  
  1082. TDMA FIELD 0,59,18 DIRECTIVE NAME
  1083. TDMB FIELD 0,17,0 PROCESSOR ADDRESS
  1084. TDMC FIELD 1,59,59 TIME
  1085. TDMD FIELD 1,58,58 DATE
  1086. TDME FIELD 1,57,57 VSN
  1087. TDMF FIELD 1,56,56 BLOCK/RECORD
  1088. TDMG FIELD 1,55,55 TASK NAME
  1089. TDMH FIELD 1,54,54 TASK SEQUENCE NUMBER
  1090. TDMI FIELD 1,53,53 LENGTH
  1091. TDMJ FIELD 1,52,52 PERCENT
  1092. TDMK FIELD 1,51,51 CYCLE
  1093. TDML FIELD 1,1,0 SUBCODE
  1094.  
  1095.  
  1096. TDIR BSS 0
  1097. VFD 42/0LCOMMENT,18/0 *COMMENT DIRECTIVE
  1098. VFD 60/0
  1099. VFD 42/0LDUMP,18/DMP *DUMP DIRECTIVE
  1100. VFD 1/TDMCN,1/TDMDN,1/TDMEN,1/TDMFN,56/0
  1101. VFD 42/0LLOAD,18/LOD *LOAD DIRECTIVE
  1102. VFD 1/TDMCN,1/TDMDN,1/TDMEN,1/TDMFN,56/0
  1103. VFD 42/0LLIST,18/LST *LIST DIRECTIVE
  1104. VFD 1/TDMCN,1/TDMDN,1/TDMEN,1/TDMFN,56/0
  1105. VFD 42/0LEDIT,18/EIT *EDIT DIRECTIVE
  1106. VFD 60/0
  1107. VFD 42/0LRECOVER,18/REC *RECOVER DIRECTIVE
  1108. VFD 1/TDMCN,1/TDMDN,1/TDMEN,1/TDMFN,56/0
  1109. VFD 42/0LUPDATE,18/UPD *UPDATE DIRECTIVE
  1110. VFD 1/TDMCN,1/TDMDN,1/TDMEN,1/TDMFN,56/0
  1111. VFD 42/0LEXPAND,18/EXP *EXPAND DIRECTIVE
  1112. VFD 7/0,1/TDMJN,52/0
  1113. VFD 42/0LIGNORE,18/IGN *IGNORE DIRECTIVE
  1114. VFD 4/0,1/TDMGN,1/TDMHN,54/0
  1115. VFD 42/0LCYCLE,18/EIT *CYCLE DIRECTIVE
  1116. VFD 8/0,1/TDMKN,49/0,2/2
  1117. VFD 42/0LDELETE,18/EIT *DELETE DIRECTIVE
  1118. VFD 1/TDMCN,1/TDMDN,1/TDMEN,55/0,2/3
  1119. VFD 42/0LADD,18/EIT *ADD DIRECTIVE
  1120. VFD 2/0,1/TDMEN,55/0,2/1
  1121. VFD 42/0LCREATE,18/CRT *CREATE DIRECTIVE
  1122. VFD 6/0,1/TDMIN,53/0
  1123. TDIRL EQU *-TDIR
  1124. TDFN SPACE 4,15
  1125. ** TDFN - TABLE OF DATA BASE FILE NAMES.
  1126. *
  1127. * THIS TABLE CONTAINS THE DATA BASE FILE NAMES AS READ
  1128. * FROM THE DIRECTIVE FILE.
  1129. *
  1130. *T TDFN 42/FILENAME,3/0,3/FLAG,12/0
  1131. *
  1132. * FILENAME = FILE NAME AS READ FROM DIRECTIVES.
  1133. * FLAG = *B* IF BLOCK OPERATION REQUESTED.
  1134. * FLAG = *R* IF RECORD OPERATION REQUESTED.
  1135. * FLAG = 0 IF DEFAULT OPERATION REQUESTED.
  1136.  
  1137.  
  1138. TDFNL EQU NDUMP*2
  1139. TDFN BSS TDFNL
  1140. TTIG SPACE 4,20
  1141. ** TTIG - TABLE OF TRANSACTIONS TO IGNORE.
  1142. *
  1143. * THIS TABLE CONTAINS A LIST OF TRANSACTION ENTRIES
  1144. * TO IGNORE WHEN UPDATING A *CRM* FILE. THE TABLE CONTAINS
  1145. * TWO WORD ENTRIES TERMINATED WITH A ZERO WORD.
  1146. *
  1147. *T,TTIG 42/TASKN,6/0,12/TID
  1148. * OR
  1149. * 30/TASKS,18/0,12/TID
  1150. *T,TTIG+1 60/BID
  1151. *
  1152. * TASKN = TASK NAME.
  1153. * TASKS = TASK SEQUENCE NUMBER.
  1154. * TID = TN - IF TASK NAME.
  1155. * = TS - IF TASK SEQUENCE NUMBER.
  1156. * BID = 0, IF ENTRY GENERATED BY *IGNORE* DIRECTIVE.
  1157. * = BEGIN IDENTIFIER IF ENTERED ON *BRF* RECOVERY.
  1158.  
  1159.  
  1160. TTIG BSSZ TTIGL
  1161. TVSN SPACE 4,10
  1162. ** TVSN - TABLE OF VSN ENTRIES.
  1163. *
  1164. * ONE WORD VSN ENTRIES TERMINATED BY A ZERO WORD.
  1165. *
  1166. *T TVSN 42/VSN,18/VSNN
  1167. *
  1168. * VSNN = NUMBER OF EOF-S ON THIS TAPE.
  1169.  
  1170.  
  1171. TVSN BSSZ TVSNL
  1172. BVSN BSSZ 1 1 WORD BUFFER FOR END OF TABLE
  1173. TTBRF SPACE 4,10
  1174. ** TTBRF - TABLE OF DOWNED *BRF-S*.
  1175. *
  1176. * THIS IS A TABLE OF *BRF-S* TO REALLOCATE ON A *BRF* RECOVERY.
  1177. * IT CONTAINS ONE WORD ENTRIES AND IS TERMINATED BY A
  1178. * ZERO WORD.
  1179. *
  1180. *T TTBRF 42/BRF,18/0
  1181.  
  1182.  
  1183. TTBRFL EQU 10 MAXIMUM NUMBER OF DOWNED BRFS
  1184. TTBRF BSSZ TTBRFL
  1185. SPACE 4,10
  1186. ** TEOR - TABLE OF VSN-S AND END OF RECORD COUNTS.
  1187. *
  1188. * THIS IS A TABLE OF ONE WORD ENTRIES OF VSN-S AND ITS
  1189. * ASSOCIATED *EOR* COUNT. THE TABLE IS TERMINATED BY
  1190. * A ZERO WORD.
  1191. *
  1192. *T,TEOR 36/VSN,24/EORCNT
  1193. *
  1194. * EORCNT = NUMBER OF EOR-S ON THIS TAPE
  1195.  
  1196. TEOR BSSZ TVSNL
  1197. SPACE 4,10
  1198. ** TREC - RECOVERY VSN TABLE.
  1199. *
  1200. * THIS TABLE CONTAINS THE FIRST REEL *ARF* TAPES VSN AND
  1201. * IS TERMINATED BY A ZERO WORD.
  1202. *
  1203. *T,TREC 36/VSN,24/0
  1204.  
  1205. TREC BSSZ TRECL
  1206. FTAB SPACE 4,10
  1207. ** FTAB - INTERMEDIATE IGNORE TABLE.
  1208. *
  1209. * THIS IS AN INTERMEDIATE TABLE THAT CONTAINS TWO WORD
  1210. * ENTRIES AND IS TERMINATED WITH A NEGATIVE WORD.
  1211. * THIS TABLE WILL EXPAND TO ITS PRESET LIMITS BUT
  1212. * WILL NOT REDUCE.
  1213. *
  1214. *T FTAB 42/FN,18/0
  1215. *T,FTAB+1 24/TS,6/0,30/BID
  1216. *
  1217. * FN= FILE NAME.
  1218. * TS = TASK SEQUENCE NUMBER.
  1219. * BID = BEGIN ID OF CURRENT TASK.
  1220.  
  1221.  
  1222. FTAB BSSZ FTABL
  1223. TLOG SPACE 4,10
  1224. ** TLOG - TABLE OF LOG ENTRIES.
  1225. *
  1226. * THIS TABLE CONTAINS TWO WORD ENTRIES OF THE FOLLOWING FORMAT.
  1227. *
  1228. *T TLOG 42/LFN,18/N
  1229. *T,TLOG+1 60/PDT
  1230. *
  1231. * LFN = LOGICAL FILE NAME.
  1232. * N = NUMBER OF *AFTER IMAGE* ENTRIES TO A *CRM* DATA FILE.
  1233. * PDT = PACKED DATE/TIME.
  1234.  
  1235.  
  1236. TLOG BSSZ TLOGL
  1237. SPACE 4,10
  1238. TITLE MAIN ROUTINE.
  1239. DMREC RJ PRS PRESET COMMAND VALUES
  1240.  
  1241. * CHECK FOR LEGAL USER.
  1242.  
  1243. USERNUM JUSER GET USER NAME
  1244. SA2 JUSER
  1245. SA1 =7L"USNM"
  1246. BX2 X2-X1
  1247. NZ X2,DMR1 IF USER = *TAF*
  1248. MX6 0
  1249. SA6 JUSER
  1250. DMR1 RJ RDD READ FIRST DIRECTIVE
  1251. ZR X1,DMR3 IF NO EOR/EOF
  1252. MESSAGE DMRC,,R
  1253. SX6 1
  1254. SA6 ERROR SET ERROR FLAG
  1255. EQ DMR6 EXIT
  1256.  
  1257. DMR2 RJ RDD READ NEXT DIRECTIVE
  1258.  
  1259. * CHECK FIRST CHARACTER.
  1260.  
  1261. DMR3 SA1 EOF
  1262. NZ X1,DMR6 IF EOF ON DIRECTIVE FILE
  1263. SA2 DIR
  1264. SX3 X2-1R*
  1265. NZ X3,DMR7 IF FIRST CHARACTER NOT = *
  1266. SA1 DIRFLAG
  1267. SB7 X1 RESTORE CURRENT DIRECTIVE LWA
  1268.  
  1269. * CHECK FOR COMMENT CARDS.
  1270.  
  1271. SA2 A2+B1 GET NEXT CHARACTER IN CARD
  1272. SX3 X2-1R/
  1273. ZR X3,DMR2 IF COMMENT (*/)
  1274. SX3 X2-1R.
  1275. ZR X3,DMR2 IF COMMENT (*.)
  1276.  
  1277. * CHECK FOR LEGAL DIRECTIVES.
  1278.  
  1279. RJ GPR GET FIRST PARAMETER FROM DIRECTIVE
  1280. GT B2,DMR7 IF ERROR ENCOUNTERED
  1281. MX0 42
  1282. SB2 B0
  1283. SB3 TDIRL LENGTH OF DIRECTIVE TABLE
  1284. SA4 TDIR FWA OF DIRECTIVE TABLE
  1285. DMR4 GE B2,B3,DMR7 IF DIRECTIVE NOT FOUND
  1286. BX6 X0*X4 MASK OUT
  1287. IX6 X6-X5
  1288. ZR X6,DMR5 IF DIRECTIVE FOUND
  1289. SA4 A4+2
  1290. SB2 B2+2
  1291. EQ DMR4 LOOP
  1292.  
  1293. DMR5 SB2 X4 VALID DIRECTIVE FOUND
  1294. ZR B2,DMR2 IF *COMMENT* DIRECTIVE
  1295. BX6 X5 SAVE DIRECTIVE NAME
  1296. SA6 DIRECT
  1297. SA4 A4+B1
  1298. BX6 X4
  1299. JP B2+ JUMP TO PROCESSOR ROUTINE
  1300.  
  1301. DMR6 WRITER O *CHECKOUT*
  1302. SA1 ERROR
  1303. ZR X1,DMR6.1 IF NO ERRORS IN PROCESSING
  1304. SA1 TT
  1305. ZR X1,DMR6.0 IF *TT* NOT SPECIFIED
  1306. SA1 DBNAME
  1307. SB5 DMRE
  1308. SB2 1RZ
  1309. RJ SNM SET DATA BASE NAME IN MESSAGE
  1310. SA1 DIRECT
  1311. SB5 DMRE
  1312. SB2 1RX
  1313. RJ SNM SET DIRECTIVE NAME IN MESSAGE
  1314. SA5 DMRE ADDRESS OF OPERATOR MESSAGE
  1315. RJ NOP NOTIFY OPERATOR OF ERROR
  1316. DMR6.0 MESSAGE DMRD,,R
  1317. EQ DMR6.2 COMPLETE PROCESSING
  1318.  
  1319. DMR6.1 MESSAGE DMRB,,R
  1320. DMR6.2 RJ RAF RETURN ALL FILES
  1321. RJ NTF NOTIFY TAF
  1322. ENDRUN
  1323.  
  1324. DMR7 ERROR DMRA,,,DMR3,R,E DIRECTIVE FORMAT ERROR
  1325.  
  1326. DMRA DATA 20H0 *****
  1327. DATA C*DIRECTIVE FORMAT ERROR.*
  1328. DMRAL EQU *-DMRA
  1329.  
  1330. DMRB DATA C*DMREC COMPLETE.*
  1331.  
  1332. DMRC DATA C*NO DMREC DIRECTIVES.*
  1333.  
  1334. DMRD DATA C*ERROR(S) ENCOUNTERED IN DMREC PROCESSING.*
  1335.  
  1336. DMRE DATA C* DMREC FAILED - XXXXXXX ZZ.*
  1337. TITLE DIRECTIVE PROCESSORS.
  1338. AAI SPACE 4,20
  1339. ** AAI - APPLY AFTER IMAGES.
  1340. *
  1341. * *AAI* APPLIES AN AFTER IMAGE LOG ENTRY TO A CRM DATA FILE
  1342. * IF THE IMAGE IS WITHIN THE TARGETED DATE AND TIME.
  1343. *
  1344. * ENTRY (STPDT) = START PACKED DATE/TIME.
  1345. * (ENPDT) = END PACKED DATE/TIME.
  1346. * (X4) = FWA OF *AFTER IMAGE*.
  1347. *
  1348. * EXIT (X1) = 0 - IF NO ERRORS
  1349. *
  1350. * USES X - ALL.
  1351. * A - 1, 2, 3, 4, 5, 6.
  1352. * B - 2, 3.
  1353. *
  1354. * MACROS DELETE, ERROR, FETCH, PUT, RMREP.
  1355.  
  1356.  
  1357. AAI SUBR ENTRY/EXIT
  1358. BX6 X4
  1359. SA6 HOLD3 SAVE FWA OF RECORD
  1360.  
  1361. * CHECK FOR THE ACCURANCE OF A BEGIN STAMP IN SPECIFIED
  1362. * DATE/TIME WINDOW. SKIP ALL IMAGES OUTSIDE THIS WINDOW.
  1363.  
  1364. SA1 X4+2 GET TIME/DATE
  1365. SA2 STPDT
  1366. IX2 X1-X2
  1367. NG X2,AAI16 IF BEFORE BEGIN DATE/TIME
  1368. SA2 ENPDT
  1369. IX2 X2-X1
  1370. NG X2,AAI16 IF AFTER END DATE/TIME
  1371. * SEARCH *TTIG* TABLE FOR AFTER IMAGES TO IGNORE.
  1372.  
  1373. AAI7 MX0 48
  1374. MX5 24
  1375. SB3 TTIG
  1376. SA4 HOLD3
  1377. AAI8 SA1 B3
  1378. ZR X1,AAI12 IF TABLE SEARCH DONE
  1379. BX2 -X0*X1
  1380. SX3 2RTN
  1381. BX2 X2-X3
  1382. NZ X2,AAI10 IF NOT TASK NAME - TASK SEQUENCE NUMBER
  1383. SA2 X4+XLTNW GET TASK NAME FROM AFTER IMAGE
  1384. BX2 X0*X2
  1385. BX3 X0*X1
  1386. BX2 X2-X3
  1387. ZR X2,AAI11 IF TASK NAME MATCH
  1388. AAI9 SB3 B3+2
  1389. EQ AAI8 GET NEXT ENTRY
  1390.  
  1391. AAI10 SA2 X4
  1392. BX2 X5*X2 TASK SEQUENCE NUMBER FROM RECORD
  1393. BX3 X5*X1 TASK SEQUENCE NUMBER FROM *TTIG*
  1394. BX2 X2-X3
  1395. NZ X2,AAI9 IF NOT TS MATCH
  1396. AAI11 SA3 A1+B1 GET BID FROM *TTIG*
  1397. ZR X3,AAI16 IF BID .EQ. 0 ( FROM DIRECTIVE )
  1398. MX6 30
  1399. SA2 X4+B1 BID FROM RECORD
  1400. BX2 -X6*X2
  1401. BX3 X2-X3
  1402. ZR X3,AAI16 IF MATCH ON BID ALSO ---
  1403. EQ AAI9 GET NEXT ENTRY
  1404.  
  1405. * CHECK OTHER DELIMMITING FACTORS.
  1406.  
  1407. AAI12 SA2 XXPFN
  1408. SA1 HOLD3
  1409. SA3 X1+4
  1410. MX0 42
  1411. BX3 X0*X3
  1412. BX3 X2-X3
  1413. NZ X3,AAI16 IF NOT CORRECT DBPFN
  1414. SA2 STPDT
  1415. SA3 X1+2 IMAGE DATE/TIME
  1416. IX4 X3-X2
  1417. NG X4,AAI16 IF BEFOR BEGIN DATE/TIME
  1418. SA2 ENPDT
  1419. IX4 X2-X3
  1420. NG X4,AAI16 IF AFTER END DATE/TIME
  1421. SA2 X1
  1422. MX0 43
  1423. BX4 -X0*X2 TYPE OF RECORD
  1424.  
  1425. * CALCULATE FWA OF RECORD AND RECORD LENGTH IN CHARACTERS.
  1426.  
  1427. SA5 X1+3
  1428. MX0 36
  1429. BX2 -X0*X5
  1430. SX2 X2+9
  1431. SX3 10
  1432. IX2 X2/X3 KL IN WORDS
  1433. SX2 X2+6 ADD HEADER
  1434. IX2 X2+X1 ADD FWA OF IMAGE
  1435. AX5 24
  1436. BX7 -X0*X5 RECORD LENGTH IN CHARACTERS
  1437.  
  1438. * CHECK TYPE FOR UPDATES.
  1439.  
  1440. SX3 X4-TRDE CHECK FOR DELETE
  1441. NZ X3,AAI13 IF NOT DELETE
  1442. SX1 X1+6
  1443. DELETE DFIT,,X1
  1444. EQ AAI15 CONTINUE
  1445.  
  1446. AAI13 SX3 X4-TRRW CHECK FOR REPLACE
  1447. NZ X3,AAI14 IF NOT REPLACE
  1448. SX1 X1+6
  1449. RMREP DFIT,X2,X7,,X1
  1450. EQ AAI15 CONTINUE
  1451.  
  1452. AAI14 SX3 X4-TRWR CHECK FOR WRITE
  1453. NZ X3,AAI16 IF NOT WRITE
  1454. SX1 X1+6
  1455. PUT DFIT,X2,X7,,X1
  1456. AAI15 FETCH DFIT,FNF,X2
  1457. NG X2,AAI18 IF A FATEL ERROR
  1458. AAI16 SX1 B0
  1459. EQ AAIX RETURN - RETURN NORMAL
  1460.  
  1461. AAI17 ERROR AAIB,,,AAIX,,E AAIC OVERFLOW
  1462.  
  1463. AAI18 BX1 X2 OCTAL VALUE OF ERROR
  1464. RJ COD CONVERT OCTAL TO DISPLAY
  1465. SB2 1RX SUBSTITUTE CHARACTER
  1466. SB5 AAIA1 ASSEMBLY AREA
  1467. BX1 X4 LEFT JUSTIFIED ERROR CODE
  1468. RJ SNM SET NAME IN MESSAGE
  1469. ERROR AAIA,,,AAIX,,E CRM ERROR
  1470.  
  1471. AAIA DATA 20H0 *****
  1472. AAIA1 DATA C*CRM ERROR XXXB IN UPDATE PROCESSING.*
  1473. AAIAL EQU *-AAIA
  1474.  
  1475. AAIB DATA 20H0 *****
  1476. DATA C*AFTER IMAGE ACCUMULATION TABLE OVERFLOW.*
  1477. AAIBL EQU *-AAIB
  1478.  
  1479. ACF SPACE 4,25
  1480.  
  1481. ** ACF - ATTACH *ZZDBDIR* FILE (BACKUP DIRECTORY FILE).
  1482. *
  1483. * ATTACH *ZZDBDIR* FILE, IF INACCESSABLE, RECONSTRUCT
  1484. * *ZZDBDIR*. IF FILE BUSY, ROLLOUT AND WAIT. FILE
  1485. * IS ATTACHED IN WRITE MODE.
  1486. *
  1487. * ENTRY (XXPFN) = DATA BASE AND PFN.
  1488. * (XXDEV) = DEVICE.
  1489. *
  1490. * EXIT FILE *ZZDBDIR* ATTACHED.
  1491. *
  1492. * USES X - ALL.
  1493. * A - 1, 2, 3, 5, 6, 7.
  1494. * B - NONE.
  1495. *
  1496. * CALLS CER, FER, GXJ, RXJ.
  1497. *
  1498. * MACROS ATTACH, CLOSEM, DEFINE, ERROR, FETCH, GETN,
  1499. * MESSAGE, OPENM, PDATE, PUT, RECALL, REWINDM,
  1500. * ROLLOUT, STORE.
  1501.  
  1502.  
  1503. ACF SUBR ENTRY/EXIT
  1504. RECALL ZZDBDIR
  1505. MX0 12
  1506. SA2 XXPFN
  1507. BX3 X0*X2
  1508. BX6 X3
  1509. SA6 ACFC SAVE DATA BASE NAME
  1510. LX3 48
  1511. SA2 ACFA
  1512. LX0 48
  1513. BX2 -X0*X2
  1514. BX6 X2+X3
  1515. SA6 ACFA
  1516. MX0 42
  1517. SA5 ZZDBDIR
  1518. BX7 -X0*X5
  1519. BX7 X7+X6
  1520. SA7 A5
  1521. SA1 ACFA
  1522. STORE DIRR,LFN=X1
  1523. ACF1 RECALL ZZDBDIR
  1524. ATTACH ZZDBDIR,,,,W
  1525. SX2 ZZDBDIR SET FET ADDRESS
  1526. RJ CER CHECK ERROR STATUS
  1527. ZR X1,ACF2 IF NO ERROR
  1528. SX1 X1-1
  1529. NZ X1,ACF5 IF ATTACH ERROR ON DIRECTORY - REBUILD
  1530. SX6 B0
  1531. SA6 EVENT
  1532. ROLLOUT EVENT WAIT FOR FILE NOT BUSY
  1533. EQ ACF1 LOOP
  1534.  
  1535. ACF2 OPENM DIRR,I-O
  1536.  
  1537. * CHECK DATA BASE NAME
  1538.  
  1539. REWINDM DIRR
  1540. GETN DIRR,WSAB,,TKY1 READ DIRECTORY HEADER
  1541. SA2 ACFC GET DATA BASE NAME
  1542. SA3 TKY1 GET ALTERNATE KEY
  1543. IX2 X3-X2
  1544. NZ X2,ACF9.1 IF DATA BASE NAME INCORRECT
  1545. REWINDM DIRR
  1546. EQ ACFX RETURN
  1547.  
  1548. * RECONSTRUCT FILE
  1549.  
  1550. ACF5 DEFINE ZZDBDIR,,,,,,W
  1551. STORE DIRR,ERL=0
  1552. STORE DIRR,EMK=YES
  1553. OPENM DIRR,NEW
  1554. PDATE DATEP
  1555. SX7 B0
  1556. SX4 EXPCT
  1557. SX5 NCOPY
  1558. SA3 DATEP
  1559. MX0 12
  1560. SA2 ACFA
  1561. LX2 12
  1562. BX6 X0*X2
  1563. SA6 XXBUF SET KEY FOR HEADER
  1564. SX6 B0
  1565. SA6 A6+B1
  1566. BX6 X3
  1567. SA6 A6+B1 DATE/TIME
  1568. SA7 A6+B1 ZERO *BRF* DOWN DATE/TIME AND COUNT
  1569. SA1 =6LZZZZZZ SET DEFAULT FIRST *ARF* VSN
  1570. BX7 X4+X1
  1571. SA7 A7+B1 PRE - ALLOCATION PERCENTAGE
  1572. BX7 X5
  1573. SA7 A7+B1
  1574. PUT DIRR,XXBUF,60,,XXBUF
  1575. RJ FER CHECK FIT ERROR
  1576. NZ X1,ACF11 IF ERROR
  1577. MX0 12
  1578. SA5 XXPFN
  1579. BX6 X5
  1580. SA6 XXPFN1
  1581. BX5 X0*X5 SET DATA BASE NAME FOR GXJ
  1582. RJ GXJ GET XXJ FILE
  1583. NZ X1,ACF11 IF ERROR
  1584. SX5 B1
  1585. ACF6 RJ RXJ READ XXJ FILE
  1586. ZR X1,ACF7 IF NO ERROR
  1587. PL X1,ACF11 IF ERROR
  1588. NZ X2,ACF8 IF ONE LAST ENTRY
  1589. EQ ACF9 DONE
  1590.  
  1591. ACF7 SA2 XXPFN
  1592. SX3 3RAAA DATA BASE FILE HEADER - ID
  1593. BX6 X2+X3
  1594. SA6 XXBUF
  1595. SX6 B0
  1596. SA6 A6+B1
  1597. SA6 A6+B1
  1598. SA6 A6+B1
  1599. SX6 EXPCT SET DEFAULT PERCENTAGE FOR FILES
  1600. SA6 A6+B1
  1601. SX6 NCOPY
  1602. SA6 A6+B1
  1603. PUT DIRR,XXBUF,60,,XXBUF
  1604. RJ FER CHECK FIT ERROR
  1605. NZ X1,ACF11 IF ERROR
  1606. SX5 B0 SET NON INITIAL CALL TO RXJ
  1607. EQ ACF6 LOOP
  1608.  
  1609. ACF8 SA2 XXPFN
  1610. SX3 3RAAA
  1611. BX6 X2+X3
  1612. SA6 XXBUF
  1613. SX6 B0
  1614. SA6 A6+B1
  1615. SA6 A6+B1
  1616. SX7 EXPCT SET DEFAULT PERCENTAGE FOR FILES
  1617. SA6 A6+B1
  1618. SA7 A6+B1
  1619. SX6 NCOPY SET NUMBER OF DEFAULT DUMPS
  1620. SA6 A7+B1
  1621. PUT DIRR,XXBUF,60,,XXBUF
  1622. FETCH DIRR,ES,X5
  1623. NZ X5,ACF11 IF ERROR IN DIRECTORY
  1624.  
  1625. ACF9 CLOSEM DIRR,U
  1626. ERROR ACFB,ACFA,,ACF10
  1627.  
  1628. ACF9.1 CLOSEM DIRR,U
  1629. SA1 DIRR GET NAME OF FILE
  1630. MX0 42
  1631. BX1 X1*X0
  1632. SB2 1RZ SUBSTITUTE CHARACTER
  1633. SB5 -ACFDA
  1634. SB3 ACFDA ADDRESS OF ASSEMBLY AREA
  1635. RJ SNM SET NAME IN MESSAGE
  1636. ERROR ACFD,,,DMR3,,E *ZZZ - DOES NOT MATCH DATA BASE NAME.*
  1637.  
  1638. ACF10 SA5 XXPFN1
  1639. BX6 X5
  1640. SA6 XXPFN RESTORE XXPFN
  1641. EQ ACF1 RETURN TO ATTACH DIRECTORY
  1642.  
  1643. ACF11 MESSAGE (=C* DIRECTORY UNUSABLE *)
  1644. EQ DMR6 ABORT
  1645.  
  1646. ACFB DATA 20H0 *****
  1647. DATA C*BACKUP DIRECTORY - XXXXXXX HAS BEEN RECONSTRUCTED.*
  1648. ACFBL EQU *-ACFB
  1649. ACFC BSSZ 1
  1650. ACFD DATA 20H0 *****
  1651. ACFDA DATA C*ZZZZZZZ DOES NOT MATCH DATA BASE NAME.*
  1652. ACFDL EQU *-ACFD
  1653.  
  1654. TITLE SUBROUTINES.
  1655. ADD SPACE 4,15
  1656. ** ADD - ADD VSN AND CORRESPONDING DUMP ENTRIES.
  1657. *
  1658. * ENTRY (TVSN) = VSN NUMBER.
  1659. * (LFNC) = 0, IF ALL FILES.
  1660. * 1, IF SELECTIVE FILES.
  1661. *
  1662. * EXIT (X1) = 0, IF NO ERRORS.
  1663. *
  1664. * USES X - 0, 1, 2, 4, 5, 6.
  1665. * A - 0, 1, 2, 6.
  1666. * B - 7.
  1667. *
  1668. * CALLS FER, LBL, LDH, MDI, MDS, RQT, SVK, WBL.
  1669. *
  1670. * MACROS CLOSEM, ERROR, FETCH, OPENM, READ,
  1671. * READW, RMGET, SKIPEI, SKIPFB.
  1672.  
  1673.  
  1674. ADD SUBR ENTRY/EXIT
  1675. SA1 TVSN *TVSN* PARAMETER
  1676. SX6 A1
  1677. SA6 IVSN SAVE ADDRESS FOR TAPE REQUEST
  1678. RJ SVK SET VSN KEY
  1679. RMGET DIRR,WSAB,0,,VKY1 TRY TO GET VSN ENTRY
  1680. RJ FER FIT ERROR STATUS
  1681. NZ X1,ADD1 IF VSN DOES NOT EXIST
  1682. SX1 B1
  1683. SA2 LFNC
  1684. ZR X2,ADD6 IF ALL FILES AFFECTED
  1685. ADD1 SX5 B0 READ MODE FOR TAPE REQUEST
  1686. SB7 TP TAPE REQUEST FET
  1687. SA2 TVSN
  1688. BX6 X2
  1689. RJ RQT REQUEST TAPE
  1690. SA1 =6L MASS STORAGE FILE
  1691. BX2 X1-X6
  1692. ZR X2,ADD2 IF DISK FILE ASSIGNED
  1693. SA1 TVSN
  1694. BX2 X1-X6
  1695. NZ X2,ADD7 IF NOT THE SAME VSN
  1696. SKIPEI TP,R
  1697. SKIPFB TP,,R
  1698. READ TP,R
  1699. READW TP,WBUF,WBUFL DIRECTORY FILE
  1700. ZR X1,LOD10 IF ERROR
  1701. NG X1,LOD10 IF ERROR
  1702. SA1 ACFA DIRECTORY FN
  1703. BX6 X1
  1704. SA6 XXPFN SET XXPFN FOR *LBL* READING OF TRAILER
  1705. SA1 TP+B1 RESET FET
  1706. SX6 X1
  1707. SA6 A1+B1 IN
  1708. SA6 A6+B1 OUT
  1709. SX4 IF FET ADDRESS
  1710. RJ LBL COPY FILE TO FITA
  1711. NZ X1,ADDX IF ERROR
  1712. ADD2 OPENM FITA,INPUT
  1713. FETCH FITA,ES,X1 ERROR STATUS ON OPEN
  1714. NZ X1,ADD8 IF ERROR ON OPEN
  1715. EQ ADD9 PRINT OLD DIRECTORY HEADER
  1716.  
  1717. ADD3 SA0 FITA SET FIT ADDRESS
  1718. SX6 B1 ONLY DIRECTORY HEADER
  1719. RJ LDH LIST DIRECTORY HEADER
  1720. RJ WBL WRITE BLANK LINE
  1721. SX6 B1
  1722. SA6 ADDF SET ADD FLAG
  1723. SA1 LFNC
  1724. NZ X1,ADD4 IF SELECTIVE FILES
  1725. RJ MDI MODIFY DIRECTORY
  1726. EQ ADD5 RETURN
  1727.  
  1728. ADD4 RJ MDS MODIFY SELECTIVE FILES IN DIRECTORY
  1729. ADD5 CLOSEM FITA,U
  1730. MX1 0
  1731. EQ ADDX RETURN
  1732.  
  1733. ADD6 ERROR ADDA,,,ADDX,,E VSN ALREADY EXISTS
  1734.  
  1735. ADD7 ERROR ADDB,,,ADDX,,E NOT THE SAME VSN
  1736.  
  1737. ADD8 ERROR ADDC,,,ADDX,,E OPEN ERROR
  1738.  
  1739. ADD9 ERROR ADDD,,,ADD3 LIST DIRECTORY MESSAGE
  1740.  
  1741. ADDA DATA 20H0 *****
  1742. DATA C*VSN ALREADY EXISTS.*
  1743. ADDAL EQU *-ADDA
  1744.  
  1745. ADDB DATA 20H0 *****
  1746. DATA C*VSN ASSIGNED DOES NOT MATCH VSN REQUESTED.*
  1747. ADDBL EQU *-ADDB
  1748.  
  1749. ADDC DATA 20H0 *****
  1750. DATA C*OPEN ERROR ON COPY OF THE DIRECTORY.*
  1751. ADDCL EQU *-ADDC
  1752.  
  1753. ADDD DATA 20H0
  1754. DATA C*DIRECTORY HEADER FROM THE COPY.*
  1755. ADDDL EQU *-ADDD
  1756. ADF SPACE 4,50
  1757. ** ADF - ATTACH DATA BASE FILES.
  1758. *
  1759. * *ADF* ATTACHES *CRM* DATA BASE, INDEX AND OWNCODE FILES.
  1760. *
  1761. * THE FOLLOWING FILE NAMES ARE USED:
  1762. *
  1763. * DUMP *CRM* DATA FILE.
  1764. * INDEX *CRM* INDEX FILE.
  1765. * LFN LFN OF THE OWNCODE FILE.
  1766. *
  1767. * FILES *DUMP* AND *INDEX* ARE DIRECT ACCESS PERMANENT FILES.
  1768. * THE OWNCODE FILE IS AN INDIRECT ACCESS PERMANENT FILE.
  1769. * NOTE, THAT THE APPROPRIATE PERMISSIONS TO ACCESS THESE
  1770. * FILES VIA *DMREC* HAVE TO BE SET, IF *DMREC* IS USED VIA
  1771. * *TAF-S* USER NAME.
  1772. *
  1773. * BOTH THE *DUMP* AND *INDEX* FILES WILL BE ATTACHED IN THE
  1774. * SAME MODE. THE ATTACH MODE DEPENDS ON *XXMODE*.
  1775. *
  1776. * ENTRY (XXUSER) = USER NAME.
  1777. * (XXPFN) = PERMANENT FILE NAME.
  1778. * (XXHASH) = OWNCODE ROUTINE NAME.
  1779. * (XXPACK) = PACK NAME FOR DATA FILE.
  1780. * (XXDEV) = DEVICE FOR DATA FILE.
  1781. * (XXIXN) = INDEX PERMANENT FILE NAME.
  1782. * (XXIXP) = PACK NAME FOR INDEX FILE.
  1783. * (XXIDEV) = DEVICE FOR INDEX FILE.
  1784. * (XXMODE) = 0, WRITE MODE REQUESTED.
  1785. * (XXMODE) = 6, READ MODIFY MODE REQUESTED.
  1786. * (XXMODE) = -1, THE ROUTINE TRYS AT FIRST TO
  1787. * ATTACH THE FILE IN WRITE MODE.
  1788. * IF THIS FAILS, READ MODIFY
  1789. * MODE WILL BE USED.
  1790. *
  1791. * EXIT (X1) = 0, IF NO ERRORS ENCOUNTERED.
  1792. * (X1) .NE. 0, IF ERRORS ENCOUNTERED.
  1793. * (XXMODE) = 0, IF WRITE-ATTACHED.
  1794. * (XXMODE) = 6, IF READ MODIFY-ATTACHED.
  1795. *
  1796. * USES X - 0, 1, 2, 3, 6, 7.
  1797. * A - 1, 2, 6, 7.
  1798. * B - NONE.
  1799. *
  1800. * CALLS CER.
  1801. *
  1802. * MACROS ATTACH, ERROR, GET, STATUS.
  1803.  
  1804.  
  1805. ADF SUBR ENTRY/EXIT
  1806. SA1 XXMODE GET REQUESTED MODE
  1807. PL X1,ADF2 IF NOT NULL MODE
  1808. ADF1 SX6 PTWR WRITE MODE
  1809. SA6 XXMODE FIRST TRY WRITE - ATTACH
  1810. ATTACH DF,XXPFN,,,XXMODE,XXPACK,XXDEV
  1811. SX2 DF SET FET ADDRESS
  1812. RJ CER CHECK ERROR
  1813. ZR X1,ADF3 IF NO ERROR
  1814. SX6 PTRM READ MODIFY MODE
  1815. SA6 XXMODE THEN TRY READ - ATTACH
  1816. ADF2 ATTACH DF,XXPFN,,,XXMODE,XXPACK,XXDEV
  1817. SX2 DF SET FET ADDRESS
  1818. RJ CER CHECK ERROR
  1819. NZ X1,ADF6 IF ERROR
  1820. ADF3 SA1 XXIXN
  1821. ZR X1,ADF4 IF NO INDEX FILE SPECIFIED
  1822.  
  1823. * ATTACH INDEX FILE.
  1824.  
  1825. ATTACH IF,XXIXN,,,XXMODE,XXIXP,XXIDEV
  1826. SX2 IF SET FET ADDRESS
  1827. RJ CER CHECK FOR ERRORS
  1828. NZ X1,ADF6 IF STATUS ERROR
  1829.  
  1830. * GET OWNCODE FILE.
  1831.  
  1832. ADF4 SA1 XXHASH
  1833. ZR X1,ADFX IF NO OWNCODE ROUTINE SPECIFIED
  1834. SX3 B1
  1835. IX7 X1+X3
  1836. SA7 OF
  1837.  
  1838. * CHECK IF OWNCODE FILE AT CONTROL POINT.
  1839.  
  1840. STATUS OF
  1841. SA1 OF
  1842. MX7 11
  1843. LX1 59-11
  1844. BX7 X7*X1
  1845. ZR X7,ADF5 IF FILE NOT AT CONTROL POINT
  1846. MX1 0
  1847. EQ ADFX RETURN
  1848.  
  1849.  
  1850. ADF5 SA2 OF
  1851. MX0 42
  1852. BX2 -X0*X2
  1853. SA1 XXHASH REPLACE FN
  1854. BX6 X1+X2
  1855. SA6 A2
  1856. GET OF
  1857. SX2 OF SET FET ADDRESS
  1858.  
  1859. RJ CER CHECK FOR ERRORS
  1860. ZR X1,ADFX IF NO ERRORS
  1861.  
  1862. ERROR ADFC,XXHASH,,ADFX,,E GET ERROR ON FILE
  1863.  
  1864. ADF6 ERROR ADFB,XXPFN,,ADFX,,E ATTACH ERROR ON FILE
  1865.  
  1866.  
  1867. ADFB DATA 20H0 *****
  1868. DATA C*ATTACH ERROR ON PF XXXXXXX.*
  1869. ADFBL EQU *-ADFB
  1870. ADFC DATA 20H0 *****
  1871. DATA C*GET ERROR ON PF XXXXXXX.*
  1872. ADFCL EQU *-ADFC
  1873. ALC SPACE 4,15
  1874. ** ALC - ADVANCE LINE COUNT.
  1875. *
  1876. * *ALC* ADVANCES THE LINE COUNT FOR THE OUTPUT FILE PAGE AND
  1877. * CHECKS FOR END-OF-PAGE. IF END-OF-PAGE IS ENCOUNTERED,
  1878. * SAVE INITIAL RETURN ADDRESSES OF *ALC* AND *LPH*.
  1879. *
  1880. * ENTRY (X2) = LINE COUNT TO ADVANCE.
  1881. *
  1882. * EXIT LINE COUNT ADVANCED.
  1883. *
  1884. * USES X - 1, 2, 4, 6, 7.
  1885. * A - 1, 2, 6, 7.
  1886. * B - 2.
  1887. *
  1888. * CALLS CDD, STL.
  1889.  
  1890.  
  1891. ALC SUBR ENTRY/EXIT
  1892. SA1 ALCA LINE COUNT
  1893. IX7 X1+X2
  1894. SA7 A1 LINE COUNT ADVANCED
  1895. SB2 X1-LINP
  1896. NG B2,ALCX IF NOT AT END OF PAGE
  1897. SA1 ALCB
  1898. SX7 X1+1 ADVANCE PAGE COUNT
  1899. SA7 ALCB
  1900. RJ CDD CONVERT TO DISPLAY CODE
  1901. MX4 30
  1902. SA1 STLAP HEADER PAGE WORD
  1903. BX2 X4*X1
  1904. BX6 -X4*X6
  1905. BX6 X6+X2
  1906. SA6 A1 NEW PAGE NUMBER INSERTED
  1907. MX7 0
  1908. SA7 ALCA CLEAR LINE COUNT
  1909. SA1 ALC RETURN ADDRESS
  1910. BX6 X1
  1911. SA6 ALCC SAVE RETURN ADDRESS
  1912. SA2 LPH LPH INITIAL RETURN ADDRESS
  1913. BX7 X2
  1914. SA7 ALCD SAVE RETURN ADDRESS
  1915. RJ STL SET NEW TITLE LINE
  1916. SA1 ALCC RETURN ADDRESS
  1917. BX6 X1
  1918. SA6 ALC PUT INITIAL RETURN ADDRESS
  1919. SA2 ALCD RESTORE INITIAL RETURN ADDRESS
  1920. BX7 X2
  1921. SA7 LPH RESTORE RETURN ADDRESS
  1922. EQ ALCX RETURN
  1923.  
  1924. ALCA CON 3 LINE COUNT
  1925. ALCB CON 2 PAGE COUNT
  1926. ALCC BSSZ 1 ALC INITIAL RETURN ADDRESS
  1927. ALCD BSSZ 1 LPH INITIAL RETURN ADDRESS
  1928. ARB SPACE 4,15
  1929. ** ARB - ALLOCATE BUFFER SPACE.
  1930. *
  1931. * ENTRY (B6) = 0, TO ALLOCATE *BRF* BUFFER.
  1932. * = 1, TO ALLOCATE *ARF* BUFFER.
  1933. * (TARF) = FWA OF *TARF* TABLE.
  1934. * (TBRF) = FWA OF *TBRF* TABLE.
  1935. *
  1936. * EXIT (X1) = 0, IF BUFFER ALLOCATED.
  1937. * 1, IF ERROR ENCOUNTERED.
  1938. *
  1939. * USES X - ALL.
  1940. * A - 1, 2, 3, 4, 6, 7.
  1941. * B - NONE.
  1942. *
  1943. * CALLS CTW.
  1944. *
  1945. * MACROS MESSAGE.
  1946.  
  1947.  
  1948. ARB SUBR ENTRY/EXIT
  1949. SA1 XXMKL MAXIMUM KEY LENGTH
  1950. SA2 XXMRL MAXIMUM RECORD LENGTH
  1951. BX7 X2
  1952. BX0 X1
  1953. RJ CTW CONVERT TO WORDS
  1954. BX3 X1 LENGTH IN WORDS
  1955. BX7 X0
  1956. RJ CTW CONVERT TO WORDS
  1957. IX3 X3+X1 (RL/10) + (KL/10)
  1958. SX7 X3+TARHL ADD *ARF* RECORD HEADER LENGTH
  1959. EQ B6,B1,ARB0 IF *ARF* BUFFER ALLOCATION
  1960. SX7 X3+TQRHL ADD *BRF* RECORD HEADER LENGTH
  1961. ARB0 SA7 XXMBL SAVE MAXIMUM BLOCK LENGTH
  1962. SX3 X7+64-1 ROUND UP A PRU
  1963. AX3 6 NUMBER OF FULL PRU-S
  1964. LX3 6 LENGTH IN WORDS ROUNDED UP TO FULL PRU-S
  1965. SX2 FWAB FWA OF BUFFER
  1966. IX5 X2+X3 LWA OF COMPUTED SPACE
  1967. SX4 LWAB LWA OF AVAILABLE SPACE
  1968. IX4 X4-X5
  1969. EQ B6,B1,ARB1 ALLOCATE *ARF* BUFFER
  1970.  
  1971. * ALLOCATE *BRF* BUFFER AND SET FIELDS IN *TBRF* TABLE.
  1972.  
  1973. SX6 CRMUPM RECORDS PER *BRF* SEGMENT
  1974. AX3 6
  1975. IX6 X3*X6 PRU-S PER *BRF* SEGMENT
  1976. SX7 CMDM NUMBER OF SEGMENTS PER *BRF* FILE
  1977. BX3 X6
  1978. LX7 TQNPN
  1979. BX6 X6+X7
  1980. LX3 6 LENGTH IN WORDS ROUNDED UP TO FULL PRU-S
  1981. SX1 WBUFL
  1982. IX3 X3-X1
  1983. PL X3,ARB2 IF BUFFER TOO SMALL
  1984. SA6 TQRF+TQNPW *BRF* FILE HEADER WORD THREE
  1985. SX6 44B RANDOM AND USER EP BITS IN FET+1
  1986. SX7 3 FET LENGTH
  1987. LX6 24D POSTION
  1988. BX6 X6+X7
  1989. LX6 18
  1990. BX6 X6+X2 ADD *FIRST*
  1991. SA6 TQRF+TQFTW STORE FET+1 IN *TBRF* TABLE
  1992. SX6 X2
  1993. SA6 A6+B1 STORE *IN*
  1994. SA6 A6+B1 STORE *OUT*
  1995. SX6 X5+B1 SET *LIMIT*
  1996. SA6 A6+B1 STORE *LIMIT*
  1997. BX1 X1-X1
  1998. EQ ARBX RETURN
  1999.  
  2000. * ALLOCATE *ARF* BUFFER AND SET FIELDS IN *TARF* TABLE.
  2001.  
  2002. ARB1 SA4 XXMBL MAXIMUM BLOCK SIZE IN WORDS
  2003. SX6 CRMARB NUMBER OF *ARF* RECORDS PER BUFFER
  2004. IX4 X4*X6
  2005. SX6 63 ROUND-UP TO PRU
  2006. IX4 X4+X6
  2007. SX1 WBUFL
  2008. IX6 X4-X1
  2009. PL X6,ARB2 IF BUFFER TOO SMALL
  2010. AX4 6
  2011. LX4 6 BUFFER LENGTH IN MULTIPLE PRU-S
  2012. SA3 LENGTH LENGTH OF *ARF* FILE IN PRU-S
  2013. LX3 TAFLS-TAFLN+1
  2014. BX6 X3+X4
  2015. SA6 TARF+TABLW SET *ARF* FILE HEADER WORD 4
  2016. SX6 44B RANDOM AND USER EP BITS IN FET+1
  2017. SX7 3 8 WORD FET
  2018. LX6 24D
  2019. BX6 X6+X7 MERGE
  2020. LX6 18
  2021. BX6 X6+X2 ADD *FIRST*
  2022. SA6 TARF+TAFTW STORE FET+1 IN *TARF* TABLE
  2023. SX6 X2
  2024. SA6 A6+B1 STORE *IN*
  2025. SA6 A6+B1 STORE *OUT*
  2026. SX6 X5+B1 SET *LIMIT*
  2027. SA6 A6+B1 STORE *LIMIT*
  2028. BX1 X1-X1
  2029. EQ ARBX RETURN
  2030.  
  2031. ARB2 MESSAGE (=C* NO SPACE FOR ARF/BRF BUFFER.*)
  2032. SX1 1 ERROR IN ALLOCATION
  2033. EQ ARBX RETURN
  2034.  
  2035.  
  2036. ATF SPACE 4,15
  2037. ** ATF - ATTACH OR DEFINE FILE.
  2038. *
  2039. * ENTRY (X1) = FIRST WORD OF FET -
  2040. * PERMANENT FILE NAME AND COMPLETION BIT.
  2041. * (B7) = ONE IF *ARF* OR *BRF* TO BE DEFINED.
  2042. * .GT. ONE IF *ARF* OR *BRF* TO BE ATTACHED.
  2043. *
  2044. * EXIT (X1) = ZERO IF FILE ATTACHED OR DEFINED, NO ERROR.
  2045. * = ERROR CODE IF ERROR ON ATTACH OR DEFINE.
  2046. *
  2047. * USES X - 1, 4, 6, 7.
  2048. * A - 1, 4, 6, 7.
  2049. * B - NONE.
  2050. *
  2051. * MACROS ATTACH, DEFINE.
  2052.  
  2053.  
  2054. ATF SUBR ENTRY/EXIT
  2055. BX7 X1
  2056. SA7 RECF PFN TO FET+0
  2057. MX7 12
  2058. SX6 ATFA ERROR BUFFER ADDRESS
  2059. SA6 RECF+10
  2060. SA4 A7+B1
  2061. BX7 -X7*X4
  2062. SA7 A4 CLEAR DEVICE TYPE IN FET+1
  2063. SX7 B0 ATTACH MODE = ZERO = WRITE MODE
  2064. SA7 RECF+12 CLEAR PACKNAME/UNIT IN FET+12
  2065. SA7 RECF+7 STORE ATTACH MODE IN FET+7
  2066. GT B7,B1,ATF1 IF ATTACH FILE
  2067. DEFINE RECF,,,,RECF+7
  2068. EQ ATF2 CHECK FOR ERRORS
  2069.  
  2070. ATF1 ATTACH RECF,,,,RECF+7
  2071. ATF2 MX7 -8
  2072. SA1 RECF FET+0
  2073. AX1 10
  2074. BX1 -X7*X1 SAVE RIGHT JUSTIFIED ERROR CODE
  2075. EQ ATFX RETURN
  2076.  
  2077. ATFA BSSZ 3 BUFFER FOR ERROR MESSAGE
  2078. BBE SPACE 4,10
  2079. ** BBE - BUILD BACKUP DIRECTORY ENTRIES.
  2080. *
  2081. * BUILD BACKUP DIRECTORY ENTRIES FROM INFORMATION
  2082. * IN TABLES *TDFN* AND *TVSN*.
  2083. *
  2084. * ENTRY (NUMF) = NUMBER OF FILES ON *TDFN*
  2085. * (NUMV) = NUMBER OF VSN-S ON *TVSN*
  2086. * TABLES *TDFN* AND *TVSN* CONSTRUCTED.
  2087. * (DMPFLG) = 0 IF LOG FILE DUMP.
  2088. * .NE. 0 IF DATA FILE DUMP.
  2089. *
  2090. * EXIT BACKUP ENTRIES BUILT
  2091. * (X1) = 0 - NO ERRORS
  2092. *
  2093. * USES X - ALL.
  2094. * A - 1, 2, 3, 4, 5, 6, 7.
  2095. * B - 2, 3.
  2096. *
  2097. * CALLS CDD, FER, WFH.
  2098. *
  2099. * MACROS ERROR, MOVE, PDATE, PUT, RMGET
  2100. * RMREP, WRITEF, WRITER, WRITEW.
  2101.  
  2102.  
  2103. BBE SUBR ENTRY/EXIT
  2104. SA1 DMPFLG
  2105. ZR X1,BBE10 IF LOG FILE
  2106.  
  2107. * CREATE VSN ENTRIES FOR DIRECTORY.
  2108.  
  2109. SX6 B0-B1
  2110. SA6 HOLD
  2111. BBE1 SA1 NUMV
  2112. SA2 HOLD
  2113. SX6 X2+B1
  2114. SA6 A2
  2115. IX2 X1-X6
  2116. ZR X2,BBE3 IF NO MORE TAPES
  2117. SA2 TVSN+X6
  2118. MX0 36
  2119. BX6 X0*X2 MASK VSN
  2120. LX6 36
  2121. SA1 FILLER ADD ****
  2122. BX6 X1+X6
  2123. SA6 EVSN
  2124. SA4 A2+B1
  2125. BX6 X0*X4
  2126. SA6 A6+2
  2127. MX0 -18
  2128. BX6 -X0*X2
  2129. SA6 A6+B1
  2130. SX6 B0
  2131. SX7 B0
  2132. SA4 HOLD CHECK FOR FIRST TAPE
  2133. NZ X4,BBE2 IF NOT FIRST TAPE
  2134. SA3 FORD GET FILE ORDINAL
  2135. BX6 X3
  2136. SX7 B1 SET FIRST TAPE FLAG
  2137. BBE2 SA6 A6+B1
  2138. SA7 A6+B1
  2139. PUT DIRR,EVSN,60,,EVSN
  2140. RJ FER CHECK FIT ERROR
  2141. NZ X1,BBE20 IF ERROR
  2142. EQ BBE1 PROCESS NEXT TAPE
  2143.  
  2144. * CREATE FILE DUMP ENTRIES FOR DIRECTORY.
  2145.  
  2146. BBE3 SX6 B0-2
  2147. SA6 HOLD
  2148. BBE4 SA1 NUMF NUMBER OF FILES
  2149. SA2 HOLD
  2150. SX6 X2+2 INCREMENT BY 2
  2151. SA6 A2
  2152. IX2 X1-X6
  2153. ZR X2,BBE9 IF NO MORE FILES
  2154. SB2 X6
  2155. MX7 42
  2156. SA2 TDFN+B2
  2157. SX3 3RBBB DATA BASE DUMP RECORD - ID
  2158. BX6 X7*X2
  2159. BX6 X6+X3
  2160. SA6 EDFN
  2161. MX0 3 GET DUMP MODE
  2162. LX0 15
  2163. BX3 X0*X2
  2164. NZ X3,BBE5 IF RECORD DUMP
  2165. PDATE TEMPO
  2166. SA3 TEMPO
  2167. BX6 X3
  2168. SA6 EDFN+B1
  2169. EQ BBE6 CONTINUE
  2170.  
  2171. BBE5 SA3 STDTIM RECORD DUMP - START TIME
  2172. BX6 X3
  2173. SA6 EDFN+B1
  2174. BBE6 MX0 36
  2175. SA3 TVSN
  2176. BX6 X0*X3
  2177. SX0 PTRM READ MODIFY MODE
  2178. SA3 HOLD
  2179. SB3 X3
  2180. SA3 TDFN+B3
  2181. BX2 X3
  2182. AX3 12
  2183. BX7 X0*X3
  2184. BX6 X7+X6
  2185. SA6 EDFN+2
  2186. MX4 48
  2187. BX6 -X4*X2
  2188. SA6 A6+2
  2189. SA2 A3+B1 GET INDEX FILE NAME
  2190. NZ X2,BBE7 IF INDEX FILE
  2191. SX6 B0
  2192. SA6 A6-B1 INDEX FILE NAME
  2193. SA6 A6+2 INDEX FILE ORDINAL
  2194. EQ BBE8 CONTINUE
  2195.  
  2196. BBE7 MX0 42
  2197. BX6 X0*X2
  2198. SA6 A6-B1
  2199. MX0 48
  2200. BX6 -X0*X2
  2201. SA6 A6+2
  2202. BBE8 PUT DIRR,EDFN,60,,EDFN
  2203. RJ FER CHECK FIT ERROR
  2204. NZ X1,BBE20 IF ERROR
  2205. EQ BBE4 CONTINUE
  2206.  
  2207. BBE9 SX1 B0
  2208. EQ BBEX RETURN
  2209.  
  2210. * CREATE LOG FILE ENTRIES IN DIRECTORY.
  2211.  
  2212. BBE10 SX4 B0 SET BLOCK MODE
  2213. SA2 XXPFN FN
  2214. RJ WFH WRITE FILE HEADER
  2215. NZ X1,BBEX IF ERROR
  2216. SA5 TLOG
  2217. ZR X5,BBE21 IF NO *ARF* ENTRIES
  2218. SX6 B0
  2219. BBE11 SA6 HOLD
  2220. SA2 HOLD GET TLOG INDEX
  2221. SA5 TLOG+X2
  2222. ZR X5,BBE13 IF SEARCH DONE
  2223. SA1 EXCOPY *ARF* COPY NUMBER
  2224. RJ CDD CONCERT TO DISPLAY CODE
  2225. MX0 42
  2226. BX2 -X0*X6
  2227. BX6 X0*X5
  2228. BX6 X6+X2 FN + COPY NUMBER
  2229. SA6 EDFN PFN
  2230. SA3 A5+B1
  2231. BX6 X3
  2232. SA6 A6+B1 DATE/TIME
  2233. SA3 TVSN
  2234. BX6 X3
  2235. SA6 A6+B1 VSN
  2236. SX6 B0
  2237. SA6 A6+B1 ZERO
  2238. BX6 -X0*X5
  2239. SA6 A6+B1 NUMBER OF RECORDS
  2240. SA1 LSTTRAN
  2241. BX6 X1
  2242. SA6 A6+B1 DATE/TIME OF LAST TRANSACTION
  2243. PUT DIRR,EDFN,60,,EDFN
  2244. RJ FER CHECK FIT ERROR
  2245. NZ X1,BBE20 IF ERROR
  2246. MOVE 6,EDFN,TBUF
  2247. SA1 TP+B1
  2248. SX7 X1
  2249. SA7 A1+2 OUT
  2250. SX7 X7+6
  2251. SA7 A7-B1 SET ( IN ) POINTER
  2252. WRITER TP,R
  2253. BBE12 SA2 HOLD
  2254. SX6 X2+2
  2255. EQ BBE11 RETURN FOR NEXT TLOG ENTRY
  2256.  
  2257. BBE13 SA1 XXPFN
  2258. LX1 48 POSITION FN
  2259. SX2 3REND
  2260. BX6 X2+X1
  2261. SA6 TEMPP TRAILER WORD
  2262. WRITEW TP,TEMPP,B1 WRITE TRAILER RECORD
  2263. BBE14 WRITEF TP,R
  2264.  
  2265. * PUT VSN OF FIRST *ARF* DUMP INTO DB HEADER AND/OR
  2266. * BUILD DIRECTORY ENTRY FOR *ARF* DUMP VSN.
  2267.  
  2268. BBE15 SA2 TDFN *ARF* NAME
  2269. MX0 12
  2270. LX2 12 SHIFT *ARF* NAME FOR DB
  2271. BX6 X0*X2
  2272. SA6 KEY2 SET KEY FOR HEADER
  2273. RMGET DIRR,XXBUF,0,,KEY2 GET DB HEADER
  2274. RJ FER CHECK FIT ERROR
  2275. NZ X1,BBE20 IF ERROR
  2276. SA1 FSTFLG GET FIRST *ARF* FLAG
  2277. ZR X1,BBE16 IF NOT FIRST *ARF*
  2278. SA2 EXCOPY
  2279. SX2 X2-1
  2280. NZ X2,BBE16 IF NOT FIRST COPY
  2281. SA3 XXBUF+4 GET VSN FROM HEADER RECORD
  2282. SA4 TVSN
  2283. MX0 36
  2284. BX7 -X0*X3
  2285. BX6 X7+X4
  2286. SA6 A3 INSERT VSN IN HEADER
  2287. RMREP DIRR,XXBUF,60,,KEY2 REPLACE HEADER
  2288. RJ FER CHECK FIT ERROR
  2289. NZ X1,BBE20 IF ERROR
  2290. BBE16 SX6 TVSN
  2291. SA6 IVSN INITIALIZE IVSN POINTER
  2292. SX7 TEOR
  2293. SA7 PEOR INITIALIZE POINTER TO *TEOR* TABLE
  2294. BBE16.1 SA4 IVSN
  2295. SA3 DMTAPE
  2296. NG X3,BBE18.1 IF NO MORE VSN ENTRIES
  2297. SX6 X3-1
  2298. SA6 A3 DECREMENT NUMBER OF DUMP TAPES
  2299. SA2 X4 GET VSN ENTRY
  2300. ZR X2,BBE18.0 IF NO VSN GIVEN
  2301. MX0 36
  2302. BX6 X0*X2
  2303. SA2 PEOR
  2304. SA4 X2 VSN FROM *TEOR* TABLE
  2305. BX5 X0*X4
  2306. IX1 X5-X6 COMPARE VSN-S
  2307. SX7 X2+B1
  2308. NZ X1,BBE22 IF VSN-S DO NOT MATCH
  2309. SA7 A2 INCREMENT *PEOR* POINTER
  2310. MX7 0
  2311. LX6 36
  2312. SA1 FILLER
  2313. BX6 X6+X1
  2314. SA6 EVSN SET KEY
  2315. ZR X3,BBE16.2 IF NO MORE VSN-S
  2316. SA5 IVSN GET NEXT VSN
  2317. SA2 X5+B1
  2318. BX7 X0*X2
  2319. BBE16.2 SA7 A6+2
  2320. BX6 -X0*X4 GET *EOR* COUNT
  2321. SA6 A7+B1 STORE *EOR* COUNT
  2322. SA2 HOLD GET NUMBER OF FILES ON THIS *ARF*
  2323. MX7 0
  2324. NZ X2,BBE17 IF NOT ZERO COUNT
  2325. BX6 X2
  2326. EQ BBE18 GO STORE ZERO
  2327.  
  2328. BBE17 SX6 X2-2
  2329. BBE18 SA6 A6+B1
  2330. SA7 A6+B1
  2331. PUT DIRR,EVSN,60,,EVSN ENTER VSN ENTRY
  2332. RJ FER CHECK FIT ERROR
  2333. NZ X1,BBE20 IF ERROR
  2334. BBE18.0 SA2 IVSN
  2335. SX7 X2+B1 INCREMENT IVSN
  2336. SA7 A2
  2337. EQ BBE16.1 CHECK NEXT VSN
  2338. BBE18.1 SA1 FSTFLG
  2339. NZ X1,BBE9 IF FIRST ARF
  2340. SA2 EXCOPY
  2341. SX2 X2-1
  2342. NZ X2,BBE9 IF NOT FIRST COPY
  2343. SA3 XXBUF+4
  2344. MX0 36
  2345. BX6 X0*X3
  2346. BBE19 LX6 36
  2347. SA1 FILLER
  2348. BX6 X6+X1
  2349. SA6 EVSN SET KEY
  2350. RMGET DIRR,XXBUF,0,,EVSN
  2351. RJ FER CHECK FIT ERROR
  2352. NZ X1,BBE20 IF ERROR
  2353. MX0 36
  2354. SA3 XXBUF+5
  2355. BX6 X0*X3
  2356. NZ X6,BBE19 IF VSN ALREADY
  2357. SA4 TVSN
  2358. BX6 X4
  2359. SA6 A3
  2360. RMREP DIRR,XXBUF,60,,EVSN
  2361. RJ FER CHECK FIT ERROR
  2362. NZ X1,BBE20 IF ERROR
  2363. EQ BBEX RETURN NORMAL
  2364.  
  2365. BBE20 ERROR BBEA,,,BBEX,,E ERROR IN BUILDING DIRECTORY ENTRIES
  2366.  
  2367. BBE21 ERROR BBEB,,,BBEX,,E NO ARF DUMP ENTRIES
  2368.  
  2369. BBE22 ERROR GFVD,,,BBEX,,E ERROR IN RETRIEVING VSN
  2370.  
  2371. BBEA DATA 20H0 *****
  2372. DATA C*ERROR IN BUILDING DIRECTORY ENTRIES.*
  2373. BBEAL EQU *-BBEA
  2374.  
  2375. BBEB DATA 20H0 *****
  2376. DATA C*NO ARF DUMP ENTRIES - DUMP IGNORED.*
  2377. BBEBL EQU *-BBEB
  2378. BFL SPACE 4,10
  2379. ** BFL - BLANK FILL LINE.
  2380. *
  2381. * ENTRY (PLIN) = FWA OF LINE.
  2382. * (PLINL) = LINE LENGTH.
  2383. *
  2384. * EXIT LINE BLANK FILLED.
  2385. *
  2386. * USES X - 1, 6.
  2387. * A - 1, 6.
  2388. * B - 7.
  2389.  
  2390.  
  2391. BFL SUBR ENTRY/EXIT
  2392. SB7 PLINL
  2393. SA1 BKEY BLANK FILLED WORD
  2394. BX6 X1
  2395. BFL1 SA6 PLIN+B7
  2396. SB7 B7-B1
  2397. GE B7,B0,BFL1 IF WITHIN LINE
  2398. EQ BFLX RETURN
  2399. BIF SPACE 4,10
  2400. ** BIF - BUILT INDEX FILE.
  2401. *
  2402. * THIS SUBROUTINE CONSTRUCTS AN INDEX FILE WITH
  2403. * INFORMATION EXTRACTED FROM AN EXISTING ONE. A
  2404. * FILE OF *MIPGEN* DIRECTIVES IS BUILT AND IS USED
  2405. * IN A SUBSEQUENT *MIPGEN* COMMAND RUN.
  2406. * SUBROUTINE *EXC* EFFECTS THE *MIPGEN* CALL AND
  2407. * FIELD LENGTH RECONSTRUCTION.
  2408. *
  2409. * ENTRY (DUMP) - FWA AND LFN OF DATA FILE.
  2410. *
  2411. * EXIT (X1) = 0 - IF NO ERRORS.
  2412. *
  2413. * USES X - ALL.
  2414. * A - 1, 2, 3, 4, 5, 6, 7.
  2415. * B - 2, 3, 4, 5, 6, 7.
  2416. *
  2417. * CALLS CDD, DER, EXC, IRP, PPS, SFN.
  2418. *
  2419. * MACROS DEFINE, ERROR, PURGE, READ, READW, RETURN,
  2420. * REWIND, WRITEC, WRITER.
  2421.  
  2422.  
  2423. BIF SUBR ENTRY/EXIT
  2424. PURGE ZZINDEX,,,XXIXP,XXIDEV
  2425. RETURN ZZINDEX,R
  2426. DEFINE ZZINDEX,XXIXN,,,XXIDEV,,,XXIXP
  2427. SA1 XXTY GET FO=
  2428. SA2 PROCCFO
  2429. MX0 48
  2430. BX2 X0*X2
  2431. BX6 X1+X2
  2432. SA6 A2 STORE FILE TYPE IN PROC FILE
  2433. REWIND ZZZZSUB,R
  2434. WRITEW ZZZZSUB,PROCC,PROCCL
  2435. WRITER ZZZZSUB,R WRITE PROCEDURE FILE TO *ZZZZSUB*
  2436. REWIND ZZZZSUB,R
  2437. RJ GRM GET *RMKDEF* CARDS
  2438. REWIND ZZZDATA,R
  2439. REWIND ZZINDEX,R
  2440. REWIND ZZZZZG7,R
  2441. CLOSEM DFIT,R
  2442. RJ EXC INITIATE MIPGEN
  2443. SX1 B0
  2444. EQ BIFX RETURN NORMAL
  2445. BLT SPACE 4,20
  2446. ** BLT - BUILD LOG TABLE.
  2447. *
  2448. * *BLT* EXTRACTS RECORDS FROM THE *ARF* (AFTER IMAGE RECOVERY
  2449. * FILE) AND BUILDS A TABLE OF UNIQUE FILE NAMES. THESE
  2450. * ENTRIES ALSO INCLUDE A COUNT OF TRANSACTION ACCURANCES.
  2451. *
  2452. * ENTRY *ARF* ATTACHED (FET - *ARF*)
  2453. * ARF+8 MUST CONTAIN THE FILE PFN.
  2454. *
  2455. * EXIT TLOG BUILT.
  2456. * (X1) = 0 - IF NO ERROR.
  2457. * .NE. 0, OTHERWISE.
  2458. *
  2459. * USES X - ALL.
  2460. * A - 1, 2, 3, 4, 5, 6, 7.
  2461. * B - 2.
  2462. *
  2463. * CALLS GDR.
  2464. *
  2465. * MACROS ERROR.
  2466.  
  2467.  
  2468. BLT SUBR ENTRY/EXIT
  2469. SX6 B0
  2470. SA6 HOLD SET FOR INITIAL CALL
  2471. SX4 ARF
  2472. RJ GDR GET DATA RECORD
  2473. NG X1,BLT8 IF HEADER MISSING - EOF
  2474. NZ X1,BLTX IF ERROR
  2475. MX0 42
  2476. SA5 WBUF VERIFY LOG FILE NAME
  2477. BX3 X0*X5 FN FROM HEADER
  2478. SA4 ARF+8 FN FROM FET
  2479. BX4 X0*X4
  2480. BX1 X3-X4
  2481. NZ X1,BLT7 IF FN MISMATCH
  2482. SX6 B0
  2483. SA2 WBUF+3
  2484. PL X2,BLT1 IF NOT FIRST *ARF* DUMP
  2485. BX6 X2
  2486. BLT1 SA6 FSTFLG FIRST *ARF* FLAG SET
  2487. SX6 TLOG
  2488. SA6 NXTENT
  2489. BLT2 SX4 ARF
  2490. RJ GDR GET DATA RECORD FROM *ARF*
  2491. NG X1,BLT6 IF EOF
  2492. NZ X1,BLTX IF ERROR
  2493. SA3 X4+XLFNW
  2494. MX0 XLFNN
  2495. BX3 X0*X3
  2496. ZR X3,BLT2 IF NO FILE NAME IN THIS RECORD
  2497. SA1 X4+XLPDW
  2498. BX7 X1
  2499. SA7 LSTTRAN SAVE DATE/TIME OF LAST TRANSACTION
  2500. SX2 TLOG INITIALIZE SEARCH OF TLOG
  2501. BLT3 SA5 NXTENT
  2502. IX6 X5-X2
  2503. SB2 B1+B1
  2504. ZR X6,BLT4 IF SEARCH OF *TLOG* DONE
  2505. SA5 X2
  2506. BX5 X0*X5
  2507. BX5 X5-X3
  2508. ZR X5,BLT5 IF NAME MATCH - ALREADY IN TLOG.
  2509. SX2 X2+2
  2510. EQ BLT3 LOOK AT NEXT *TLOG* ENTRY
  2511.  
  2512. BLT4 SX7 TLOG+TLOGL
  2513. IX7 X7-X5
  2514. NG X7,BLT9 IF NO MORE ROOM
  2515. SA1 LMASK MASK
  2516. BX7 X1*X3
  2517. SA1 LWORD
  2518. BX7 X1-X7
  2519. ZR X7,BLT2 IF A *BRF* DOWN STAMP
  2520. BX7 X3
  2521. SA7 X5
  2522. SA5 X4+XLPDW
  2523. BX7 X5
  2524. SA7 A7+B1 STORE DATE/TIME IN *TLOG*
  2525. SA2 NXTENT
  2526. SX7 X2+B2
  2527. SA7 A2 INCREMENT NEXT ENTRY LOCATION
  2528. BLT5 SA5 X2
  2529. SX6 B1
  2530. IX7 X6+X5 INCREMENT FILE COUNT
  2531. SA7 A5
  2532. EQ BLT2 RETURN FOR NEXT RECORD
  2533.  
  2534. BLT6 SA5 NXTENT
  2535. SX6 B0
  2536. SA6 X5
  2537. SA6 A6+B1 ZERO LAST *TLOG* ENTRY - END
  2538. SX1 B0
  2539. EQ BLTX EXIT NORMAL
  2540.  
  2541. BLT7 ERROR BLTB,,,BLTX,,E FILE NAME MISMATCH
  2542.  
  2543. BLT8 ERROR BLTC,,,BLTX,,E ARF HEADER ERROR
  2544.  
  2545. BLT9 ERROR BLTA,,,BLTX,,E LOG ENTRY TABLE OVERFLOW
  2546.  
  2547. BLTA DATA 20H0 *****
  2548. DATA C*ARF ENTRY TABLE OVERFLOW.*
  2549. BLTAL EQU *-BLTA
  2550.  
  2551. BLTB DATA 20H0 *****
  2552. DATA C*FILE NAME MISMATCH ON TAPE HEADER RECORD.*
  2553. BLTBL EQU *-BLTB
  2554.  
  2555. BLTC DATA 20H0 *****
  2556. DATA C*ARF HEADER ERROR.*
  2557. BLTCL EQU *-BLTC
  2558.  
  2559. BRT SPACE 4,25
  2560. ** BRT - BUILD RECOVERY TABELS.
  2561. *
  2562. * THIS SUBROUTINE BUILDS TWO TABLES. A TABLE OF NAMES
  2563. * THAT ARE TARGETED FOR RECOVERY, AND THE IGNORE TABLE
  2564. * *TTIG*. A SCAN OF ALL *ARF-S* IN THIS SESSION IS MADE FOR
  2565. * ALL NON-COMITTED FILES. THE *TTIG* TABLE IS BUILT BY
  2566. * INCLUDING AN ENTRY FOR EVERY NON-COMITTED TASK
  2567. * SEQUENCE NUMBER.
  2568. *
  2569. * ENTRY (BRFFLG) .LT. 0 IF *BRF* RECOVERY.
  2570. * .GE. 0 IF *ARF* RECOVERY.
  2571. * (X7) = DATA BASE NAME IF ARF RECOVERY.
  2572. *
  2573. * EXIT (X1) = 0 IF NO ERRORS
  2574. *
  2575. * USES X - ALL.
  2576. * A - 1, 2, 3, 5, 6, 7.
  2577. * B - 2, 3, 4, 5, 6, 7.
  2578. *
  2579. * CALLS ACF, FER, GNR, RRE, RTF.
  2580. *
  2581. * MACROS CLOSEM, ERROR, READ, READW, RETURN,
  2582. * REWIND, RMGET.
  2583.  
  2584.  
  2585. BRT SUBR ENTRY/EXIT
  2586. MX6 1
  2587. SA6 FTAB INITIALIZE TABLE SEARCH
  2588. SX6 TREC
  2589. SA6 PREC FWA OF *TREC* TABLE
  2590. MX6 0
  2591. SA6 HOLD3 INITIALIZE FLAG
  2592. SA6 EORCNT INITIALIZE EOR COUNT
  2593. SX6 B1
  2594. SA6 TAPERR INITIALIZE TAPE ERROR COUNT
  2595. SA1 BRFFLG
  2596. SX7 TVSN
  2597. SA7 IVSN INITIALIZE VSN POINTER
  2598. PL X1,BRT1 IF NOT BRF RECOVERY
  2599. SA2 DATE
  2600. NZ X2,BRT0.2 IF END DATE GIVEN
  2601. PDATE TEMP10
  2602. SA5 TEMP10
  2603. RJ UDT UNPACK DATE/TIME
  2604. BX2 X6
  2605. BRT0.2 SA3 TIME
  2606. NZ X3,BRT0.3 IF END TIME GIVEN
  2607. SA3 NTIME END TIME - 23.59.59
  2608. BRT0.3 RJ PDT PACK DATE/TIME
  2609. SA6 ENPDT SET END DATE/TIME
  2610. MX6 0
  2611. SA6 STPDT SET START DATE/TIME
  2612. SA2 FSTVSN
  2613. BX6 X2
  2614. SA6 TVSN
  2615. SA6 TREC
  2616. BRT1 SA1 IVSN
  2617. SA2 X1 CURRENT *VSN* CANDIDATE
  2618. MX0 36
  2619. BX2 X0*X2
  2620. SA3 PREC
  2621. SA4 X3+B1 NEXT *VSN* ENTRY IN *TREC* TABLE
  2622. SA5 HOLD3
  2623. ZR X5,BRT1.1 IF FIRST TIME THROUGH
  2624. IX1 X2-X4 COMPARE *VSN-S*
  2625. NZ X1,BRT1.30 IF *VSN-S* DO NOT MATCH
  2626. SX6 X3+B1
  2627. SA6 A3 SET TO NEXT *VSN*
  2628. MX6 0
  2629. SA6 EORCNT ZERO *EOR* COUNT
  2630. SX6 B1+
  2631. SA6 TAPERR INITIALIZE TAPE ERROR COUNT
  2632. BRT1.1 MX5 0
  2633. SX6 B1
  2634. SA6 HOLD3 RESET FIRST THROUGH FLAG
  2635. BX6 X5
  2636. SA6 TPMODE SAVE MODE
  2637. SB7 TP FET
  2638. SA6 HOLD GNR INITIAL
  2639. RJ RTF REQUEST TAPE FILE
  2640. NZ X1,BRTX IF ERROR
  2641. BRT1.2 REWIND TP,R
  2642. READ TP,R
  2643. READW TP,WBUF,WBUFL
  2644. ZR X1,BRT1.3 IF ERROR
  2645. PL X1,BRT1.4 IF NO ERROR
  2646. BRT1.3 RJ RRE READ RECOVERY ERROR
  2647. NZ X1,UPD14 IF ERROR
  2648. EQ BRT1.2 CONTINUE
  2649.  
  2650. BRT1.30 MX5 0 READ MODE
  2651. SB7 TP
  2652. RJ RTF REQUEST TAPE FILE
  2653. NZ X1,BRTX IF ERROR
  2654. READEI TP INITIAL READ FOR NEW TAPE
  2655.  
  2656. BRT1.4 SA2 EORCNT
  2657. SX6 X2+B1
  2658. SA6 A2 INCREMENT EOR COUNT
  2659. BRT1.5 SX4 TP SET FET ADDRESS
  2660. RJ GNR GET RECORD - HEADER
  2661. NG X1,BRT1.6 IF NO HEADER
  2662. ZR X1,BRT1.7 IF NO ERROR
  2663. BRT1.6 RJ RRE READ RECOVERY ERROR
  2664. NZ X1,UPD14 IF ERROR
  2665. EQ BRT1.5 CONTINUE
  2666.  
  2667. BRT1.7 SA4 EORCNT
  2668. SX6 X4+B1
  2669. SA6 A4 INCREMENT EOR COUNT
  2670. SA3 WBUF+3
  2671. MX0 42
  2672. BX6 -X0*X3
  2673. SX7 X6-WBUFL
  2674. PL X7,BRT18 IF BUFFER OVERFLOW
  2675. SX6 TTBRF
  2676. SA6 IIBRF INITIALIZE SEARCH
  2677. BRT2 SX4 TP
  2678. RJ GNR GET DATA RECORD
  2679. ZR X1,BRT2.1 IF NO ERROR
  2680. PL X1,BRT0.1 IF ERROR
  2681. MX0 -2
  2682. BX1 -X0-X1
  2683. NZ X1,BRT10 IF *EOF* (THIS *ARF* DONE - CHECK NEXT)
  2684. BRT0.1 RJ RRE READ RECOVERY ERROR
  2685. NZ X1,UPD14 IF ERROR
  2686. EQ BRT2 CONTINUE
  2687.  
  2688. BRT2.1 SA2 EORCNT
  2689. SX6 X2+B1
  2690. SA6 A2 INCREMENT EOR COUNT
  2691. SA3 X4+2 GET TIME/DATE
  2692. SA2 STPDT
  2693. IX2 X3-X2
  2694. NG X2,BRT2 IF BEFORE BEGIN/TIME
  2695. SA2 ENPDT
  2696. IX2 X2-X3
  2697. NG X2,BRT2 IF AFTER END DATE/TIME
  2698. SB5 FTAB
  2699. SA1 X4+4
  2700. SA2 X4
  2701. LX2 59-18
  2702. NG X2,BRT4 IF *BEGIN*
  2703. LX2 18-59
  2704. MX0 42
  2705. BX2 -X0*X2
  2706. SB4 FTAB+FTABL
  2707. ZR X2,BRT7 IF *COMMIT*
  2708. SX5 X2-TRDF
  2709. ZR X5,BRT6.1 IF *DBFREE*
  2710. SX5 X2-DMCC
  2711. ZR X5,BRT6.1 IF *DBCEASE*
  2712. SX2 X2-XLQD
  2713. NZ X2,BRT2 IF NOT *BRF* DOWN STAMP
  2714. SX6 1
  2715. SA6 BRTH SET BRF DOWN FLAG
  2716. SA2 X4+4
  2717. SB4 TTBRF
  2718. SB7 TTBRF+TTBRFL
  2719. BRT3 SA5 B4
  2720. BX6 X2-X5
  2721. ZR X6,BRT2 IF ALREADY IN *TTBRF*
  2722. SB4 B4+1
  2723. NE B4,B7,BRT3 IF MORE ENTRIES
  2724. SA5 IIBRF
  2725. SB3 X5
  2726. EQ B3,B7,BRT21 IF *TTBRF* OVERFLOW
  2727. BX6 X2
  2728. SA6 X5 SAVE *BRF* NAME
  2729. SX6 X5+1
  2730. SA6 A5 INCREMENT *IIBRF*
  2731. EQ BRT2 LOOK AT NEXT RECORD
  2732.  
  2733. * FOR BEGIN STAMPS, CREATE AN ENTRY IN FTAB (IGNORE TABLE),
  2734. * AND FOR *COMMIT* STAMPS, DELETE THE CORRESPONDING
  2735. * *BEGIN* STAMP ENTRY.
  2736. * (X2) = NEGITIVE IF BEGIN.
  2737. * ZERO IF COMMIT
  2738. * (X5) = LENGTH OF RECORD.
  2739. * (X4) = FWA OF RECORD.
  2740.  
  2741. BRT4 SA1 B5
  2742. NG X1,BRT5 IF LOGICAL END OF TABLE
  2743. ZR X1,BRT6 IF A ZERO ENTRY FOUND
  2744. SB5 B5+2
  2745. EQ BRT4 GET NEXT ENTRY
  2746.  
  2747. BRT5 SB6 FTAB+FTABL
  2748. EQ B6,B5,BRT19 IF *FTAB* OVERFLOW
  2749. MX7 1
  2750. SA7 B5+2 MOVE LOGICAL END OF TABLE
  2751. BRT6 SA1 X4+4
  2752. MX0 42
  2753. BX6 X0*X1 ASSURE DEFAULT LOAD FORMAT
  2754. SA6 B5 SAVE FN
  2755. SA1 X4
  2756. MX0 24
  2757. BX6 X0*X1
  2758. SA1 X4+B1 GET BEGIN ID
  2759. MX0 30
  2760. BX1 -X0*X1
  2761. BX6 X6+X1 INSERT BID IN FTAB ENTRY
  2762. SA6 A6+B1 SAVE TS AND BEGIN IDENTIFIER
  2763. EQ BRT2 GET NEXT RECORD
  2764.  
  2765. * PROCESS COMMIT, DBFREE, AND CEASE.
  2766. * DELETE ENTRY IN IGNORE TABLE.
  2767.  
  2768. BRT6.1 SA1 BRFFLG
  2769. PL X1,BRT2 IF NOT BRF RECOVERY
  2770. SA3 BRTH
  2771. NZ X3,BRT2 IF BRF DOWN STAMP FOUND
  2772. BRT7 SA1 B5
  2773. NZ X1,BRT9 IF NOT AN EMPTY RECORD
  2774. BRT8 SB5 B5+2
  2775. EQ BRT7 TRY NEXT
  2776.  
  2777. BRT8.1 SB5 FTAB INITIALIZE *FTAB* POINTER
  2778. BRT8.2 SA3 B5
  2779. ZR X3,BRT8.3 IF AN EMPTY ENTRY
  2780. EQ B5,B4,BRT19 IF *FTAB* OVERFLOW
  2781. SB5 B5+2 INCREMENT FTAB POINTER
  2782. EQ BRT8.2
  2783.  
  2784. BRT8.3 SA5 X4+4 GET TRANSACTION NAME
  2785. MX0 42
  2786. BX6 X0*X1
  2787. SA6 B5 INSERT NAME INTO FTAB TABLE
  2788. SA5 X4
  2789. MX0 24
  2790. BX5 X0*X5
  2791. SA2 X4+1
  2792. MX0 30
  2793. BX2 X0*X2
  2794. LX2 30
  2795. BX6 X5+X2
  2796. SA6 B5+B1
  2797. EQ BRT2 LOOK AT NEXT RECORD
  2798.  
  2799. BRT9 NG X1,BRT8.1 IF END OF TABLE
  2800. SA5 X4
  2801. MX0 24
  2802. BX5 X0*X5
  2803. SA3 X4+1
  2804. MX0 30
  2805. BX3 X0*X3 GET BEGIN ID
  2806. LX3 30
  2807. BX5 X5+X3
  2808. SA1 B5+B1
  2809. BX6 X5-X1
  2810. NZ X6,BRT8 IF TS AND BEGIN ID DO NOT MATCH
  2811. SA6 B5 ZERO ENTRY
  2812. EQ BRT2 RETURN FOR NEXT RECORD
  2813.  
  2814. * PROCESS NEXT AFTER IMAGE RECOVERY FILE.
  2815.  
  2816. BRT10 RETURN TP,R
  2817. SA1 BRFFLG
  2818. PL X1,BRT10.1 IF NOT BRF RECOVERY
  2819. SA2 TVSN
  2820. MX0 36
  2821. BX6 X0*X2
  2822. LX6 36
  2823. SA1 FILLER
  2824. BX6 X6+X1
  2825. SA6 EVSN SET KEY
  2826. RJ ACF ATTACH DIRECTORY
  2827. OPENM DIRR
  2828. RMGET DIRR,XXBUF,0,,EVSN
  2829. RJ FER CHECK FIT ERROR
  2830. NZ X1,BRT16 IF ERROR
  2831. SA2 XXBUF+2
  2832. ZR X2,BRT11 IF NO MORE ARF-S CONTINUATION TAPES
  2833. BX6 X2
  2834. SX7 TVSN
  2835. SA6 TVSN
  2836. SA7 IVSN
  2837. EQ BRT1 CONTINUE
  2838.  
  2839. BRT10.1 SA2 IVSN
  2840. SA1 X2
  2841. NZ X1,BRT1 IF MORE VSN-S
  2842. * TABLE *FTAB* BUILT. NOW BUILD IGNORE TABLE *TTIG*.
  2843.  
  2844. BRT11 SB2 TTIG
  2845. SB3 FTAB
  2846. BRT11.1 SA3 B2
  2847. ZR X3,BRT12 CONTINUE
  2848. SB2 B2+2
  2849. EQ BRT11.1 CHECK NEXT ENTRY
  2850.  
  2851. BRT12 SA1 B3
  2852. NG X1,BRT15 IF NO MORE TS
  2853. NZ X1,BRT14 IF LEGAL TS
  2854. BRT13 SB3 B3+2
  2855. EQ BRT12 GET NEXT ENTRY
  2856.  
  2857. BRT14 SB4 TTIG+TTIGL
  2858. EQ B4,B2,BRT20 IF *TTIG* OVERFLOW
  2859. SA1 A1+B1 GET TS FROM *FTAB*
  2860. SX7 2RTS
  2861. MX0 24
  2862. BX0 X0*X1
  2863. BX6 X7+X0
  2864. SA6 B2 ENTER *TTIG*
  2865. MX0 30
  2866. BX6 -X0*X1
  2867. SA6 A6+B1 SAVE BEGIN ID IN *TTIG*
  2868. SB2 B2+2
  2869. EQ BRT13 GET NEXT ENTRY
  2870.  
  2871. BRT15 SX7 B0
  2872. SA7 B2 END TABLE *TTIG*
  2873. SA1 IIBRF
  2874. SA7 X1 END TABLE *TTBRF*
  2875. CLOSEM DIRR,U
  2876. SX1 B0
  2877. EQ BRTX EXIT NORMAL
  2878.  
  2879. BRTA BSSZ 2 KEY FOR DB HEADER
  2880.  
  2881. BRT16 ERROR BRTB,,,BRTX,,E ERROR IN BUILDING RECOVERY TABLES
  2882.  
  2883. BRT17 ERROR BLTC,,,BRTX,,E ARF HEADER ERROR
  2884.  
  2885. BRT18 ERROR BRTD,,,BRTX,,E DATA BLOCK BUFFER OVERFLOW
  2886.  
  2887. BRT19 ERROR BRTE,,,BRTX,,E INTERMEDIATE IGNORE TABLE OVERFLOW
  2888.  
  2889. BRT20 ERROR BRTF,,,BRTX,,E IGNORE TABLE OVERFLOW
  2890.  
  2891. BRT21 ERROR BRTG,,,BRTX,,E DOWNED BRF TABLE OVERFLOW
  2892.  
  2893. BRT22 ERROR UPDC,,,BRTX,,E DMREC TAPE LABEL ERROR
  2894.  
  2895. BRTB DATA 20H0 *****
  2896. DATA C*ERROR IN BUILDING RECOVERY TABLES.*
  2897. BRTBL EQU *-BRTB
  2898.  
  2899. BRTD DATA 20H0 *****
  2900. DATA C*DATA BLOCK BUFFER OVERFLOW.*
  2901. BRTDL EQU *-BRTD
  2902.  
  2903. BRTE DATA 20H0 *****
  2904. DATA C*INTERMEDIATE IGNORE TABLE OVERFLOW.*
  2905. BRTEL EQU *-BRTE
  2906.  
  2907. BRTF DATA 20H0 *****
  2908. DATA C*IGNORE TABLE OVERFLOW.*
  2909. BRTFL EQU *-BRTF
  2910.  
  2911. BRTG DATA 20H0 *****
  2912. DATA C*DOWNED BRF TABLE OVERFLOW.*
  2913. BRTGL EQU *-BRTG
  2914. BRTH BSSZ 1 BRF FLAG
  2915. BRTI BSSZ 1 BRF CEASE FLAG
  2916. BRTJ BSSZ 1 NEXT ARF DUMP TAPE
  2917. BSB SPACE 4,10
  2918. ** BSB - BLANK FILL STRING BUFFER.
  2919. *
  2920. * ENTRY NONE.
  2921. *
  2922. * EXIT (OLWS) = BLANK FILLED.
  2923. *
  2924. * USES X - 7.
  2925. * A - 7.
  2926. * B - 6, 7.
  2927.  
  2928.  
  2929. BSB SUBR ENTRY/EXIT
  2930. SX7 1R
  2931. SB7 OLWS+OLWSL
  2932. SB6 OLWS
  2933. BSB1 SA7 B6
  2934. SB6 B6+B1
  2935. NE B6,B7,BSB1 IF NOT BLANK FILLED
  2936. EQ BSBX RETURN
  2937. BVT SPACE 4,25
  2938. ** BVT - BUILD VSN TABLE.
  2939. *
  2940. * *BVT* WILL BUILD A TABLE OF *AFTER IMAGE* LOG DUMP TAPES
  2941. * VSN-S THAT CONTAIN ENTRIES NECESSARY FOR THE GIVEN
  2942. * DATE/TIME WINDOW.
  2943. *
  2944. * ENTRY (DATE) = DIRECTIVE BEGIN DATE.
  2945. * (TIME) = DIRECTIVE BEGIN TIME.
  2946. * (DATE1) = DIRECTIVE END DATE.
  2947. * (TIME1) = DIRECTIVE END TIME.
  2948. *
  2949. * EXIT TABLE TVSN BUILT.
  2950. * (X1) = 0 IF NO ERRORS
  2951. * (STPDT) = START PACKED DATE/TIME
  2952. * (ENPDT) = END PACKED DATE/TIME
  2953. *
  2954. * USES X - 0, 1, 2, 3, 4, 5, 6.
  2955. * A - 2, 3, 4, 5, 6, 7.
  2956. *
  2957. * CALLS FER, PDT, UDT.
  2958. *
  2959. * MACROS ERROR, FETCH, GETN, MOVE, PDATE, RMGET, STORE.
  2960.  
  2961.  
  2962. BVT SUBR ENTRY/EXIT
  2963. STORE DIRR,MKL=10
  2964. SA3 XXPFN
  2965. SX2 3RBBB
  2966. BX6 X2+X3
  2967. SA6 TEMPO SET KEY
  2968. RMGET DIRR,XXBUF,0,,TEMPO GET FIRST LOG DUMP ENTRY
  2969. RJ FER CHECK FIT ERROR
  2970. NZ X1,BVT18 IF ERROR
  2971. SA3 TVSN
  2972. ZR X3,BVT4 IF NO VSN GIVEN
  2973. EQ BVT2 CHECK FIRST DB DUMP ENTRY
  2974.  
  2975. BVT1 GETN DIRR,XXBUF,,SKEY
  2976. FETCH DIRR,ES,X2
  2977. SX2 X2-100B
  2978. ZR X2,BVT19 IF ERROR
  2979. SA2 SKEY
  2980. SA3 TEMPO
  2981. BX2 X2-X3
  2982. NZ X2,BVT19 IF NO MORE ENTRIES (RECORD NOT FOUND)
  2983. BVT2 SA2 XXBUF+2
  2984. MX0 36
  2985. BX4 X0*X2
  2986. SA2 TVSN
  2987. BX6 X2-X4
  2988. NZ X6,BVT1 IF NOT A CORRECT VSN
  2989.  
  2990. * DUMP RECORD IN XXBUF - GET DATE/TIME. THIS DATE/TIME
  2991. * WILL BE USED FOR BEGIN WINDOW.
  2992.  
  2993. SA5 XXBUF+B1
  2994. BVT3 RJ UDT UNPACK D/T
  2995. SA6 STDT START DATE ( UNPACKED )
  2996. SA7 STTM START TIME ( UNPACKED )
  2997. EQ BVT5 CONTINUE WITH THESE STDT + STTM
  2998.  
  2999. BVT4 MOVE 6,XXBUF,YYBUF
  3000. GETN DIRR,XXBUF,,SKEY
  3001. RJ FER CHECK FIT ERROR
  3002. NZ X1,BVT18 IF ERROR
  3003. SA2 SKEY
  3004. SA3 TEMPO
  3005. BX3 X2-X3
  3006. ZR X3,BVT4 IF NOT DONE
  3007. SA5 YYBUF+B1
  3008. EQ BVT3 CONTINUE
  3009.  
  3010. BVT5 SA2 DATE DIRECTIVE DATE
  3011. ZR X2,BVT6 IF BEGIN DATE NOT GIVEN
  3012. BX6 X2
  3013. SA6 STDT NEW START DATE
  3014. SA2 TIME
  3015. NZ X2,BVT7 IF BEGIN DATE AND TIME GIVEN
  3016. SA2 BVTD USE BEGINNING OF DAY
  3017. EQ BVT7 CONTINUE
  3018. BVT6 SA2 TIME DIRECTIVE TIME
  3019. ZR X2,BVT8 IF BEGIN TIME NOT GIVEN
  3020. BVT7 BX6 X2
  3021. SA6 STTM NEW START TIME
  3022. BVT8 SA2 DATE1
  3023. ZR X2,BVT9 IF END DATE NOT GIVEN
  3024. BX6 X2
  3025. SA6 ENDT NEW END DATE
  3026. EQ BVT10 CHECK END TIME
  3027.  
  3028. BVT9 PDATE TEMP10
  3029. SA5 TEMP10
  3030. RJ UDT UNPACK D/T
  3031. SA6 ENDT END DATE - TODAY
  3032. BVT10 SA2 TIME1
  3033. ZR X2,BVT11 IF END TIME NOT GIVEN
  3034. BX6 X2
  3035. SA6 ENTM END TIME
  3036. EQ BVT12 CONTINUE
  3037.  
  3038. BVT11 SA2 NTIME
  3039. BX6 X2
  3040. SA6 ENTM END TIME - 23.59.59.
  3041.  
  3042. * CONVERT EXPANDED DATE/TIME TO PACKED FORMAT FOR
  3043. * EASE OF TAPE SELECTION.
  3044.  
  3045. BVT12 SA2 STDT
  3046. SA3 STTM
  3047. RJ PDT PACK DATE AND TIME
  3048. NZ X1,BVTX IF ERROR
  3049. SA6 STPDT START PACKED DATE/TIME
  3050. SA2 ENDT
  3051. SA3 ENTM
  3052. RJ PDT PACK DATE AND TIME
  3053. NZ X1,BVTX IF ERROR
  3054. SA6 ENPDT END PACKED DATE/TIME
  3055.  
  3056. * SEARCH FOR VSN-S WITHIN DATE/TIME WINDOW.
  3057.  
  3058. STORE DIRR,MKL=10
  3059. SA2 XXPFN
  3060. SA5 =3R 1
  3061. BX6 X2+X5
  3062. SA6 TEMPO
  3063. RMGET DIRR,XXBUF,0,,TEMPO
  3064. RJ FER CHECK FIT ERROR
  3065. NZ X1,BVT18 IF ERROR
  3066. STORE DIRR,MKL=20
  3067. BVT13 SA2 XXBUF+5 DATE/TIME OF LAST RECORD ON THIS *ARF*
  3068. SA4 STPDT
  3069. IX3 X2-X4
  3070. PL X3,BVT14 IF LAST RECORD AFTER START DATE/TIME
  3071. GETN DIRR,XXBUF,,SKEY
  3072. FETCH DIRR,ES,X2
  3073. SX2 X2-100B
  3074. ZR X2,BVT18 IF EOF
  3075. SA2 SKEY
  3076. SA3 TEMPO
  3077. BX2 X2-X3
  3078. ZR X2,BVT13 IF MORE ENTRIES TO SEARCH
  3079. EQ BVT18 ERROR
  3080. BVT14 SX6 TVSN INITIALIZE IVSN
  3081. SA6 IVSN
  3082. SX7 TREC
  3083. SA7 PREC INITIALIZE TREC POINTER
  3084. BVT15 SA4 ENPDT
  3085. SA5 XXBUF+1
  3086. IX3 X4-X5
  3087. NG X3,BVT15.1 IF FIRST RECORD AFTER END DATE/TIME
  3088. SX3 TVSN+TVSNL-1
  3089. SA4 IVSN
  3090. IX3 X3-X4
  3091. NG X3,BVT17 IF TVSN OVERFLOW
  3092. SA2 XXBUF+2
  3093. SA3 A2+2
  3094. SA1 PREC
  3095. BX7 X2
  3096. SA7 X1 ENTER VSN INTO TREC TABLE
  3097. SX7 X1+1
  3098. SA7 A1 INCREMENT PREC
  3099. BX6 X2+X3 VSN + NUMBER OF RECORDS
  3100. SA6 X4
  3101. SX6 X4+B1
  3102. SA6 A4 INCREMENT IVSN
  3103. BX6 X5
  3104. SA6 TKY2 SAVE PACKED DATE/TIME
  3105. SA4 TEMPO
  3106. BX7 X4
  3107. SA7 TKY1
  3108. SA7 BVTE
  3109. SA1 XXBUF+2
  3110. BVT15.0 RJ SVK SET VSN KEY
  3111. RMGET DIRR,WSAB,0,,VKY1 GET VSN ENTRY
  3112. RJ FER CHECK FIT ERROR
  3113. NZ X1,BVT19 IF ERROR
  3114. SA3 XXBUF+4
  3115. SA1 WSAB+2
  3116. ZR X1,BVT15.1 IF NO MORE CONTINUATION REELS
  3117. BX6 X3+X1
  3118. SA4 IVSN
  3119. SA6 X4 PLACE VSN INTO TVSN TABLE
  3120. SX6 X4+B1
  3121. SA6 A4 INCREMENT IVSN
  3122. EQ BVT15.0 GET NEXT ENTRY
  3123.  
  3124. BVT15.1 SA2 BVTE
  3125. ZR X2,BVT18 IF FIRST TIME THROUGH
  3126. REWIND DIRR,R
  3127. RMGET DIRR,XXBUF,0,,TKY1
  3128. RJ FER CHECK FIT ERROR
  3129. NZ X1,BVT19 IF ERROR
  3130. GETN DIRR,XXBUF,,SKEY
  3131. FETCH DIRR,ES,X2
  3132. SX2 X2-100B
  3133. ZR X2,BVT16 IF EOF
  3134. SA2 SKEY
  3135. SA3 TEMPO
  3136. BX2 X2-X3
  3137. ZR X2,BVT15 IF MORE ENTRIES
  3138. BVT16 SA2 IVSN
  3139. SX6 B0
  3140. SA6 X2 END LIST
  3141. SX1 B0
  3142. EQ BVTX RETURN NORMAL
  3143.  
  3144. BVT17 ERROR BVTC,,,BVTX,,E VSN TABLE OVERFLOW
  3145.  
  3146. BVT18 ERROR BVTA,,,BVTX,,E NO LOG DUMP ENTRIES
  3147.  
  3148. BVT19 ERROR BVTB,,,BVTX,,E NO DUMP RECORD
  3149.  
  3150. STDT BSS 1 START DATE
  3151. STTM BSS 1 START TIME
  3152. ENDT BSS 1 END TIME
  3153. ENTM BSS 1 END TIME
  3154. STPDT BSS 1 START DATE/TIME - PACKED
  3155. ENPDT BSS 1 END DATE/TIME - PACKED
  3156. TEMP10 BSS 1 TEMPORARY
  3157. NTIME VFD 60/6L235959
  3158.  
  3159. BVTA DATA 20H0 *****
  3160. DATA C*NO ARF DUMP ENTRIES IN DIRECTORY.*
  3161. BVTAL EQU *-BVTA
  3162.  
  3163. BVTB DATA 20H0 *****
  3164. DATA C*NO DUMP RECORD WITH SPECIFIED VSN.*
  3165. BVTBL EQU *-BVTB
  3166.  
  3167. BVTC DATA 20H0 *****
  3168. DATA C*VSN TABLE OVERFLOW.*
  3169. BVTCL EQU *-BVTC
  3170.  
  3171. BVTD VFD 36/6L000000,24/0
  3172. BVTE BSSZ 1 FIRST TIME THROUGH COUNTER
  3173. CER SPACE 4,15
  3174. ** CER - CHECK ERROR STATUS.
  3175. *
  3176. * *CER* EXAMINES THE ERROR STATUS IN A FET.
  3177. * IT CLEARS THE STATUS IN THE FET AND THEN RETURNS.
  3178. *
  3179. * ENTRY (X2) = FWA OF FET.
  3180. *
  3181. * EXIT (X1) = STATUS FROM FET.
  3182. *
  3183. * USES X - 1, 3, 7.
  3184. * A - 1, 7.
  3185.  
  3186.  
  3187. CER SUBR ENTRY/EXIT
  3188. MX7 42
  3189. SA1 X2
  3190. MX3 -4
  3191. BX7 X7*X1
  3192. AX1 10-0
  3193. BX1 -X3*X1 ERROR STATUS BIT
  3194. SX3 B1
  3195. IX7 X7+X3
  3196. SA7 A1 CLEAR ERROR STATUS BIT
  3197. EQ CERX RETURN
  3198. CFD SPACE 4,15
  3199. ** CFD - CHECK FOR DELETE.
  3200. *
  3201. * ENTRY (B6) = 0, IF FILE DUMP ENTRY.
  3202. * 1, IF *AFTER IMAGE* DUMP ENTRY.
  3203. * (DELF) = 0, IF CYCLE DELETE.
  3204. * 1, IF DATE/TIME DELETE.
  3205. * (WSAB) = ENTRY TO BE CHECKED.
  3206. *
  3207. * EXIT (X1) = 1, IF ENTRY IS TO BE DELETED.
  3208. *
  3209. * USES X - 1, 2, 3, 5, 6, 7.
  3210. * A - 1, 2, 3, 5, 6, 7.
  3211. * B - NONE.
  3212. *
  3213. * MACROS EDATE, ETIME.
  3214.  
  3215.  
  3216. CFD SUBR ENTRY/EXIT
  3217. EQ B6,B1,CFD2 IF AFTER IMAGE DUMP ENTRY
  3218. SA1 DELF DELETE FLAG
  3219. NZ X1,CFD2 IF DATE/TIME DELETE
  3220. SA1 CYCC CYCLE COUNT
  3221. SX6 X1+B1 INCREMENT COUNT
  3222. SA6 A1 REPLACE COUNT
  3223. SA2 CYCT NUMBER OF CYCLES
  3224. IX2 X2-X6
  3225. SX1 B1
  3226. ZR X2,CFD1 IF ENTRY TO BE RETAINED
  3227. NG X2,CFDX IF ENTRY IS TO BE DELETED
  3228. CFD1 SA1 WSAB+1 PACKED DATE/TIME
  3229. BX7 X1
  3230. SA7 LDATE SAVE LAST CYCLE DATE/TIME
  3231. MX1 0
  3232. EQ CFDX RETURN
  3233.  
  3234. CFD2 SA5 WSAB+1 PACKED DATE/TIME
  3235. ETIME X5 UNPACK TIME
  3236. SA6 CFDA SAVE TIME
  3237. AX5 18
  3238. EDATE X5 UNPACK DATE
  3239. MX1 0
  3240. SA2 DATE DATE PARAMETER
  3241. IX3 X2-X6
  3242. NG X3,CFDX IF ENTRY DOES NOT QUALIFY
  3243. NZ X3,CFD3 IF DATES NOT EQUAL
  3244. SA2 TIME TIME PARAMETER
  3245. SA3 CFDA SAVED TIME
  3246. IX3 X2-X3
  3247. NG X3,CFDX IF ENTRY DOES NOT QUALIFY
  3248. CFD3 SX1 B1
  3249. EQ CFDX RETURN
  3250.  
  3251. CFDA BSSZ 1 SAVE CELL FOR TIME
  3252. CND SPACE 4,20
  3253. ** CND - CHECK NEXT DIRECTIVE.
  3254. *
  3255. * *CND* CHECKS THE INPUT CHARACTER STRING BUFFER FOR
  3256. * THE SPECIFIED DIRECTIVE.
  3257. *
  3258. * ENTRY DIR = FWA OF BUFFER.
  3259. * (X4) = 3RDA* (*ADD DIRECTIVE)
  3260. * 3RYC* (*CYCLE DIRECTIVE)
  3261. * 3RED* (*DELETE DIRECTIVE)
  3262. * 3RGI* (*IGNORE DIRECTIVE)
  3263. *
  3264. * EXIT (X1) = 0, IF DIRECTIVE FOUND.
  3265. *
  3266. * USES X - 0, 1, 3, 4, 5.
  3267. * A - 3.
  3268. * B - 2, 3.
  3269.  
  3270.  
  3271. CND2 SX1 B0
  3272. CND SUBR ENTRY/EXIT
  3273. SB2 3
  3274. MX0 54
  3275. SB3 B0-B1
  3276. LX4 6
  3277. CND1 SB3 B3+B1
  3278. EQ B2,B3,CND2 IF END OF SEARCH
  3279. SA3 DIR+B3 NEXT WORD OF BUFFER
  3280. AX4 6 SHIFT FOR NEXT CHARACTER
  3281. BX5 -X0*X4
  3282. BX5 X3-X5
  3283. ZR X5,CND1 IF STILL OK
  3284. SX1 B1
  3285. EQ CNDX RETURN - NO DIRECTIVE FOUND
  3286. CRT SPACE 4,30
  3287. ** CRT - CREATE LOG FILES.
  3288. *
  3289. * THIS ROUTINE CREATES QUICK (BEFORE IMAGE) OR
  3290. * LONG (AFTER IMAGE) RECOVERY FILES WHICH ARE USED
  3291. * BY *TAF/CRM* RECOVERY.
  3292. *
  3293. * *CRT* WILL TEST IF LOCAL FILE WITH THE SAME NAME EXISTS.
  3294. * IF YES, IT IS THE USERS RESPONSIBILITY TO SAVE THE FILE.
  3295. * IF NO, *CRT* WILL TRY TO ATTACH THE DIRECT ACCESS FILE
  3296. * WITH THE SAME NAME. IF PFN EXISTS IT WILL BE OVERWRITTEN.
  3297. * OTHERWISE THE FILE WILL BE DEFINED.
  3298. *
  3299. * *CRT* USES PREALLOCATION ROUTINES FROM COMMON DECK *COMKARF*
  3300. * USED IN *AAMI* INITIALIZATION.
  3301. *
  3302. * ENTRY (X6) = OPERATION FLAG.
  3303. *
  3304. * EXIT TO REC9 - IF *BRF* RECOVERY.
  3305. * TO DMP10 - IF *ARF* DUMP.
  3306. * TO DMR3, OTHERWISE.
  3307. *
  3308. * USES X - ALL.
  3309. * A - 0, 1, 2, 3, 5, 6, 7.
  3310. * B - 1, 5, 6, 7.
  3311. *
  3312. * CALLS ARB, DXB, GFA, GXJ, SFN, SPR.
  3313. *
  3314. * MACROS ERROR, RETURN.
  3315.  
  3316.  
  3317. CRT BSS 0 ENTRY
  3318. SB1 1
  3319. RJ SPR SET PARAMETERS
  3320. SB5 B5-2 SET FOR ONE LFN ONLY TEST
  3321. NZ B5,CRT11 IF MORE THAN ONE LFN
  3322.  
  3323. * ENTRY FROM DMP OR *BRF* RECOVERY.
  3324.  
  3325. CRT1 SX6 CRMARFN USE DEFAULT LENGTH
  3326. SA5 LENGTH LENGTH PARAMETER
  3327. ZR X5,CRT2 IF LENGTH NOT SPECIFIED
  3328. SB7 B1
  3329. RJ DXB CONVERT PRU COUNT INTO BINARY
  3330. NZ X4,CRT16 IF ERROR
  3331.  
  3332. * ENTRY POINT FROM *DMP* (X6) = LENGTH IN PRU-S.
  3333.  
  3334. CRT2 SA6 LENGTH STORE BINARY VALUE
  3335. SA2 TDFN LFN FROM PARAMETER TABLE
  3336. MX0 42
  3337. BX6 X0*X2 EXTRACT LFN
  3338. SA6 CRTI SAVE FULL LFN
  3339. AX6 18 POSITION NN FIELD (ORDINAL)
  3340. MX0 -12
  3341. BX7 -X0*X6 EXTRACT NN FIELD (ORDINAL)
  3342. AX6 12
  3343. SA7 CRTJ SAVE NN FIELD RIGHT JUSTIFIED (ORDINAL)
  3344. MX0 -6
  3345. BX7 -X0*X6 EXTRACT *ARF* OR *BRF* FIELD
  3346. SA7 CRTK SAVE FILE TYPE RIGHT JUSTIFIED
  3347. AX6 6 POSITION DB FIELD
  3348. MX0 -12
  3349. BX5 -X0*X6 EXTRACT DB FIELD
  3350. AX6 12
  3351. SX4 2RZZ
  3352. BX4 X4-X6
  3353. NZ X4,CRT13 IF FILE NAME INCORRECT
  3354.  
  3355. * EXTRACT ALL REQUIRED PARAMETERS FROM *XXJ* FILE.
  3356.  
  3357. LX5 -12 POSITION DATA BASE IDENTIFIER
  3358. RJ GXJ PROCESS *XXJ* FILE
  3359. NZ X1,CRT8 IF ERRORS
  3360. SA2 CRTK FILE TYPE
  3361. SX3 1RB
  3362. BX3 X2-X3
  3363. ZR X3,CRT4 IF *BRF*
  3364. SX3 1RA
  3365. BX3 X2-X3
  3366. NZ X3,CRT13 IF NOT *ARF*
  3367. CRT3 SA2 CRTJ FILE ORDINAL (01 OR 02)
  3368. SX3 2R01
  3369. BX3 X2-X3
  3370. ZR X3,CRT5 IF FILE ORDINAL 01
  3371. SX3 2R02
  3372. BX2 X2-X3
  3373. NZ X2,CRT14 IF NOT FILE ORDINAL 02
  3374. EQ CRT5 FILE ORDINAL 02
  3375.  
  3376.  
  3377. * PRESET *TBRF* TABLE FET AND HEADER FIELDS
  3378.  
  3379. CRT4 SB6 B0 *BRF* BUFFER
  3380. RJ ARB ALLOCATE BUFFER SPACE
  3381. NZ X1,CRT15 IF NO SPACE FOR BUFFER
  3382. SA2 CRTI FILE NAME
  3383. SX3 B1
  3384. BX7 X2+X3 SET COMPLETION BIT
  3385. SA7 TQRF+TQFFW STORE FET+0 IN *TBRF* TABLE
  3386. SX3 CRMUPM NUMBER OF RECORDS PER SEGMENT
  3387. BX7 X2+X3
  3388. SA7 TQRF+TQFNW NAME AND REC/SEG IN FILE HEADER
  3389. SA1 XXBRF NUMBER OF *BRF-S* FROM XXJ FILE
  3390. BX6 X1
  3391. SB7 B1 DEFINE *BRF* PROCESS
  3392. SA6 A7+B1 STORE NUMBER OF *BRF* FILES
  3393. SA0 TQRF+TQFFW SET FET ADDRESS
  3394. SA5 TQRF+TQFNW SET FILE HEADER ADDRESS
  3395. EQ CRT6 ALLOCATE *BRF* FILE
  3396.  
  3397. * PRESET *TARF* TABLE FET AND FILE HEADER
  3398.  
  3399. CRT5 SB6 B1 *ARF* BUFFER
  3400. RJ ARB ALLOCATE BUFFER
  3401. NZ X1,CRT15 IF NO SPACE FOR BUFFER
  3402. SA2 CRTI FILE NAME
  3403. SX3 B1
  3404. BX7 X2+X3 SET COMPLETION BIT
  3405. SA7 TARF+TAFFW STORE FET+0 IN *TARF* TABLE
  3406. BX7 X2
  3407. SA7 TARF+TAFNW STORE NAME IN FILE HEADER
  3408. MX7 0
  3409. SA7 TARF+TADDW DUMP DATE AND TIME
  3410. SA0 TARF+TAFFW FWA OF FET
  3411. SA5 TARF+TAFNW FWA OF FILE HEADER
  3412. SB7 B0+ DEFINE *ARF* PROCESS
  3413.  
  3414. * FIND IF FILE LOCAL OR PERMANENT, OTHERWISE DEFINE IT
  3415.  
  3416. CRT6 RJ GFA GET FILE AND ALLOCATE IT
  3417. ZR X6,CRT7 IF FILE ALLOCATED
  3418. SX6 X6-6 DEFINE ERROR
  3419. NZ X6,CRT17 IF CIO ERROR
  3420. EQ CRT16 CAN NOT DEFINE FILE
  3421.  
  3422. CRT7 SA1 CRTI FILE NAME
  3423. RJ SFN BLANK FILL FILE NAME
  3424. SA6 CRTH+2
  3425. RETURN RECF,R
  3426. SA1 BRFFLG
  3427. PL X1,CRT9 IF NOT *BRF* RECOVERY
  3428. EQ REC9 RETURN FOR NEXT POSSIBLE *BRF*
  3429.  
  3430. CRT8 RETURN RECF
  3431. EQ DMR3 RETURN
  3432.  
  3433. CRT9 SA1 DMPFLG CHECK FOR *ARF* DUMP
  3434. NZ X1,CRT10 IF NOT *ARF* DUMP
  3435. EQ DMP10 CONTINUE WITH DUMP PROCESSING
  3436.  
  3437. CRT10 ERROR CRTH,,,DMR3 ISSUE FILE ALLOCATED MESSAGE
  3438.  
  3439. CRT11 ERROR DMRA,,,CRT8,,E ONLY ONE LFN ALLOWED
  3440.  
  3441. CRT13 ERROR CRTC,,,CRT8,,E INCORRECT FILE TYPE
  3442.  
  3443. CRT14 ERROR CRTD,,,CRT8,,E INCORRECT FILE ORDINAL
  3444.  
  3445. CRT15 ERROR CRTE,,,CRT8,,E NO SPACE FOR BUFFER
  3446.  
  3447. CRT16 ERROR CRTF,,,CRT8,,E DEFINE ERROR
  3448.  
  3449. CRT17 ERROR CRTG,,,CRT8,,E CIO ERROR
  3450.  
  3451.  
  3452. CRTC DATA 20H0 *****
  3453. DATA C*FILE TYPE NOT ARF OR BRF.*
  3454. CRTCL EQU *-CRTC
  3455.  
  3456. CRTD DATA 20H0 *****
  3457. DATA C*ARF ORDINAL MUST BE 01 OR 02.*
  3458. CRTDL EQU *-CRTD
  3459.  
  3460. CRTE DATA 20H0 *****
  3461. DATA C*NO SPACE FOR ARF/BRF BUFFER.*
  3462. CRTEL EQU *-CRTE
  3463.  
  3464. CRTF DATA 20H0 *****
  3465. DATA C*DEFINE ERROR ON FILE.*
  3466. CRTFL EQU *-CRTF
  3467.  
  3468. CRTG DATA 20H0 *****
  3469. DATA C*CRT - CIO ERROR.*
  3470. CRTGL EQU *-CRTG
  3471.  
  3472. CRTH DATA 20H0 *****
  3473. DATA C* ALLOCATED.*
  3474. CRTHL EQU *-CRTH
  3475.  
  3476. CRTI BSSZ 1 FILE NAME - ZZDBXNN
  3477. CRTJ BSSZ 1 NN FIELD
  3478. CRTK BSSZ 1 X FIELD
  3479.  
  3480.  
  3481. CTD SPACE 4,15
  3482. ** CTD - CHECK TIME AND DATE.
  3483. *
  3484. * ENTRY (DATE) = BEGIN DATE. YYMMDD.
  3485. * (TIME) = BEGIN TIME. HHMMSS.
  3486. * (DATE1) = END DATE.
  3487. * (TIME1) = END TIME.
  3488. *
  3489. * EXIT (X1) = 0, IF NO ERRORS.
  3490. * 1, IF INCORRECT FORMAT.
  3491. *
  3492. * USES X - 0, 1, 2, 3, 4, 5.
  3493. * A - 2.
  3494. * B - 6.
  3495. *
  3496. * CALLS DXB.
  3497.  
  3498.  
  3499. CTD6 MX1 0 NO ERROR RETURN
  3500.  
  3501. CTD SUBR ENTRY/EXIT
  3502. SB6 B0
  3503. SA2 DATE BEGIN DATE
  3504. CTD1 ZR X2,CTD2 IF DATE NOT GIVEN
  3505. MX0 12
  3506. BX5 X0*X2 YY
  3507. RJ DXB CONVERT TO BINARY
  3508. SX1 B1 ERROR RETURN
  3509. NZ X4,CTDX IF NOT NUMERIC
  3510. SA2 A2
  3511. MX0 12
  3512. LX2 12
  3513. BX5 X0*X2 MM
  3514. RJ DXB CONVERT TO BINARY
  3515. SX1 B1
  3516. NZ X4,CTDX IF NOT NUMERIC
  3517. ZR X6,CTDX IF OUT OF RANGE
  3518. SX3 12
  3519. IX4 X3-X6
  3520. NG X4,CTDX IF OUT RANGE
  3521. MX0 12
  3522. SA2 A2
  3523. LX2 24
  3524. BX5 X0*X2 DD
  3525. RJ DXB CONVERT TO BINARY
  3526. SX1 B1
  3527. NZ X4,CTDX IF NOT NUMERIC
  3528. ZR X6,CTDX IF OUT OF RANGE
  3529. SX3 31
  3530. IX4 X3-X6
  3531. NG X4,CTDX IF OUT OF RANGE
  3532. CTD2 EQ B6,B1,CTD3 IF BOTH DATES CHECKED
  3533. SA2 DATE1 END DATE
  3534. SB6 B6+B1
  3535. EQ CTD1 CHECK END DATE
  3536.  
  3537. CTD3 SA2 TIME BEGIN TIME
  3538. SB6 B0
  3539. CTD4 ZR X2,CTD5 IF TIME NOT GIVEN
  3540. MX0 12
  3541. BX5 X0*X2 HH
  3542. RJ DXB DISPLAY TO BINARY
  3543. SX1 B1
  3544. NZ X4,CTDX IF NOT NUMERIC
  3545. SX3 23
  3546. IX4 X3-X6
  3547. NG X4,CTDX IF OUT OF RANGE
  3548. SA2 A2
  3549. MX0 12
  3550. LX2 12
  3551. BX5 X0*X2 MM
  3552. RJ DXB DISPLAY TO BINARY
  3553. SX1 B1
  3554. NZ X4,CTDX IF NOT NUMERIC
  3555. SX3 59
  3556. IX4 X3-X6
  3557. NG X4,CTDX IF OUT OF RANGE
  3558. MX0 12
  3559. SA2 A2
  3560. LX2 24
  3561. BX5 X0*X2 SS
  3562. RJ DXB DISPLAY TO BINARY
  3563. SX1 B1
  3564. NZ X4,CTDX IF NOT NUMERIC
  3565. SX3 59
  3566. IX4 X3-X6
  3567. NG X4,CTDX IF OUT OF RANGE
  3568. CTD5 EQ B6,B1,CTD6 IF BOTH TIMES CHECKED
  3569. SB6 B6+B1
  3570. SA2 TIME1 END TIME
  3571. EQ CTD4 CHECK TIME
  3572. CTW SPACE 4,10
  3573. ** CTW - CHARACTERS TO WORDS.
  3574. *
  3575. * ENTRY (X7) = LENGTH IN CHARACTERS.
  3576. *
  3577. * EXIT (X1) = LENGTH IN WORDS.
  3578. * (X6) = REMAINDER IN CHARACTERS.
  3579. *
  3580. * USES X - 1, 4, 5, 6.
  3581. * B - 7.
  3582.  
  3583.  
  3584. CTW SUBR ENTRY/EXIT
  3585. SX6 10
  3586. PX4 X7
  3587. PX5 X6
  3588. NX6 X5
  3589. FX4 X4/X6
  3590. UX6 B7,X4
  3591. LX1 B7,X6
  3592. PX6 X1 COMPUTE REMAINDER
  3593. DX4 X6*X5
  3594. UX6 X4
  3595. IX6 X7-X6 REMAINDER
  3596. ZR X6,CTWX IF REMAINDER .EQ. ZERO - RETURN
  3597. SX1 X1+1
  3598. EQ CTWX RETURN
  3599. CVN SPACE 4,10
  3600. ** CVN - CHECK VSN NUMBER.
  3601. *
  3602. * ENTRY (TVSN) = VSN NUMBER.
  3603. * (ADDF) = 0, IF DELETE ENTRY.
  3604. * 1, IF ADD ENTRY.
  3605. * (FITA) = FWA OF AUXILARY FIT TABLE.
  3606. *
  3607. * EXIT (X1) = 0, IF NO ERRORS.
  3608. * (X6) = COUNT OF ACTIVE FILES.
  3609. * (A0) = CORRECT FIT ADDRESS FOR PROCESS.
  3610. * (WSAB) = FWA OF VSN ENTRY.
  3611. *
  3612. * USES X - 0, 1, 2, 6.
  3613. * A - 0, 1, 2.
  3614. * B - NONE.
  3615. *
  3616. * CALLS SVK.
  3617. *
  3618. * MACROS ERROR, FETCH, RMGET.
  3619.  
  3620.  
  3621. CVN SUBR ENTRY/EXIT
  3622. SA1 ADDF ADD/DELETE FLAG
  3623. SA0 DIRR DIRECTORY FIT ADDRESS
  3624. ZR X1,CVN1 IF DELETE PROCESS
  3625. SA0 FITA AUXILARY FIT ADDRESS
  3626. CVN1 SA1 TVSN
  3627. RJ SVK SET VSN KEY
  3628. RMGET A0,WSAB,0,,VKY1 READ VSN ENTRY
  3629. FETCH A0,ES,X1 FIT ERROR STATUS
  3630. NZ X1,CVN2 IF VSN DOES NOT EXIST
  3631. SX1 B1
  3632. SA2 WSAB+5 FIRST VSN INDICATOR
  3633. ZR X2,CVN3 IF NOT FIRST VSN
  3634. SA2 WSAB+4 COUNT OF ACTIVE FILES
  3635. BX6 X2
  3636. MX1 0
  3637. EQ CVNX NORMAL RETURN
  3638.  
  3639. CVN2 ERROR CVNA,,,CVNX,,E VSN DOES NOT EXIST
  3640.  
  3641. CVN3 ERROR CVNB,,,CVNX,,E VSN NOT FIRST REEL
  3642.  
  3643. CVNA DATA 20H0 *****
  3644. DATA C*VSN DOES NOT EXIST.*
  3645. CVNAL EQU *-CVNA
  3646.  
  3647. CVNB DATA 20H0 *****
  3648. DATA C*VSN IS NOT FIRST REEL.*
  3649. CVNBL EQU *-CVNB
  3650. CWM SPACE 4,15
  3651. ** CWM - CHECK WRITE MODE.
  3652. *
  3653. * *CWM* CHECKS THE MODE INDICATOR IN THE *XXJ* FILE FOR
  3654. * WRITE PERMISSION TO THE FILE IN QUESTION.
  3655. *
  3656. * ENTRY (XXACC) = MODE INDICATOR.
  3657. *
  3658. * EXIT (X1) = 0 - IF NO ERROR.
  3659. *
  3660. * USES X - 1, 2.
  3661. * A - 2.
  3662. * B - NONE.
  3663.  
  3664.  
  3665. CWM SUBR ENTRY/EXIT
  3666. SA2 XXACC GET MODE
  3667. LX2 6
  3668. SX1 X2-1RM
  3669. ZR X1,CWMX IF MODIFY MODE - OK
  3670. SX1 X2-1RW
  3671. ZR X1,CWMX IF WRITE MODE - OK
  3672. ERROR CWM1,XXPFN,,CWMX,,E PF XXXXXXX - READ ONLY
  3673.  
  3674. CWM1 DATA 20H0 *****
  3675. DATA C*PF XXXXXXX - READ ONLY.*
  3676. CWM1L EQU *-CWM1
  3677. CYC SPACE 4,25
  3678. ** CYC - CHANGE CYCLE NUMBER.
  3679. *
  3680. * *CYC* CHANGES THE NUMBER OF CYCLES TO RETAIN IN THE BACKUP
  3681. * DIRECTORY HEADER OR IN THE FILE HEADER, DEPENDING ON
  3682. * PARAMETERS SPECIFIED ON THE EDIT DIRECTIVE. IF DATA
  3683. * BASE NAME IS SPECIFIED THE DIRECTORY HEADER IS MODIFIED,
  3684. * OTHERWISE FILE HEADERS FOR SELECTIVE FILES ARE CHANGED.
  3685. *
  3686. * ENTRY (CYCL) = CYCLE NUMBER.
  3687. * (LFNC) = 0, IF DIRECTORY HEADER IS MODIFIED.
  3688. * N, IF SELECTIVE FILE HEADERS ARE MODIFIED.
  3689. *
  3690. * EXIT (X1) = 0, IF NO ERRORS.
  3691. *
  3692. * USES X - 1, 2, 5, 6, 7.
  3693. * A - 1, 5, 6, 7.
  3694. * B - NONE.
  3695. *
  3696. * CALLS DXB, EFD, FER.
  3697. *
  3698. * MACROS GETN, RMREP, REWINDM.
  3699.  
  3700.  
  3701. CYC3 BX6 X6-X6
  3702. SA6 CYCF CLEAR CYCLE CHANGE FLAG
  3703.  
  3704. CYC SUBR ENTRY/EXIT
  3705. SA5 CYCL CYCLE NUMBER
  3706. RJ DXB CONVERT DISPLAY TO BINARY
  3707. BX2 X6
  3708. SA6 CYCL REPLACE WITH BINARY VALUE
  3709. SX1 B1
  3710. ZR X2,CYC2 IF NUMBER EQUAL ZERO
  3711. SX1 CYCM MAXIMUM CYCLE NUMBER
  3712. IX2 X1-X2
  3713. NG X2,CYC2 IF INCORRECT CYCLE NUMBER
  3714. SX7 -2
  3715. SA7 LFNP PRESET FILE NAME POINTER
  3716. SX6 B1
  3717. SA6 CYCF CYCLE CHANGE FLAG
  3718. SA1 LFNC NUMBER OF FILES
  3719. NZ X1,CYC1 IF FILE HEADERS ARE MODIFIED
  3720. REWINDM DIRR
  3721. GETN DIRR,WSAB,,TKY1 READ DIRECTORY HEADER
  3722. RJ FER FIT ERROR STATUS
  3723. NZ X1,CYC3 IF CRM ERROR
  3724. SA1 CYCL NEW CYCLE NUMBER
  3725. BX6 X1
  3726. SA6 WSAB+5 REPLACE CYCLE NUMBER
  3727. RMREP DIRR,WSAB,WSAL,,TKY1 REPLACE DIRECTORY HEADER
  3728. RJ FER FIT ERROR STATUS
  3729. CYC0 GETN DIRR,WSAB,,TKY1 GET NEXT FILE HEADER
  3730. RJ FER FIT ERROR STATUS
  3731. NZ X1,CYC3 IF CRM ERROR
  3732. SX2 3RAAA FILE HEADER TYPE
  3733. SA3 TKY1 NEXT FILE HEADER ENTRY
  3734. MX0 -18
  3735. BX1 -X0*X3
  3736. BX2 X2-X1 COMPARE TYPES
  3737. MX1 0 CLEAR ERROR RETURN FLAG
  3738. NZ X2,CYC3 IF ALL DONE PROCESING FILE HEADERS
  3739. RJ EFD EDIT FILE HEADER
  3740. NZ X1,CYC3 IF CRM ERROR
  3741. EQ CYC0 PROCESS NEXT FILE HEADER
  3742.  
  3743. CYC1 SA1 LFNP FILE POINTER IN *TDFS* TABLE
  3744. SX6 X1+2 INCREMENT POINTER
  3745. SA6 LFNP REPLACE POINTER
  3746. SA1 LFNC NUMBER OF FILES IN *TDFS* TABLE
  3747. LX1 1 NUMBER OF ENTRIES
  3748. IX2 X6-X1
  3749. MX1 0
  3750. ZR X2,CYC3 IF END OF TABLE
  3751. SA1 TDFS+X6 NEXT FILE FROM *TDFS* TABLE
  3752. BX6 X1
  3753. SA6 TKY1 SET KEY
  3754. RJ EFD EDIT FILE HEADER
  3755. NZ X1,CYC3 IF CRM ERROR
  3756. EQ CYC1 NEXT FILE
  3757.  
  3758. CYC2 ERROR CYCA,,,CYCX,,E CYCLE NUMBER IS OUTSIDE LIMITS
  3759.  
  3760. CYCA DATA 20H0 *****
  3761. DATA C*CYCLE NUMBER IS OUTSIDE LIMITS.*
  3762. CYCAL EQU *-CYCA
  3763. DBF SPACE 4,20
  3764. ** DBF - DUMP BLOCK FORMAT.
  3765. *
  3766. * DUMP FILE IN BLOCK FORMAT. IF END-OF-TAPE IS REACHED
  3767. * RETURN CURRENT ONE AND REQUEST NEXT.
  3768. *
  3769. * ENTRY (X4) = FWA OF FET.
  3770. *
  3771. * EXIT DATA FILE DUMPED IN BLOCK MODE.
  3772. * (X1) = 0 IF NO ERRORS.
  3773. *
  3774. * USES X - 0, 1, 2, 4, 6.
  3775. * A - 1, 4, 6.
  3776. * B - NONE.
  3777. *
  3778. * CALLS DER.
  3779. *
  3780. * MACROS ERROR, READ, READW, RECALL, REWIND, WRITEF,
  3781. * WRITER, WRITEW.
  3782.  
  3783.  
  3784. DBF SUBR ENTRY/EXIT
  3785. BX6 X4
  3786. SA6 HOLD SAVE REGISTER.
  3787. REWIND X4,R
  3788. SX6 TEOR TABLE OF EOR-S
  3789. SA6 PEOR INITIALIZE POINTER
  3790.  
  3791. DBF1 SA4 HOLD
  3792. DBF2 READ X4,R
  3793. DBF3 SA4 HOLD
  3794. READW X4,WBUF,WBUFL
  3795. ZR X1,DBF5 IF NO EOR/EOF
  3796. NG X1,DBF6 IF EOF/EOI
  3797.  
  3798. * EOR ENCOUNTERED.
  3799.  
  3800. WRITEW TP,WBUF,X1-WBUF
  3801. RJ DER DETECT END OF REEL
  3802. NG X1,DBF4 IF END OF TAPE
  3803. NZ X1,DBFX IF ERROR
  3804. DBF4 WRITER TP,R
  3805. SA2 EORCNT
  3806. SX6 X2+B1
  3807. SA6 A2 INCREMENT EOR COUNT
  3808. RJ DER DETECT END OF REEL
  3809. NG X1,DBF1 IF END OF TAPE
  3810. NZ X1,DBFX IF ERROR
  3811. EQ DBF1 GET NEXT RECORD
  3812.  
  3813. DBF5 WRITEW TP,WBUF,WBUFL
  3814. RJ DER DETECT END OF REEL
  3815. NG X1,DBF3 IF END OF TAPE
  3816. NZ X1,DBFX IF ERROR
  3817. EQ DBF3 GET NEXT BUFFER
  3818.  
  3819. DBF6 SA1 XXPFN
  3820. SX2 3REND
  3821. MX0 42
  3822. SA4 ACFA
  3823. BX4 X4-X1
  3824. BX4 X0*X4
  3825. ZR X4,DBF7 IF DIRECTORY FILE
  3826. SA4 DMPFLG
  3827. NZ X4,DBF7 IF NOT *ARF*
  3828. LX1 48 POSITION FILE NAME FOR *ARF*
  3829. DBF7 BX6 X1+X2
  3830. SA6 TEMPP TRAILER WORD
  3831. WRITEW TP,TEMPP,B1
  3832. RJ DER DETECT END OF REEL
  3833. NG X1,DBF8 IF END OF TAPE
  3834. NZ X1,DBFX IF ERROR
  3835. DBF8 WRITEF TP,R
  3836. SA2 EORCNT
  3837. SX6 X2+B1
  3838. SA6 A2 INCREMENT EOR COUNT
  3839. RJ DER DETECT END OF REEL
  3840. NG X1,DBF9 IF END OF TAPE
  3841. NZ X1,DBFX IF ERROR
  3842. DBF9 SX1 B0
  3843. EQ DBFX RETURN
  3844. DCK SPACE 4,15
  3845. ** DCK - DECOLLATE KEY.
  3846. *
  3847. * DECOLLATE PRIMARY KEY IN PLACE. ALL SYMBOLIC
  3848. * KEYS IN *IS* FILES MUST BE DECOLLATED.
  3849. *
  3850. * ENTRY (A1) = ADDRESS OF VECTOR TABLE.
  3851. *
  3852. * EXIT KEYS TRANSLATED TO ORIGINAL FORM.
  3853. * (X1) = 0 - IF NO ERRORS.
  3854. *
  3855. * USES X - ALL.
  3856. * A - 0, 1, 2, 3, 5, 7.
  3857. * B - 2, 3, 4, 5, 6, 7.
  3858.  
  3859.  
  3860. DCK SUBR ENTRY/EXIT
  3861. SA2 A1 FWA OF VECTOR TABLE
  3862. SA1 X2 FIRST PARAMETER
  3863. SA1 X1 GET SOURCE KEY
  3864. SA2 A2+B1 KEY POSITION
  3865. SA3 X2 BEGIN CHARACTER POSITION OF SOURCE KEY
  3866. IX6 X3+X3 BCP*2
  3867. LX7 B1,X6 BCP*4
  3868. IX5 X6+X7 BCP*6
  3869. SB3 X5
  3870. SA2 A2+B1 KEY SIZE
  3871. SA3 X2
  3872. SB7 X3 KEY LENGTH
  3873. ZR B7,DCKX IF ZERO CHARACTERS TO TRANSLATE
  3874. SA2 A2+B1 DECOLLATING TABLE ADDRESS
  3875. SA3 X2
  3876. SB4 X3 B4 IS ADDR OF TRANSLATION TABLE
  3877. SA3 DFIT
  3878. SA0 X3
  3879. MX6 0 CLEAR FOR TRANSLATED KEY
  3880. SB2 60 BIT COUNTER FOR OUTPUT WORD, 60,54,..,6,0
  3881. MX2 60-3
  3882. SB6 6 DECREMENTS B2
  3883. BX2 -X2 MASK, BITS 0-2
  3884. LX3 B1,X2 MASK, BITS 1-3
  3885. MX4 60-6
  3886. BX4 -X4 MASK, BITS 0-5
  3887. MX0 1 MASK, BIT 59
  3888. AX7 B3,X0
  3889. BX7 X7-X0
  3890. LX7 1 MASK FOR CHARS TO LEFT OF BCP OF KEY
  3891. BX6 X1*X7
  3892. LX6 B3,X6 RIGHT JUSTIFY SAVED CHARACTERS
  3893. LX1 B3,X1 LEFT JUSTIFY FIRST CHAR OF KEY
  3894. LX1 1 BIT 0 IS HIGH BIT OF FIRST CHAR OF KEY
  3895. DCK1 LX1 2 BITS 0-2= UPPER OCTAL DIGET OF NEXT CHAR
  3896. BX5 X2*X1
  3897. SA5 X5+B4 LOAD X-LATION TABLE WORD FROM TABLE + UPP
  3898. LX1 4 BITS 1-3 = LOWER OCTAL DIGIT OF CHAR
  3899. BX7 X3*X1
  3900. SB5 X7+B6 B5= 2*LOWER DIGIT+6
  3901. SB7 B7-B1 INCREMENT TOTAL CHAR COUNTER
  3902. LX6 6 ALIGN TRANSLATED KEY WORD FOR NEXT CHAR
  3903. IX7 X7+X7 4*LOWER DIGIT
  3904. SB2 B2-B6 BUMP BIT COUNTER
  3905. SB5 X7+B5 6*LOWER DIGIT+6. SHIFT CONSTANT
  3906. LX5 B5,X5 SHIFT TRANSLATED CHAR TO BITS 0-5
  3907. BX7 X4*X5 ISOLATE CHARACTER
  3908. EQ B7,DCK2 IF LAST CHARACTER IS TRANSLATED
  3909. BX6 X6+X7 ADD TRANSLATED CHARACTER TO OUTPUT WORD
  3910. NE B2,B3,DCK1 IF WORD NOT COMPLETELY TRANSLATED
  3911. SA6 A1 STORE TRANSLATED WORD
  3912. MX6 0 CLEAR FOR NEXT WORD OF TRANSLATED KEY
  3913. SA1 A1+B1 LOAD NEXT WORD TO BE TRANSLATED
  3914. SB2 60 RESET BIT COUNTER
  3915. SB3 B0 B3 IS NO LONGER BCP*6
  3916. LX1 1
  3917. EQ DCK1 BACK
  3918.  
  3919. DCK2 BX6 X6+X7 ADD LAST CHAR TO OUTPUT WORD
  3920. SB2 B2-B3
  3921. LX6 B2,X6 LEFT JUSTIFY TRANSLATED KEY IN OUTPUT WORD
  3922. AX7 B2,X0
  3923. IX7 X7-X0
  3924. LX7 1
  3925. LX7 B2,X7 MASK FOR CHAR RIGHT OF KEY IN LAST WORD
  3926. SA5 A1 LAST WORD OF KEY
  3927. BX7 X5*X7 MASK OFF CHAR SO THEY CAN BE RESTORED
  3928. BX6 X6+X7 ADD SAVED CHARS TO TRANSLATED KEY WORD
  3929. SA6 A1 STORE TRANSLATED KEY
  3930. SX1 B0
  3931. EQ DCKX RETURN
  3932. DCR SPACE 4,20
  3933. ** DCR - DECOMPRESS RECORD
  3934. *
  3935. * *DCR* DECOMPRESSES *CRM* RECORDS. THIS ROUTINE
  3936. * IS TAKEN, INTACT, FROM *CRM* (SEE *CRM CAPSULE CMPR$01*).
  3937. *
  3938. * ENTRY (A1) = ADDRESS OF PARAMETER BLOCK.
  3939. * (X1) = FIRST PARAMETER.
  3940. *
  3941. * EXIT RECORD EXPANDED.
  3942. *
  3943. * USES X - ALL.
  3944. * A - 1, 2, 3, 4, 5, 6.
  3945. * B - 1, 2, 3, 4, 5, 6, 7.
  3946. *
  3947. * MACROS ZIPPP, ZAPPP.
  3948.  
  3949.  
  3950. DCR SUBR ENTRY/EXIT
  3951. SB1 1
  3952. SA2 A1+B1 GET PARAMETERS
  3953. SA3 A2+B1
  3954. SA4 A3+B1
  3955. SA5 A4+B1
  3956. SA1 X1
  3957. SA4 X4
  3958. SB3 X4 CHARACTER POSITION
  3959. SA4 X1 FWA OF RECORD
  3960. SA1 X2
  3961. SB2 X1 LENGTH OF RECORD IN CHARACTERS
  3962. SA1 X3
  3963. BX7 X1 FWA OF KEY IN RECORD
  3964. SA1 X5
  3965. SB7 X1 LENGTH OF KEY IN CHARACTERS
  3966. SA1 A5+B1
  3967. SA2 A1+B1
  3968. SA3 A2+B1
  3969. SA1 X1
  3970. SB4 X1 FWA OF DESTINATION
  3971. SA1 X2
  3972. SB6 X1
  3973. BX6 X3
  3974. SA6 DCRB
  3975. SX6 B6 LENGTH OF DESTINATION AREA
  3976. SA6 X3
  3977. SB5 10
  3978. ZR B7,DCR1 IF KEY LENGTH IS ZERO
  3979. LX7 1 CALCULATE FWA OF KEY IN CHARACTERS
  3980. IX2 X7+X7
  3981. LX2 1
  3982. IX7 X7+X2
  3983. SX7 X7+B3 10*WORD+CHARACTER
  3984. SB7 X7+B7
  3985. DCR1 SA1 B4-B1
  3986. BX6 X1
  3987. SA6 A1
  3988. LT B6,B7,DCR10 IF DESTINATION AREA TOO SMALL
  3989. SX6 B0
  3990. SB4 B5
  3991. ZR B7,DCR4 IF NOT EMBEDDED KEY
  3992. DCR2 SB7 B7-B5 TRANSFER RECORD UP TO LWA OF KEY
  3993. BX6 X4
  3994. SB6 B6-B5
  3995. SB2 B2-B5
  3996. NG B7,DCR3 IF ENTIRE KEY TRANSFERED
  3997. SA6 A6+B1
  3998. SA4 A4+B1
  3999. EQ DCR2 CONTINUE TRANSFERING WORDS TO LWA OF KEY
  4000.  
  4001. * SET UP REGISTERS FOR EXPANSION.
  4002.  
  4003.  
  4004. DCR3 SB4 -B7
  4005. SB6 B6+B4
  4006. SB2 B2+B4
  4007. SX6 B0
  4008. SX1 B7+B7
  4009. SX1 X1+B7
  4010. LX1 1
  4011. SB3 X1+60
  4012. ZR B3,DCR4 IF TRANSFERED ENTIRE WORD
  4013. LX4 X4,B3
  4014. SB7 B3-B1
  4015. MX0 1
  4016. AX0 X0,B7
  4017. LX0 X0,B3
  4018. BX6 X0*X4 REMAINING CHARACTERS TO BE TRANSFERED
  4019. DCR4 SB3 B4 NUMBER OF CHARACTERS NOT YET TRANSFERED
  4020. MX0 -6
  4021.  
  4022. DCR5 ZR B2,DCR9 IF DONE EXPANSION
  4023. ZAPPP GET NEXT CHARACTER
  4024. SX1 X5-1R&lt; KEY CHARACTER (72B)
  4025. ZR X1,DCR6 IF KEY CHARACTER (72B) ENCOUNTERED
  4026. ZIPPP X5,DCR10
  4027. EQ DCR5 CONTINUE NEXT CHARACTER
  4028.  
  4029. DCR6 ZR B2,DCR10 IF DESTINATION AREA TOO SMALL
  4030. ZAPPP GET NEXT CHARACTER
  4031. SX1 60B
  4032. BX7 X1*X5
  4033. IX5 X5-X7
  4034. IX1 X1-X7
  4035. ZR X1,DCR7 IF TO EXPAND *>*
  4036. SX5 X5+2
  4037. DCR7 SB7 X5+B1
  4038. AX7 4
  4039. SA5 X7+DCRA
  4040. DCR8 ZIPPP X5,DCR10 ADD NEXT CHARACTER
  4041. SB7 B7-B1
  4042. NZ B7,DCR8 IF NOT DONE WITH CURRENT CHARACTER
  4043. EQ DCR5 CONTINUE EXPAND
  4044.  
  4045. DCR9 SX1 B4+B4 SET UP EXIT CONDITIONS
  4046. SX1 X1+B4
  4047. LX1 1
  4048. SB4 X1
  4049. LX6 X6,B4
  4050. SB5 B4-B1
  4051. MX0 1
  4052. AX0 B5,X0
  4053. LX0 B4,X0
  4054. SA1 A6+B1
  4055. BX1 X0*X1
  4056. BX6 X6+X1
  4057. SA6 A1
  4058. SA1 DCRB
  4059. SA2 X1
  4060. SX3 B6 NUMBER OF CHARACTERS TRANSFERED
  4061. IX6 X2-X3
  4062. SA6 A2
  4063. EQ DCRX RETURN
  4064.  
  4065. DCR10 MX6 1 RETURN ERROR STATUS
  4066. SA1 DCRB
  4067. SA6 X1
  4068. EQ DCRX RETURN
  4069.  
  4070. DCRA DATA 0
  4071. DATA 1R0
  4072. DATA 1R
  4073. DATA 1R&lt;
  4074.  
  4075. DCRB BSSZ 1 EIGHTH PARAMETER ADDRESS
  4076. DDF SPACE 4,25
  4077. ** DDF - DUMP DATA FILE.
  4078. *
  4079. * *DDF* DUMPS A FILE TO THE TAPES INDICATED
  4080. * IN TABLE TVSN.
  4081. *
  4082. * ENTRY DATA/INDEX OR LOG FILE ATTACHED.
  4083. * (IDFN) = INDEX TO TDFN.
  4084. * (IVSN) = INDEX TO TVSN.
  4085. * (X2) = PFN
  4086. * (XXIXN) = INDEX FILE NAME.
  4087. * = 0 IF NONE.
  4088. * (X4) = (XXMODE)
  4089. *
  4090. * EXIT DUMP FILE RECORDS CREATED IN TDFN.
  4091. * VSN RECORDS CREATED IN TVSN.
  4092. * (X1) = 0 IF NO ERRORS.
  4093. *
  4094. * USES X - 2, 3, 4, 6, 7.
  4095. * A - 2, 3, 4, 6, 7.
  4096. * B - 3.
  4097. *
  4098. * CALLS DBF, DRF, WFH.
  4099. *
  4100. * MACROS ERROR.
  4101.  
  4102.  
  4103. DDF SUBR ENTRY/EXIT
  4104. RJ WFH WRITE FILE HEADER
  4105. NZ X1,DDFX IF ERROR
  4106. SX4 DF
  4107. SA3 XXMODE GET MODE
  4108. ZR X3,DDF1 IF BLOCK DUMP
  4109. RJ DRF DUMP RECORD FORMAT
  4110. EQ DDF2 CHECK FOR ERROR
  4111.  
  4112. DDF1 RJ DBF DUMP BLOCK FORMAT
  4113. DDF2 NZ X1,DDFX IF ERROR
  4114. SA2 IDFN
  4115. SB3 X2
  4116. SA2 TDFN+B3
  4117. SA4 FORD
  4118. BX6 X2+X4
  4119. SA6 A2
  4120. SX6 X4+1
  4121. SA2 NFLS
  4122. SA6 A4
  4123. SX6 X2+B1
  4124. SA6 A2
  4125. SA2 XXIXN
  4126. ZR X2,DDFX IF NO INDEX FILE
  4127. BX6 X2
  4128. SA6 XXPFN SET FN FOR INDEX FILE TRAILER
  4129. SA4 XXMODE SET MODE
  4130. RJ WFH WRITE FILE HEADER
  4131. NZ X1,DDFX IF ERROR
  4132. SA2 XXMODE
  4133. SX4 IF SET INDEX FILE FET ADDRESS
  4134. ZR X2,DDF3 IF BLOCK DUMP
  4135. RJ DRF DUMP RECORD FORMAT
  4136. EQ DDF4 CHECK FOR ERROR
  4137.  
  4138. DDF3 RJ DBF DUMP BLOCK FORMAT
  4139. DDF4 NZ X1,DDFX IF ERROR
  4140. SA2 IDFN
  4141. SB3 X2+1
  4142. SA2 TDFN+B3
  4143. SA4 FORD
  4144. BX6 X2+X4
  4145. SA6 A2
  4146. SX6 X4+1
  4147. SA2 NFLS
  4148. SA6 A4 INCREMENT FILE ORDINAL
  4149. SX7 X2+1
  4150. SA7 A2 INCREMENT NUMBER OF EOF COUNT
  4151. EQ DDFX RETURN
  4152. DEL SPACE 4,25
  4153. ** DEL - DELETE ENTRIES IN BACKUP DIRECTORY.
  4154. *
  4155. * *DEL* DELETES A GIVEN VSN ENTRY AND ALL DUMP ENTRIES
  4156. * REFERENCING THAT VSN, OR DELETES ALL DUMP ENTRIES AND
  4157. * CORRESPONDING VSN ENTRIES BEFORE A GIVEN DATE/TIME.
  4158. *
  4159. * ENTRY (TVSN) = VSN NUMBER, IF VSN TYPE DELETE.
  4160. * (DATE) = YY/MM/DD.
  4161. * (TIME) = HH.MM.SS.
  4162. * (LFNC) = 0, IF ALL FILES.
  4163. * 1, IF SELECTIVE FILES.
  4164. *
  4165. * EXIT (X1) = 0, IF NO ERRORS.
  4166. *
  4167. * USES X - 0, 1, 6.
  4168. * A - 1, 6.
  4169. * B - NONE.
  4170. *
  4171. * CALLS EDI, FER, MDI, MDS, SDT.
  4172. *
  4173. * MACROS ERROR, GETN, REWINDM.
  4174.  
  4175.  
  4176. DEL SUBR ENTRY/EXIT
  4177. RJ SDT SET DATE AND TIME
  4178. SA1 LSTC DATE/TIME FLAG
  4179. ZR X1,DEL1 IF NO DATE/TIME GIVEN
  4180. SA1 TVSN VSN PARAMETER
  4181. NZ X1,DEL3 IF VSN ALSO GIVEN
  4182. SX6 B1
  4183. SA6 DELF DELETE FLAG - DATE/TIME DELETE
  4184. REWINDM DIRR
  4185. GETN DIRR,WSAB,,TKY1 DIRECTORY HEADER
  4186. GETN DIRR,WSAB,,TKY1 FIRST FILE HEADER
  4187. RJ FER FIT ERROR STATUS
  4188. NZ X1,DELX IF CRM ERROR
  4189. SA1 TKY1
  4190. MX0 42
  4191. BX6 X0*X1
  4192. SA6 A1 PRESET FIRST FILE NAME
  4193. RJ EDI EDIT DIRECTORY
  4194. EQ DELX RETURN
  4195.  
  4196. DEL1 SA1 TVSN
  4197. ZR X1,DEL4 IF NO VSN AND NO DATE/TIME
  4198. MX6 0
  4199. SA6 ADDF SET FLAG TO DELETE
  4200. SA1 LFNC
  4201. NZ X1,DEL2 IF SELECTIVE FILES
  4202. RJ MDI MODIFY DIRECTORY
  4203. EQ DELX RETURN
  4204. DEL2 RJ MDS MODIFY SELECTIVE FILES IN DIRECTORY
  4205. EQ DELX RETURN
  4206.  
  4207. DEL3 ERROR DMRA,,,DELX,,E BOTH VSN AND DATE/TIME SPECIFIED
  4208.  
  4209. DEL4 ERROR DELB,,,DELX,,E VSN OR DATE/TIME NOT SPECIFIED
  4210.  
  4211. DELB DATA 20H0 *****
  4212. DATA C*VSN OR DATE/TIME NOT SPECIFIED.*
  4213. DELBL EQU *-DELB
  4214. DER SPACE 4,20
  4215. ** DER - DETECT END-OF-REEL.
  4216. *
  4217. * DETECT END-OF-REEL. IF END-OF-REEL IS REACHED, CLOSE
  4218. * TAPE FILE AND REQUEST NEXT CANDIDATE FROM *TVSN*.
  4219. * ON WRITES, AN END-OF-TAPE BIT IS SET IN THE FET. ON
  4220. * READS, AN EOI STATUS IS CONSIDERED TO BE AN END-OF-TAPE.
  4221. *
  4222. * ENTRY (TP+0) = CONTAINS ERROR CODE.
  4223. *
  4224. * EXIT (X1) = 0, IF NO ERROR.
  4225. * POSITIVE, IF ERROR.
  4226. * NEGATIVE, IF END OF TAPE.
  4227. *
  4228. * USES X - 1, 2, 3, 4, 5, 6.
  4229. * A - 1, 2, 3, 4, 5, 6.
  4230. * B - 7.
  4231. *
  4232. * CALLS RTF.
  4233. *
  4234. * MACROS CLOSE.
  4235.  
  4236.  
  4237. DER SUBR ENTRY/EXIT
  4238. MX3 -4
  4239. SA1 TP
  4240. LX1 59-9
  4241. NG X1,DER1 IF EOI - END OF TAPE ASSUMED
  4242. BX1 -X3*X1
  4243. ZR X1,DERX IF NO ERROR
  4244. SX1 X1-1
  4245. NZ X1,DER2 IF ERROR OTHER THAN END OF TAPE
  4246.  
  4247. * END OF REEL.
  4248.  
  4249. DER1 CLOSE TP,UNLOAD,R
  4250. SA1 TP
  4251. MX2 42
  4252. BX1 X2*X1
  4253. SX3 B1
  4254. BX6 X3+X1
  4255. SA2 IVSN
  4256. SX2 X2-1 GET PREVEOUS TAPE ENTRY
  4257. SA6 A1 CLEAR EOI STATUS
  4258. SA3 X2
  4259. SA4 NFLS
  4260. BX6 X3+X4
  4261. SA6 A3
  4262. SX6 B0
  4263. SA6 A4
  4264. SB7 TP
  4265. SA5 TPMODE GET MODE INDICATOR
  4266. RJ RTF REQUEST NEXT TAPE
  4267. ZR X1,DER1.1 IF NO ERROR
  4268. SX1 2
  4269. EQ DERX RETURN ERROR
  4270.  
  4271. DER1.1 MX1 1 SET END OF TAPE
  4272. SA3 PEOR
  4273. MX0 36
  4274. SA4 IVSN
  4275. SA5 X4-2 VSN OF PREVIOUS TAPE
  4276. BX6 X0*X5
  4277. SA4 EORCNT COUNT OF EOR-S ON *ARF*
  4278. BX7 X6+X4 COMBINE VSN WITH EOR COUNT
  4279. SA7 X3 ENTER INTO *TEOR* TABLE
  4280. SX6 X3+B1
  4281. SA6 A3 INCREMENT *PEOR*
  4282. MX7 0
  4283. SA7 A4 ZERO OUT EORCNT
  4284. SA2 DMTAPE
  4285. SX6 X2+B1
  4286. SA6 DMTAPE INCREMENT TAPE COUNT
  4287. EQ DERX RETURN
  4288.  
  4289. DER2 ERROR DERA,,,DERX,,E READ/WRITE ERROR ON TAPE
  4290.  
  4291. DERA DATA 20H0 *****
  4292. DATA C*READ/WRITE ERROR ON TAPE.*
  4293. DERAL EQU *-DERA
  4294. DMP SPACE 4,25
  4295. ** DMP - DUMP DATA BASE FILES.
  4296. *
  4297. * *DMP* DUMPS DATA BASE FILES SPECIFIED TO TAPE. THE
  4298. * FORMAT OF THE DUMP CAN BE EXPLICITLY SPECIFIED OR
  4299. * IMPLIED BY THE MODE BY WHICH IT CAN BE ATTACHED.
  4300. *
  4301. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  4302. * (X2) = NEXT WORD IN BUFFER.
  4303. * (X6) = OPERATION FLAG (VALIDATES PARAMETERS).
  4304. * (B7) = LWA+1 OF STRING BUFFER.
  4305. *
  4306. * EXIT ALL INDICATED DATA FILES HAVE BEEN DUMPED IN
  4307. * THE PROPER FORMAT TO THE SPECIFIED VSN-S.
  4308. *
  4309. * USES X - ALL.
  4310. * A - 1, 2, 3 ,4, 6, 7.
  4311. * B - 3, 5, 7.
  4312. *
  4313. * CALLS ACF, ADF, BBE, BLT, CER, DBF, DDF, GXJ, RAF, RDF,
  4314. * RTE, RTF, RXJ, SPR, WFH.
  4315. *
  4316. * MACROS ATTACH, CLOSEM, ERROR, OPENM, READ, READW,
  4317. * RETURN, REWIND.
  4318.  
  4319.  
  4320. DMP BSS 0
  4321. RJ SPR STORE PARAMETERS
  4322. DMP1 SX6 B5
  4323. SA6 NUMF
  4324. DMP1.1 SX6 TVSN
  4325. SA6 IVSN
  4326. SX6 B0
  4327. SA6 IDFN
  4328. SA6 NFLS
  4329. SA6 FORD
  4330. SA6 FIRSTT
  4331. SA6 LASTT
  4332. SA6 EORCNT
  4333. SA6 TRIP1
  4334. SA6 NUMV INITIALIZE COUNT OF VSN-S USED
  4335. SA2 TDFN
  4336. MX0 12 GET DATA BASE NAME
  4337. BX5 X0*X2
  4338. ZR X5,DMP12 IF NO FILES TO DUMP
  4339. SA1 DMPA
  4340. SA3 TDFN
  4341. LX3 30
  4342. MX0 -30
  4343. BX6 -X0*X3
  4344. SA3 DMPB
  4345. BX6 X3*X6
  4346. BX7 X6-X1
  4347. SA7 DMPFLG
  4348. SB7 TP
  4349. BX6 X5
  4350. SA6 XXPFN SET DATA BASE FOR RTF CALL TO ACF
  4351. MX5 1 WRITE MODE REQUEST
  4352. BX6 X5
  4353. SA6 TPMODE SAVE MODE
  4354. RJ RTF REQUEST TAPE FILE
  4355. NZ X1,DMP11 IF ERROR
  4356. SA2 DMPFLG
  4357. NZ X2,DMP2 IF DATA FILE
  4358.  
  4359. * DUMP AFTER IMAGE RECOVERY FILE.
  4360.  
  4361. SA1 NUMF
  4362. SX6 X1-2
  4363. NZ X6,DMP13 IF MORE THAN ONE FILE SPECIFIED
  4364. SA4 EXCOPY
  4365. SX4 X4-1
  4366. NZ X4,DMP1.11 IF NOT FIRST COPY
  4367. SA2 IVSN
  4368. SA5 X2-1
  4369. BX7 X5
  4370. SA7 FSTVSN SAVE FIRST VSN
  4371. DMP1.11 SX6 B1 *ARF* DUMP
  4372. SA6 TTFLG SET FLAG
  4373. MX0 42
  4374. SA4 TDFN
  4375. BX1 X0*X4
  4376. BX6 X1
  4377. SA6 XXPFN2
  4378. LX6 12 XXPFN MUST HAVE DB IN FIRST 2 CHARACTERS
  4379. SA6 XXPFN
  4380. ATTACH ARF,X1,,,W LOG FILE IS UNDER USERS USER NAME
  4381. SX2 ARF SET FET ADDRESS
  4382. RJ CER CHECK ERROR
  4383. NZ X1,DMP15 IF ATTACH ERROR
  4384. SA2 XXPFN FN OF *ARF*
  4385. SX4 PTWR SET WRITE MODE
  4386. RJ WFH WRITE FILE HEADER
  4387. NZ X1,DMP11 IF ERROR
  4388. SX4 ARF SET FET ADDRESS
  4389. RJ DBF DUMP BLOCK FORMAT - *ARF*
  4390. NZ X1,DMP10.1 IF ERROR
  4391. SA3 PEOR
  4392. SA4 IVSN
  4393. SA5 X4-1 GET VSN OF PREVIOUS TAPE
  4394. MX0 36
  4395. BX6 X0*X5
  4396. SA4 EORCNT COUNT OF EOR-S ON ARF
  4397. BX7 X6+X4 COMBINE VSN WITH EOR COUNT
  4398. SA7 X3 ENTER INTO *TEOR* TABLE
  4399. SX6 X3+B1
  4400. SA6 A3 INCREMENT PEOR POINTER
  4401. MX7 0
  4402. SA7 A4 ZERO OUT EOR COUNT
  4403. REWIND ARF,R
  4404. SA2 XXPFN FN OF *ARF*
  4405. SX4 B0 SET BLOCK MODE
  4406. RJ BLT BUILD LOG TABLE
  4407. NZ X1,DMP11 IF ERROR
  4408.  
  4409. * RESET *ARF* HEADER FIELDS.
  4410.  
  4411. REWIND ARF,R
  4412. READ ARF,R
  4413. READW ARF,WBUF,WBUFL READ *ARF* HEADER
  4414. SA2 WBUF GET *ARF* STATUS
  4415. MX0 -18
  4416. BX3 -X0*X2
  4417. SX3 X3-3 CHECK FOR POSSIBLE ERROR
  4418. NZ X3,DMP1.2 IF NO *ARF* HEADER ERROR
  4419. SX6 B1+ SET ERROR FLAG
  4420. SA6 DMPF
  4421. DMP1.2 RETURN ARF,R
  4422. SA1 EXCOPY GET COPY NUMBER
  4423. SX2 X1-NUMARF
  4424. NZ X2,DMP10 IF NOT LAST *ARF* TO DUMP
  4425. SA1 WBUF+TAFLW-TAFNW GET LENGTH FROM OLD *ARF*
  4426. MX0 -TAFLN
  4427. LX1 TAFLN-1-TAFLS
  4428. BX6 -X0*X1
  4429. EQ CRT2 ALLOCATE *ARF* (RETURN TO DMP10)
  4430.  
  4431. * DUMP DATA BASE FILE.
  4432.  
  4433. DMP2 SA1 TDFN
  4434. MX0 12
  4435. BX5 X0*X1
  4436. RJ GXJ GET *XXJ* FILE
  4437. NZ X1,DMP11 IF ERROR
  4438. DMP3 SA2 IDFN
  4439. SB3 X2
  4440. MX0 42
  4441. SA3 TDFN+B3
  4442. ZR X3,DMP9 IF NO MORE FILES
  4443. BX5 X0*X3 GET FILE NAME
  4444. LX3 48
  4445. MX0 -6
  4446. BX7 -X0*X3
  4447. SX6 -1
  4448. ZR X7,DMP6 IF NULL
  4449. SX6 PTRM READ MODIFY MODE
  4450. SX3 X7-1RB
  4451. NZ X3,DMP6 IF NOT BLOCK
  4452. SX6 PTWR WRITE MODE
  4453. DMP6 SA6 XXMODE
  4454. RJ RXJ READ *XXJ* FILE
  4455. ZR X1,DMP7 IF FILE FOUND
  4456. PL X1,DMP11 IF FILE NOT FOUND
  4457. ZR X2,DMP11 IF NO ADDITIONIAL FILE
  4458. DMP7 RJ ADF ATTACH DATA FILE
  4459. NZ X1,DMP11 IF ERROR
  4460. SA3 IDFN
  4461. SB3 X3
  4462. SA3 TDFN+B3
  4463. SA4 XXMODE
  4464. LX4 12
  4465. MX0 54
  4466. LX0 12
  4467. BX6 X0*X3
  4468. BX6 X6+X4
  4469. SA6 A3 RESET MODE
  4470. SA2 XXIXN GET INDEX FILE NAME IF ANY
  4471. ZR X2,DMP8 IF NO INDEX FILE
  4472. BX6 X0*X2
  4473. BX6 X6+X4
  4474. SA6 A3+B1 SAVE INDEX FILE NAME AND MODE
  4475. DMP8 SA2 XXPFN
  4476. LX4 48 POSITION MODE
  4477. RJ DDF DUMP DATA FILE
  4478. NZ X1,DMP10.1 IF ERROR
  4479. RJ RDF RETURN DATA FILES
  4480. SA2 IDFN
  4481. SX6 X2+2
  4482. SA6 A2 GET NEXT PFN
  4483. EQ DMP3 CONTINUE FOR NEXT FILE
  4484.  
  4485. DMP9 SA2 IVSN
  4486. SA3 X2-1
  4487. SA4 NFLS
  4488. BX6 X4+X3
  4489. SA6 A3 STORE NUMBER OF FILES ( LAST )
  4490. DMP10 RJ ACF ATTACH ZZDBDIR FILE
  4491. RJ BBE BUILD BACK-UP ENTRIES
  4492. NZ X1,DMP11 IF ERRORS
  4493. CLOSEM DIRR,U
  4494. SX4 B0 SET BLOCK MODE
  4495. SA2 ACFA SET FILE NAME
  4496. RJ WFH WRITE FILE HEADER
  4497. NZ X1,DMP11 IF ERROR
  4498. RJ ACF ATTACH DIRECTORY
  4499. SA2 ACFA REPLACE DIRECTORY PFN FOR TRAILER
  4500. BX6 X2
  4501. SA6 XXPFN
  4502. SX4 ZZDBDIR SET FET ADDRESS
  4503. RJ DBF DUMP BLOCK FORMAT - DIRECTORY FILE
  4504. NZ X1,DMP11 IF ERROR
  4505. RJ RAF RETURN ALL FILES
  4506. SA2 DMPFLG
  4507. NZ X2,DMR3 IF NOT *ARF* DUMP
  4508. SA1 EXCOPY GET CURRENT COPY NUMBER
  4509. SX2 X1-NUMARF
  4510. ZR X2,DMP10.2 IF ALL REQUIRED COPIES GENERATED
  4511. SX6 X1+B1
  4512. SA6 A1 INCREMENT COPY NUMBER
  4513. SB5 2 SET TDFN ORDINAL FOR RESTART - NUMF
  4514. SX7 B0 ZERO TVSN FOR NEXT TAPE
  4515. SA7 TVSN
  4516. SA7 DMTAPE RESET DUMP TAPE COUNT
  4517. SA7 LENGTH RESET FOR DEFAULT *ARF* LENGTH
  4518. EQ DMP1 GO GENERATE NEXT COPY
  4519.  
  4520. DMP10.1 SX1 X1-2
  4521. ZR X1,DMR3 IF *VSN TABLE OVERFLOW* ERROR
  4522. RJ RTE RETURN TAPE ERROR
  4523. EQ DMP1.1 START DUMP OVER
  4524.  
  4525. DMP10.2 SA3 DMPF GET ERROR FLAG
  4526. NZ X3,DMP14 IF *ARF* HEADER ERROR
  4527. EQ DMR3 EXIT NORMAL
  4528.  
  4529. * ALL ERROR EXITS TAKEN HERE.
  4530.  
  4531. DMP11 RJ RAF RETURN ALL FILES
  4532. EQ DMR3 EXIT JOB
  4533.  
  4534. DMP12 ERROR DMPC,,,DMP11,,E NO FILES TO DUMP
  4535.  
  4536. DMP13 ERROR DMPD,,,DMP11,,E MORE THAN ON ARF
  4537.  
  4538. DMP14 ERROR DMPE,,,DMR3,,E ARF HEADER STATUS 3
  4539.  
  4540. DMP15 ERROR ADFB,XXPFN,,DMP11,,E ATTACH ERROR ON FILE
  4541.  
  4542. DMPA VFD 30/0,12/2LZZ,12/0,6/1LA
  4543. DMPB VFD 30/0,12/7777B,12/0,6/77B
  4544.  
  4545. DMPC DATA 20H0 *****
  4546. DATA C*NO FILES TO DUMP*
  4547. DMPCL EQU *-DMPC
  4548. DMPD DATA 20H0 *****
  4549. DATA C*MORE THAN ONE ARF SPECIFIED.*
  4550. DMPDL EQU *-DMPD
  4551. DMPE DATA 20H0 *****
  4552. DATA C*ARF HEADER STATUS (3) POSSIBLE ERROR.*
  4553. DMPEL EQU *-DMPE
  4554. DMPF BSSZ 1 *ARF* HEADER ERROR FLAG
  4555. DRF SPACE 4,25
  4556.  
  4557. ** DRF - DUMP RECORD FORMAT.
  4558. *
  4559. * DUMP FILE IN RECORD FORMAT. ALL ACTIVE DATA BLOCKS
  4560. * WILL BE DUMPED. IF END-OF-TAPE IS REACHED, THE
  4561. * CURRENT TAPE IS RETURNED AND THE NEXT TAPE REQUESTED.
  4562. *
  4563. * ENTRY (X4) = FWA OF FET.
  4564. * (IVSN) = INDEX TO *TVSN*.
  4565. * (IDFN) = ADDRESS OF NEXT FILE.
  4566. *
  4567. * EXIT *FSTT* AND ACTIVE DATA BLOCKS DUMPED.
  4568. * (X1) = 0 - IF NO ERRORS.
  4569. *
  4570. * USES X - 0, 1, 2, 3, 4, 6, 7.
  4571. * A - 1, 2, 3, 4, 6, 7.
  4572. * B - NONE.
  4573. *
  4574. * CALLS DER.
  4575. *
  4576. * MACROS ERROR, READ, READW, RECALL, REWIND, WRITEF, WRITER.
  4577. * WRITEF.
  4578.  
  4579.  
  4580. DRF SUBR ENTRY/EXIT
  4581. BX6 X4
  4582. SA6 HOLD SAVE FET ADDRESS
  4583. SA4 HOLD
  4584. READ X4,R
  4585. SA4 HOLD
  4586. READW X4,WBUF,WBUFL READ FSTT
  4587. ZR X1,DRF13 IF NO EOR
  4588. NG X1,DRF13 IF EOF/EOI
  4589. DRF1 WRITEW TP,WBUF,X1-WBUF
  4590. RJ DER DETECT END OF REEL
  4591. NG X1,DRF2 IF END OF TAPE
  4592. NZ X1,DRFX IF ERROR
  4593. DRF2 WRITER TP,R
  4594. RJ DER DETECT END OF REEL
  4595. NG X1,DRF2.1 IF END OF TAPE
  4596. NZ X1,DRFX IF ERROR
  4597.  
  4598. * CHECK BUFFER AND BLOCK SIZE.
  4599.  
  4600. DRF2.1 SA2 WBUF+FSTT22
  4601. MX0 42
  4602. BX2 -X0*X2
  4603. SX3 64
  4604. IX2 X2*X3
  4605. SX2 X2-2
  4606. SX2 X2-WBUFL
  4607. PL X2,DRF13 IF BUFFER TOO SMALL
  4608. SA1 XXPFN
  4609. SA3 XXIXN
  4610. BX1 X3-X1
  4611. ZR X1,DRF3 IF INDEX FILE TO BE DUMPED
  4612. SA3 XXTY GET FILE TYPE
  4613. SX1 X3-2RIS
  4614. NZ X1,DRF10 IF *DA* OR *AK* TYPE
  4615. DRF3 SA2 WBUF+73B
  4616. DRF4 MX0 36
  4617. BX7 -X0*X2
  4618.  
  4619. * (X7) = PRU OF FIRST DATA BLOCK.
  4620.  
  4621. SA4 HOLD
  4622. SX1 B1
  4623. LX1 47
  4624. SA2 X4+1
  4625. BX6 X1+X2
  4626. SA6 A2
  4627. SA7 A6+5 SET PRU
  4628. READ X4,R
  4629. SA4 HOLD
  4630. READW X4,WBUF,WBUFL
  4631. ZR X1,DRF13 IF ERROR - NO EOR
  4632. NG X1,DRF13 IF EOF/EOI - ERROR
  4633. DRF5 WRITEW TP,WBUF,X1-WBUF
  4634. RJ DER DETECT END OF REEL
  4635. NG X1,DRF6 IF END OF TAPE
  4636. NZ X1,DRFX IF ERROR
  4637. DRF6 WRITER TP,R
  4638. RJ DER DETECT END OF REEL
  4639. NG X1,DRF6.1 IF END OF TAPE
  4640. NZ X1,DRFX IF ERROR
  4641. DRF6.1 SA2 WBUF+1
  4642. MX0 36
  4643. BX2 -X0*X2
  4644. NZ X2,DRF4 IF MORE BLOCKS TO BE DUMPED
  4645. DRF7 SX1 3REND
  4646. SA2 XXPFN
  4647. BX6 X1+X2
  4648. SA6 TEMPP TRAILER WORD
  4649. DRF8 WRITEW TP,TEMPP,B1 WRITE TRAILER WORD
  4650. RJ DER DETECT END OF REEL
  4651. NG X1,DRF9 IF END OF TAPE
  4652. NZ X1,DRFX IF ERROR
  4653. DRF9 WRITEF TP,R
  4654. RJ DER DETECT END OF REEL
  4655. NG X1,DRF9.1 IF END OF TAPE
  4656. NZ X1,DRFX IF ERROR
  4657. DRF9.1 SA1 HOLD CLEAR RANDOM BIT
  4658. SX0 B1
  4659. SA1 X1+1
  4660. LX0 47
  4661. BX6 -X0*X1
  4662. SA6 A1 CLEAR RANDOM BIT FOR NEXT PROCESS
  4663. SX1 B0
  4664. EQ DRFX RETURN
  4665.  
  4666. * PROCESS *DA* AND *AK* FILES.
  4667.  
  4668. DRF10 SA4 HOLD
  4669. READ X4,R
  4670. SA4 HOLD
  4671. READW X4,WBUF,WBUFL
  4672. ZR X1,DRF13 IF ERROR
  4673. NG X1,DRF7 IF EOF/EOI
  4674. SA2 WBUF+1 CHECK FOR ZERO RECORD COUNT
  4675. MX0 13
  4676. LX0 60-9
  4677. BX2 X0*X2
  4678. ZR X2,DRF10 IF EMPTY BLOCK
  4679. DRF11 WRITEW TP,WBUF,X1-WBUF
  4680. RJ DER DETECT END OF REEL
  4681. NG X1,DRF12 IF END OF TAPE
  4682. NZ X1,DRFX IF ERROR
  4683. DRF12 WRITER TP,R
  4684. RJ DER DETECT END OF REEL
  4685. NG X1,DRF10 IF END OF REEL
  4686. NZ X1,DRFX IF ERROR
  4687. EQ DRF10 GET NEXT BLOCK
  4688.  
  4689. DRF13 ERROR DRFA,,,DRFX,,E ERROR IN RECORD DUMP
  4690.  
  4691. DRFA DATA 20H0 *****
  4692. DATA C*ERROR IN RECORD DUMP.*
  4693. DRFAL EQU *-DRFA
  4694. EDF SPACE 4,20
  4695. ** EDF - EXPAND DATA FILES.
  4696. *
  4697. * *EDF* EXPANDS DATA FILES. IF *ZZDBDIR* IS UNUSABLE,
  4698. * REBUILD AND EXIT. *EDF* RETURNS ALL DATA FILES BEFORE
  4699. * EXITING.
  4700. *
  4701. * ENTRY (XXPFN) = PERMANENT FILE NAME.
  4702. * (XXPACK) = PACK NAME.
  4703. * (XXDEV) = DEVICE FOR DATA FILE.
  4704. * (XXIXN) = INDEX FILE NAME.
  4705. * (XXIXP) = INDEX FILE PACK NAME.
  4706. * (XXIDEV) = INDEX DEVICE.
  4707. * (PERCENT) = DISPLAY CODE EXPAND PERCENTAGE.
  4708. * 0 IF NO PERCENTAGE GIVEN.
  4709. * (XXPCT) = OCTAL EXPAND PERCENTAGE.
  4710. * (TEMPO) = 0 IF FIRST TRIP TO *EDF*.
  4711. * .NE. 0, IF OTHERWISE.
  4712. *
  4713. * EXIT (X5) = *XXPFN* IF *ZZDBDIR* REBUILT.
  4714. *
  4715. * USES X - ALL.
  4716. * A - 1, 2, 3, 4, 5, 6, 7.
  4717. * B - 6, 7.
  4718. *
  4719. * CALLS ACF, ADF, DXB, RDF.
  4720. *
  4721. * MACROS CATLIST, CLOSEM, ERROR, FETCH, MESSAGE,
  4722. * OPENM, PUT, READ, REWIND, RMGET, RMREP, SKIPEI,
  4723. * STORE, WRITE, WRITEF.
  4724.  
  4725.  
  4726. EDF SUBR ENTRY/EXIT
  4727. RJ ACF ATTACH *ZZDBDIR* FILE
  4728. SA3 XXPFN
  4729. MX0 12
  4730. BX6 X0*X3
  4731. SA6 KEY2 SET KEY FOR *ZZDBDIR* HEADER
  4732. STORE DIRR,ERL=0
  4733. RMGET DIRR,YYBUF,0,,KEY2
  4734. RJ FER CHECK FIT ERROR
  4735. NZ X1,EDF13 IF ERROR
  4736. SA5 TEMPO
  4737. NZ X5,EDF1 IF FIRST TRIP
  4738. SA5 YYBUF+4
  4739. BX6 X5
  4740. SA6 TEMPO
  4741. EDF1 SA5 XXPFN
  4742. SX3 3RAAA
  4743. BX6 X5+X3
  4744. SA6 KEY1 SET KEY FOR FILE
  4745. RMGET DIRR,XXBUF,0,,KEY1
  4746. RJ FER CHECK FIT ERROR
  4747. NZ X1,EDF13 IF ERROR
  4748. SA5 TDFN
  4749. MX0 -48
  4750. BX5 -X0*X5
  4751. ZR X5,EDF4 IF EXPAND BATA BASE
  4752. SA5 PERCENT
  4753. ZR X5,EDF3 IF PERCENT NOT GIVEN
  4754. SA5 XXPCT
  4755. BX6 X5
  4756. SA6 XXBUF+4 NEW PERCENT
  4757. EDF2 RMREP DIRR,XXBUF,60,,KEY1
  4758. RJ FER CHECK FIT ERROR
  4759. NZ X1,EDF13 IF ERROR
  4760. EDF3 RMREP DIRR,YYBUF,60,,KEY2
  4761. RJ FER CHECK FIT ERROR
  4762. NZ X1,EDF13 IF ERROR
  4763. CLOSEM DIRR,U
  4764. SA5 XXBUF+4
  4765. ZR X5,EDF12 IF EXIT - NO IF EXPAND
  4766. EQ EDF6 GO EXPAND
  4767.  
  4768. * BY DATA BASE.
  4769.  
  4770. EDF4 SA5 PERCENT
  4771. ZR X5,EDF5 IF NO PERCENT
  4772. SA5 XXPCT
  4773. BX6 X5
  4774. SA6 YYBUF+4
  4775. EDF5 SA5 TEMPO
  4776. SA4 XXBUF+4
  4777. BX4 X4-X5
  4778. NZ X4,EDF3 IF LOOP
  4779. SA2 YYBUF+4
  4780. BX6 X2
  4781. SA6 XXBUF+4
  4782. EQ EDF2 LOOP
  4783.  
  4784. EDF6 SB7 B1
  4785. RJ ADF ATTACH DATA FILE
  4786. NZ X1,EDFX IF ERROR
  4787. CATLIST CAT,XXPFN XXPACK,XXDEV
  4788. SA1 CAT+B1
  4789. SX7 X1
  4790. SA7 A1+B1
  4791. SA7 A7+B1
  4792. MX0 24
  4793. SA2 HBUF+1
  4794. BX6 X0*X2
  4795. LX6 24
  4796. SA6 DATAF NUMBER OF PRUS ( DATA FILE )
  4797. SA2 XXIXN
  4798. ZR X2,EDF9 IF NO INDEX FILE
  4799. CATLIST CAT,XXIXN XXIXP,XXIDEV
  4800. SA1 CAT+B1
  4801. SX7 X1
  4802. SA7 A1+B1
  4803. SA7 A7+B1
  4804. SA2 HBUF+1
  4805. BX6 X0*X2
  4806. LX6 24
  4807. SA6 INDXF NUMBER OF PRUS ( INDEX FILE )
  4808.  
  4809. * EXPAND INDEX FILE
  4810.  
  4811. SA1 IF+B1
  4812. SX7 X1
  4813. SA7 A1+B1
  4814. SA7 A7+B1
  4815. READ IF,R READ FSTT
  4816. MX0 24
  4817. SA5 DBUF+FSTT22
  4818. LX5 3
  4819. BX5 X0*X5
  4820. LX5 24
  4821. SA2 XXBUF+4 BINARY PERCENTAGE REQUIRED
  4822. SX6 X5-1 CURRENT NUMBER OF PRUS
  4823. IX5 X2*X6 (PERCENT X NUMBER USED)
  4824. SA2 INDXF TOTAL LENGTH OF FILE
  4825. IX3 X2-X6 TOTAL - NUMBER USED
  4826. SX2 100
  4827. IX4 X2*X3 100 X PRESENT EXCESS
  4828. IX3 X5-X4
  4829. ZR X3,EDF9 IF NO EXPANSION NECESSARY
  4830. NG X3,EDF9 IF NO EXPANSION NECESSARY
  4831. IX3 X3/X2 TOTAL EXCESS REQUIRED
  4832. REWIND IF,R
  4833. SKIPEI IF,R
  4834. SB7 X3
  4835. SB6 B0-B1
  4836. EDF7 SB6 B6+B1
  4837. EQ B7,B6,EDF8 IF DONE
  4838. SA1 IF+B1
  4839. SX7 X1
  4840. SA7 A1+2 OUT
  4841. SX7 X7+100B
  4842. SA7 A7-B1 IN
  4843. SX7 DBUF+101B
  4844. SA7 A7+2 LIMIT
  4845. WRITE IF,R
  4846. EQ EDF7 LOOP
  4847.  
  4848. EDF8 WRITEF IF,R
  4849. EDF9 SA1 DF+B1
  4850. SX6 X1
  4851. SA6 A1+B1
  4852. SA6 A6+B1
  4853. READ DF,R
  4854. MX0 24
  4855. SA5 DBUF+FSTT22
  4856. LX5 3
  4857. BX5 X0*X5
  4858. LX5 24 NUMBER OF USED PRUS
  4859. SA2 XXBUF+4 BINARY PERCENTAGE REQUIRED
  4860. SX6 X5-1
  4861. IX5 X2*X6 ( PERCENT X NUMBER USED )
  4862. SA2 DATAF TOTAL LENGTH OF FILE
  4863. IX3 X2-X6 TOTAL LENGTH - NUMBER USED = EXCESS NOW
  4864. SX2 100
  4865. IX4 X2*X3 100 X PRESENT EXCESS
  4866. IX3 X5-X4
  4867. ZR X3,EDF12 IF NO EXPANSION NECESSARY
  4868. NG X3,EDF12 IF NO EXPANSION NECESSARY
  4869. IX3 X3/X2 TOTAL EXCESS REQUIRED
  4870. REWIND DF,R
  4871. SKIPEI DF,R
  4872. SB7 X3
  4873. SB6 B0-B1
  4874. EDF10 SB6 B6+B1
  4875. EQ B7,B6,EDF11 IF DONE
  4876. SA1 DF+B1
  4877. SX7 X1
  4878. SA7 A1+2 OUT
  4879. SX7 X7+100B
  4880. SA7 A7-B1 IN
  4881. SX7 DBUF+101B
  4882. SA7 A7+2 LIMIT
  4883. WRITE DF,R
  4884. EQ EDF10 LOOP
  4885.  
  4886. EDF11 WRITEF DF,R
  4887. EDF12 RJ RDF RETURN FILES
  4888. SX1 B0
  4889. EQ EDFX RETURN
  4890.  
  4891. EDF13 CLOSEM DIRR,U
  4892. ERROR EDFA,,,EDFX,,E ZZDBDIR UNREADABLE
  4893.  
  4894. EDFA DATA 20H0 *****
  4895. DATA C*ZZDBDIR UNREADABLE*
  4896. EDFAL EQU *-EDFA
  4897. EDI SPACE 4,15
  4898. ** EDI - EDIT DIRECTORY.
  4899. *
  4900. * ENTRY (LFNC) = 0, IF ALL FILES ARE EDITED.
  4901. * N, IF SELECTIVE FILES.
  4902. * (TKY1) = FIRST FILE NAME.
  4903. *
  4904. * EXIT (X1) = 0, IF NO ERRORS.
  4905. *
  4906. * USES X - 0, 1, 2, 6.
  4907. * A - 1, 2, 6.
  4908. * B - NONE.
  4909. *
  4910. * CALLS EFD, ELD.
  4911.  
  4912.  
  4913. EDI SUBR ENTRY/EXIT
  4914. SX6 -2
  4915. SA6 LFNP PRESET FILE NAME POINTER
  4916. SA1 LFNC FILE CONTROL
  4917. NZ X1,EDI2 IF EDIT SELECTIVE FILES
  4918. EDI1 MX6 0
  4919. SA6 CYCC RESET CYCLE COUNT
  4920. RJ EFD EDIT FILE DUMP ENTRIES
  4921. SX1 X1-3 CHECK FOR END OF FILE
  4922. ZR X1,EDIX IF END OF FILE, NORMAL RETURN
  4923. SX1 X1+3 RESET *X1*
  4924. NZ X1,EDIX IF CRM ERROR
  4925. RJ ELD EDIT AFTER IMAGE LOG ENTRIES
  4926. SX1 X1-3 CHECK FOR END OF FILE
  4927. ZR X1,EDIX IF END OF FILE, NORMAL RETURN
  4928. SX1 X1+3 RESET *X1*
  4929. NZ X1,EDIX IF CRM ERROR
  4930. SA1 TKY1 NEXT FILE NAME
  4931. MX0 6
  4932. BX1 X0*X1
  4933. LX1 5-59
  4934. SX2 1R* TEST FOR VSN ENTRY
  4935. MX0 -6
  4936. BX2 -X0*X2
  4937. BX1 X1-X2
  4938. NZ X1,EDI1 IF NOT VSN TYPE ENTRY
  4939. EQ EDIX RETURN
  4940.  
  4941. EDI2 SA1 LFNP FILE POINTER IN *TDFN* TABLE
  4942. SX6 X1+2 INCREMENT POINTER
  4943. SA6 A1 REPLACE POINTER
  4944. SA1 LFNC NUMBER OF FILES IN *TDFN* TABLE
  4945. LX1 1 MULTIPLY BY 2
  4946. IX2 X6-X1
  4947. MX1 0
  4948. ZR X2,EDIX IF END OF TABLE
  4949. SA1 TDFN+X6 SELECTIVE FILE NAME
  4950. SA2 EDTF EDIT FLAG
  4951. ZR X2,EDI3 IF NOT MANUAL EDITING
  4952. SA1 TDFS+X6 FILE NAME FROM *TDFS* TABLE
  4953. EDI3 BX6 X1
  4954. SA6 TKY1 SET FILE NAME IN KEY
  4955. MX6 0
  4956. SA6 CYCC RESET CYCLE COUNT
  4957. RJ EFD EDIT FILE DUMP ENTRIES
  4958. NZ X1,EDIX IF CRM ERROR
  4959. RJ ELD EDIT AFTER IMAGE LOG DUMP ENTRIES
  4960. NZ X1,EDIX IF CRM ERROR
  4961. EQ EDI2 PROCESS NEXT FILE
  4962. EFD SPACE 4,20
  4963. ** EFD - EDIT FILE DUMP ENTRY.
  4964. *
  4965. * ENTRY (CYCF) = 1, MODIFY CYCLE NUMBER IN FILE HEADER.
  4966. * (LFNC) = 0, IF ALL FILES.
  4967. * N, IF SELECTIVE FILES.
  4968. * (TKY1) = FILE NAME.
  4969. *
  4970. * EXIT (X1) = 0, IF NO ERRORS.
  4971. * (AKY1) = FIRST AFTER IMAGE DUMP ENTRY KEY.
  4972. * (TKY1) = NEXT FILE NAME.
  4973. * (LDATE) = LAST CYCLE DATE/TIME.
  4974. *
  4975. * USES X - 0, 1, 2, 3, 6, 7.
  4976. * A - 1, 2, 3, 6, 7.
  4977. * B - 5, 6.
  4978. *
  4979. * CALLS CFD, FER, PDE, PVE, SFN.
  4980. *
  4981. * MACROS DELETE, ERROR, GETN, RMGET, RMREP, SKIPBL, START,
  4982. * STORE.
  4983.  
  4984.  
  4985. EFD SUBR ENTRY/EXIT
  4986. SA1 TKY1 FILE NAME
  4987. SX2 3RAAA FILE HEADER
  4988. BX6 X1+X2
  4989. SA6 CKY1 KEY WORD ONE
  4990. MX7 0
  4991. SA7 CKY2 KEY WORD TWO
  4992. RMGET DIRR,WSAB,0,,CKY1 READ FILE HEADER
  4993. RJ FER FIT ERROR STATUS
  4994. NZ X1,EFD7 IF FILE NOT IN DIRECTORY
  4995. SA2 CYCF CHANGE CYCLE FLAG
  4996. ZR X2,EFD1 IF NO CYCLE CHANGE
  4997. SA3 CYCL NEW CYCLE NUMBER
  4998. BX6 X3
  4999. SA6 WSAB+5 REPLACE CYCLE NUMBER
  5000. RMREP DIRR,WSAB,WSAL,,CKY1 REPLACE FILE HEADER
  5001. RJ FER FIT ERROR STATUS
  5002. EQ EFDX RETURN
  5003.  
  5004. EFD1 SA2 WSAB+5 NUMBER OF CYCLES FOR THIS FILE
  5005. NZ X2,EFD2 IF NUMBER EXISTS
  5006. SA2 CYCD USE DIRECTORY HEADER CYCLE NUMBER
  5007. EFD2 BX6 X2
  5008. SA6 CYCT SAVE CURRENT CYCLE NUMBER
  5009. SA1 TKY1 FILE NAME
  5010. SX2 3RBBB FILE DUMP ENTRY
  5011. BX6 X1+X2
  5012. SA6 CKY1
  5013. SX6 6 RELATION IS *GT*
  5014. STORE DIRR,REL=X6 SET *GT* IN FIT
  5015. SX7 -1 SET SECOND KEY WORD TO LARGE VALUE
  5016. SA7 CKY2
  5017. START DIRR,,CKY1,0,10 POSITION TO AFTER IMAGE ENTRY
  5018. RJ FER FIT ERROR STATUS
  5019. NZ X1,EFDX IF ERROR, RETURN
  5020. GETN DIRR,WSAB,,AKY1 READ FIRST AFTER IMAGE DUMP ENTRY
  5021. RJ FER FIT ERROR STATUS
  5022. NZ X1,EFDX IF ERROR, RETURN
  5023. MX0 -18
  5024. SX2 3RAAA FILE HEADER TYPE
  5025. SA3 AKY1 FIRST AFTER IMAGE DUMP ENTRY
  5026. BX1 -X0*X3
  5027. BX1 X1-X2 COMPARE TYPES
  5028. NZ X1,EFD3 IF NOT FILE HEADER TYPE
  5029. BX6 X0*X3
  5030. SA6 TKY1 SAVE NEXT FILE NAME
  5031. SA6 EFDA NO AFTER IMAGE DUMPS FLAG
  5032.  
  5033. EFD3 SKIPBL DIRR,2 SKIP BACKWARD ONE ENTRY
  5034. EFD4 GETN DIRR,WSAB,,CKY1 READ FILE DUMP ENTRY
  5035. RJ FER FIT ERROR STATUS
  5036. NZ X1,EFDX IF ERROR, RETURN
  5037. MX0 -18
  5038. SA1 CKY1 FIRST WORD OF KEY
  5039. BX1 -X0*X1
  5040. SX2 3RBBB
  5041. BX1 X1-X2
  5042. NZ X1,EFD5 IF NOT FILE DUMP ENTRY
  5043. SB6 B0 SET FILE DUMP ENTRY
  5044. RJ CFD CHECK FOR DELETE
  5045. ZR X1,EFD3 IF ENTRY NOT TO BE DELETED
  5046. RMGET DIRR,WSAB,0,,CKY1 ESTABLISH POSITION
  5047. DELETE DIRR,,CKY1 DELETE FILE DUMP ENTRY
  5048. RJ FER FIT ERROR STATUS
  5049. NZ X1,EFDX IF ERROR, RETURN
  5050. SB5 B0
  5051. RJ PDE PRINT DELETED ENTRY
  5052. SA1 WSAB+2 VSN NUMBER
  5053. MX0 36
  5054. BX6 X0*X1
  5055. SA6 TVSN VSN TO BE CHECKED
  5056. SB6 B0 SET FILE DUMP ENTRY
  5057. RJ PVE PROCESS VSN ENTRY
  5058. NZ X1,EFDX IF ERROR, RETURN
  5059. SKIPBL DIRR,1 SKIP BACKWARD ONE RECORD
  5060. EQ EFD4 PROCESS NEXT ENTRY - BACKWARD
  5061.  
  5062.  
  5063. EFD5 SA2 EFDA
  5064. NZ X2,EFD6 IF NO AFTER IMAGE DUMPS
  5065. SA1 TKY1 FILE NAME
  5066. SX2 3R
  5067. MX0 -18
  5068. BX2 -X0*X2
  5069. BX6 X1+X2
  5070. SA6 CKY1
  5071. SX7 6 SET *GT*
  5072. STORE DIRR,REL=X7 SET *REL* IN FIT
  5073. SX6 -1 SET KEY WORD TWO TO LARGE VALUE
  5074. SA6 CKY2
  5075. START DIRR,,CKY1,0,10 POSITION TO NEXT FILE HEADER
  5076. RJ FER FIT ERROR STATUS
  5077. NZ X1,EFDX IF ERROR, RETURN
  5078. GETN DIRR,WSAB,,TKY1 NEXT FILE HEADER
  5079. RJ FER FIT ERROR STATUS
  5080. NZ X1,EFDX IF ERROR, RETURN
  5081. MX0 42
  5082. SA1 TKY1
  5083. BX6 X0*X1
  5084. SA6 TKY1 NEXT FILE NAME
  5085. EFD6 MX6 0
  5086. SA6 EFDA CLEAR NO AFTER IMAGE DUMPS FLAG
  5087. MX1 0
  5088. EQ EFDX RETURN
  5089.  
  5090. EFD7 SA1 TKY1
  5091. RJ SFN SPACE FILL NAME
  5092. SA6 EFDB+2
  5093. ERROR EFDB,,,EFD6 FILE NOT IN DIRECTORY
  5094.  
  5095. EFDA BSSZ 1 NO AFTER IMAGE DUMPS FLAG
  5096.  
  5097. EFDB DATA 20H0 *****
  5098. DATA C*XXXXXXX NOT FOUND IN DIRECTORY.*
  5099. EFDBL EQU *-EFDB
  5100. EIT SPACE 4,25
  5101. ** EIT - EDIT BACKUP DIRECTORY.
  5102. *
  5103. * THIS ROUTINE EDITS THE BACKUP DIRECTORY. EDITING TAKES
  5104. * PLACE ON EITHER SINGLE DATA BASE FILE BASIS (WHEN *DBPFN*
  5105. * PARAMETER IS USED) OR FOR THE ENTIRE DATA BASE
  5106. * (VIA *DB* PARAMETER). THERE ARE TWO DISTINCTIVE WAYS THE
  5107. * EDIT DIRECTIVE CAN BE USED - AUTOMATIC OR MANUAL EDITING.
  5108. * AUTOMATIC EDITING OCCURS IF EDIT DIRECTIVE WITHOUT
  5109. * SUBSEQUENT DIRECTIVES IS USED. ADDITIONAL DIRECTIVES
  5110. * (*ADD*, *CYCLE*, *DELETE*) IMPLY MANUAL EDITING.
  5111. *
  5112. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  5113. * (X2) = NEXT WORD IN BUFFER.
  5114. * (X6) = OPERATION FLAG. (VALIDATES PARAMETERS).
  5115. *
  5116. * EXIT TO *DMR3*
  5117. *
  5118. * USES X - 0, 1, 2, 3, 6.
  5119. * A - 1, 2, 6.
  5120. * B - NONE.
  5121. *
  5122. * CALLS ADD, CYC, DEL, EDI, FER, FND, IFV, MVE=, RAF, SPR.
  5123. *
  5124. * MACROS ERROR, GETN, REWINDM.
  5125.  
  5126.  
  5127. EIT BSS 0 ENTRY
  5128. SB1 1
  5129. SA6 OPFLG SAVE DIRECTIVE CODE
  5130. RJ SPR SET PARAMETERS
  5131. SA2 OPFLG
  5132. NZ X2,EIT1 IF NOT EDIT DIRECTIVE
  5133. SX6 B1
  5134. SA6 EDTF SET EDIT FLAG
  5135. RJ IFV INITIALIZE FILES AND VARIABLES
  5136. NZ X1,EIT9 IF ERROR IN PROCESSING
  5137. RJ FND FIND NEXT DIRECTIVE
  5138. NZ X1,EIT0 IF NOT FOUND, PROCESS AUTO EDITING
  5139. SA1 LFNC NUMBER OF FILES IN *TDFN* TABLE
  5140. LX1 1 NUMBER OF ENTRIES
  5141. SX2 TDFN FWA OF SOURCE TABLE
  5142. SX3 TDFS FWA OF DESTINATION TABLE
  5143. RJ MVE= MOVE TABLE
  5144. EQ DMR3 PROCESS NEXT DIRECTIVE
  5145.  
  5146. * PROCESS AUTOMATIC EDITING.
  5147.  
  5148. EIT0 REWINDM DIRR
  5149. GETN DIRR,WSAB,,TKY1 READ DIRECTORY HEADER
  5150. SA1 WSAB+5 NUMBER OF CYCLES TO RETAIN
  5151. BX6 X1
  5152. SA6 CYCD SAVE NUMBER OF CYCLES
  5153. GETN DIRR,WSAB,,TKY1 FIRST FILE HEADER
  5154. MX6 0
  5155. SA6 DELF DELETE FLAG - CYCLE DELETE
  5156. SA1 TKY1 FILE NAME
  5157. MX0 42
  5158. BX6 X0*X1
  5159. SA6 TKY1 FIRST FILE NAME FOR KEY
  5160. MX6 0
  5161. SA6 EDTF CLEAR EDIT FLAG
  5162. RJ EDI EDIT DIRECTORY
  5163. NZ X1,EIT7 IF CRM ERROR
  5164. EQ EIT4 NORMAL COMPLETION
  5165.  
  5166. * PROCESS MANUAL EDITING.
  5167.  
  5168. EIT1 SA1 EDTF
  5169. ZR X1,EIT8 IF NOT PRECEEDED BY EDIT DIRECTIVE
  5170. SX2 X2-2 DIRECTIVE CODE
  5171. ZR X2,EIT2 IF *CYCLE* DIRECTIVE
  5172. PL X2,EIT3 IF *DELETE* DIRECTIVE
  5173. RJ ADD PROCESS *ADD* DIRECTIVE
  5174. NZ X1,EIT9 IF ERROR IN PROCESING
  5175. EQ EIT4 NORMAL COMPLETION
  5176.  
  5177. EIT2 RJ CYC PROCESS *CYCLE* DIRECTIVE
  5178. NZ X1,EIT9 IF ERROR IN PROCESSING
  5179. EQ EIT4 NORMAL COMPLETION
  5180.  
  5181. EIT3 RJ DEL PROCESS *DELETE* DIRECTIVE
  5182. NZ X1,EIT9 IF ERROR IN PROCESSING
  5183. EIT4 RJ FND FIND NEXT DIRECTIVE
  5184. ZR X1,DMR3 IF VALID FOUND, PROCESS IT
  5185. RJ RAF RETURN ALL FILES
  5186. EQ EIT10 COMPLETION MESSAGE
  5187.  
  5188. EIT5 RJ RAF RETURN ALL FILES
  5189. EQ DMR3 ABNORMAL TERMINATION
  5190.  
  5191. EIT7 ERROR EITB,,,EIT9,,E CRM ERROR ENCOUNTERED
  5192.  
  5193. EIT8 ERROR EITC,,,EIT9,,E DIRECTIVE NOT PRECEEDED BY EDIT
  5194.  
  5195. EIT9 ERROR EITD,,,EIT5,,E ERROR IN EDIT PROCESSING
  5196.  
  5197. EIT10 ERROR EITE,,,DMR3 EDITING COMPLETE
  5198.  
  5199. EITB DATA 20H0 *****
  5200. DATA C*CRM ERROR ENCOUNTERED.*
  5201. EITBL EQU *-EITB
  5202.  
  5203. EITC DATA 20H0 *****
  5204. DATA C*DIRECTIVE NOT PRECEEDED BY EDIT DIRECTIVE.*
  5205. EITCL EQU *-EITC
  5206.  
  5207. EITD DATA 20H0 *****
  5208. DATA C*ERROR IN EDIT PROCESSING.*
  5209. EITDL EQU *-EITD
  5210.  
  5211. EITE DATA 20H0
  5212. DATA C*EDITING COMPLETE.*
  5213. EITEL EQU *-EITE
  5214. ELD SPACE 4,15
  5215. ** ELD - EDIT AFTER IMAGE LOG DUMP ENTRY.
  5216. *
  5217. * ENTRY (AKY1) = FIRST *AFTER IMAGE* LOG DUMP ENTRY KEY.
  5218. * (LDATE) = LAST CYCLE DATE/TIME.
  5219. * (TKY1) = NEXT FILE NAME.
  5220. *
  5221. * EXIT (X1) = 0, IF NO ERRORS.
  5222. *
  5223. * USES X - 0, 1, 2, 3, 5, 6.
  5224. * A - 1, 2, 3, 5, 6.
  5225. * B - 5, 6.
  5226. *
  5227. * CALLS CFD, FER, PDE, PVE.
  5228. *
  5229. * MACROS DELETE, EDATE, ETIME, GETN, RMGET.
  5230.  
  5231.  
  5232. ELD SUBR ENTRY/EXIT
  5233. SA2 AKY1 CHECK IF ENTRY IS VSN TYPE OR HEADER TYPE
  5234. MX0 18
  5235. BX1 X0*X2
  5236. SX3 3R*** VSN TYPE ENTRY
  5237. LX3 59-17
  5238. BX3 X0*X3
  5239. BX1 X1-X3 COMPARE ENTRIES
  5240. ZR X1,ELDX IF VSN ENTRY NEXT, RETURN
  5241. MX0 -18
  5242. BX3 -X0*X2
  5243. SX5 3RAAA FILE HEADER TYPE
  5244. BX1 X3-X5
  5245. ZR X1,ELDX IF HEADER TYPE, NO AFTER IMAGE DUMPS
  5246. SA5 LDATE LAST CYCLE DATE/TIME
  5247. ZR X5,ELD1 IF NOT CYCLE DELETE
  5248. ETIME X5 UNPACK TIME
  5249. SA6 TIME
  5250. AX5 18
  5251. EDATE X5
  5252. SA6 DATE
  5253. ELD1 RMGET DIRR,WSAB,0,,AKY1 FIRST AFTER IMAGE LOG ENTRY
  5254. RJ FER FIT ERROR STATUS
  5255. NZ X1,ELDX IF ERROR, RETURN
  5256. ELD2 SB6 B1 AFTER IMAGE LOG DUMP ENTRY
  5257. RJ CFD CHECK FOR DELETE
  5258. ZR X1,ELD3 IF ENTRY NOT TO BE DELETED
  5259. SB5 B0
  5260. RJ PDE PRINT DELETED ENTRY
  5261. MX0 36
  5262. SA1 WSAB+2 VSN NUMBER
  5263. BX6 X0*X1
  5264. SA6 TVSN VSN TO BE DELETED
  5265. SB6 1 PROCESS AFTER IMAGE DUMP ENTRY
  5266. RJ PVE PROCESS VSN ENTRY
  5267. NZ X1,ELDX IF ERROR, RETURN
  5268. RMGET DIRR,WSAB,0,,AKY1 ESTABLISH POSITION
  5269. DELETE DIRR,,AKY1 DELETE ENTRY
  5270. RJ FER FIT ERROR STATUS
  5271. NZ X1,ELDX IF ERROR, RETURN
  5272. ELD3 GETN DIRR,WSAB,,AKY1 READ NEXT AFTER IMAGE LOG DUMP ENTRY
  5273. RJ FER FIT ERROR STATUS
  5274. NZ X1,ELDX IF ERROR, RETURN
  5275. SA3 AKY2 SECOND WORD OF KEY
  5276. SA5 VSNK ALL ASTERISKS
  5277. BX3 X3-X5
  5278. ZR X3,ELDX IF VSN ENTRY, RETURN
  5279. SA1 AKY1 FILE NAME
  5280. MX0 42
  5281. BX1 X0*X1
  5282. SA3 TKY1 NEXT FILE NAME
  5283. BX1 X1-X3
  5284. ZR X1,ELDX IF NEW FILE, RETURN
  5285. EQ ELD2 PROCESS NEXT ENTRY
  5286. ELH SPACE 4,15
  5287. ** ELH - ENTER DUMP LINE HEADER.
  5288. *
  5289. * ENTRY (WCBL) WORD COUNT.
  5290. *
  5291. * EXIT LINE BUFFER CLEARED AND HEADER DATA INSERTED.
  5292. *
  5293. * USES A - 1, 7.
  5294. * X - 1, 6, 7.
  5295. * B - 7.
  5296. *
  5297. * CALLS BSB, COD, ESB.
  5298.  
  5299.  
  5300. ELH SUBR ENTRY/EXIT
  5301. RJ BSB BLANK STRING BUFFER
  5302. SX6 3RKEY
  5303. LX6 48
  5304. SB7 OLWS+B1
  5305. MX1 3
  5306. RJ ESB SET LINE HEADER
  5307.  
  5308. * SET WORD COUNT.
  5309.  
  5310. SA1 WCBL
  5311. RJ COD CONVERT WORD COUNT
  5312. SX7 1RW
  5313. SA7 B7+B1 STORE WORD IDENTIFIER
  5314. SB7 A7+B1
  5315. MX1 2
  5316. LX6 54
  5317. RJ ESB ENTER WORD COUNT
  5318. SX7 1R-
  5319. SA7 B7 ENTER SEPARATOR
  5320. EQ ELHX RETURN
  5321. ESB SPACE 4,15
  5322. ** ESB - ENTER STRING BUFFER.
  5323. *
  5324. * ENTRY (X6) POSITIONED CHARACTER DATA
  5325. * (X1) NUMBER OF CHARS TO STORE (1 BIT PER CHAR)
  5326. * (B7) ENTRY ADDRESS IN STRING BUFFER
  5327. *
  5328. * EXIT (B7) NEXT ENTRY ADDRESS
  5329. *
  5330. * USES A - 7.
  5331. * X - 1, 2, 6, 7.
  5332. * B - 7.
  5333.  
  5334.  
  5335. ESB SUBR ENTRY/EXIT
  5336. ESB1 PL X1,ESBX IF RETURN
  5337. MX2 -6
  5338. LX1 1
  5339. BX7 -X2*X6
  5340. SA7 B7 STORE CHARACTER
  5341. SB7 B7+B1 ADVANCE STORE
  5342. LX6 6
  5343. EQ ESB1 LOOP FOR NEXT CHARACTER
  5344. EXC SPACE 4,20
  5345. ** EXC - EXECUTE CONTROL CARD.
  5346. *
  5347. * *EXC* EXECUTES A COMMAND AND RETURNS. THE ENTIRE
  5348. * FIELD LENGTH IS WRITTEN TO A FILE AND REREAD WHEN THE FILE
  5349. * IS RECALLED.
  5350. *
  5351. * ENTRY FILE *PROC* MUST CONTAIN CONTROL CARDS FOR
  5352. * EXECUTION. THE LAST COMMAND MUST BE A RECALL
  5353. * OF FILE *ZZZZZG7*.
  5354. *
  5355. * EXIT ALL COMMANDS IN FILE *PROC* HAVE
  5356. * BEEN EXECUTED.
  5357. *
  5358. * USES X - 0, 1, 2, 6.
  5359. * A - 0, 1, 2, 6.
  5360. * B - 1, 2.
  5361.  
  5362.  
  5363. EXC SUBR ENTRY/EXIT
  5364. SX6 A0 SAVE (A0)
  5365. SA6 A0S
  5366. SX6 PROC
  5367. SA6 CS SAVE COMMAND POINTER
  5368. EXC1 GETACT JA WAIT FOR ACTIVITY TO QUIET
  5369. RECALL
  5370. SA1 JA
  5371. MX0 12
  5372. BX1 X0*X1
  5373. NZ X1,EXC1 IF JOB STILL ACTIVE
  5374.  
  5375. * PRESERVE *ARGR* - *OVLFWA* IN *LOWMEM*.
  5376.  
  5377. SB2 OVLFWA-ARGR SET UPPER WORD INDEX
  5378. EXC2 SA1 ARGR+B2
  5379. BX6 X1
  5380. SA6 LOWMEM+B2
  5381. SB2 B2-B1
  5382. PL B2,EXC2 IF MORE
  5383.  
  5384. * PRESERVE LAST WORD OF *FL* AND LAST WORD ADDRESS.
  5385.  
  5386. BX6 X6-X6 CLEAR *MEMORY* STATUS WORD
  5387. SA6 FL
  5388. MEMORY CM,FL,R
  5389. SA1 FL ISOLATE RETURNED FL
  5390. MX0 30
  5391. BX6 X0*X1
  5392. LX6 30 RIGHT JUSTIFY RETURNED FL
  5393. SA6 A1 SET ADJUSTED FL
  5394. SX6 X6-1
  5395. SA6 LWADDR
  5396. SA1 X6
  5397. BX6 X1
  5398. SA6 LW PRESERVE LAST WORD OF FL
  5399.  
  5400. * SET LOADER CONTROL WORD IN *OVLFWA*.
  5401.  
  5402. SA1 LT50 LOADER 50 TABLE
  5403. BX6 X1
  5404. SA6 OVLFWA
  5405.  
  5406. * WRITE OUT USERS *FL* TO *ZZZZZXD*.
  5407.  
  5408. SX6 A6
  5409. SA1 ZZZZZG7+1 *FIRST*
  5410. MX0 42
  5411. BX1 X0*X1 PRESERVE ERP,UPR
  5412. BX6 X1+X6 MERGE *FIRST*
  5413. SA6 A1
  5414. BX6 -X0*X6 ISOLATE *FIRST*
  5415. SA6 ZZZZZG7+3 *OUT*
  5416. SA1 FL
  5417. SX6 X1
  5418. SA6 ZZZZZG7+4 *LIMIT* = FL
  5419. SX6 X6-1
  5420. SA6 ZZZZZG7+2 *IN* = FL - 1
  5421. WRITER ZZZZZG7,R
  5422.  
  5423. * INITIATE USER COMMAND.
  5424.  
  5425. SA1 CS RESTORE POINTER TO COMMAND
  5426. EXCST X1 EXECUTE USER COMMAND
  5427. MESSAGE =C* RETURN FROM EXC.*
  5428. ABORT
  5429.  
  5430. * REENTER HERE WHEN *ZZZZZXD* EXECUTED.
  5431.  
  5432. EXC3 BSS 0
  5433. SB1 1 RESTORE B1 = 1
  5434. SX6 1
  5435. SA1 ZZZZZG7
  5436. BX6 X1+X6
  5437. SA6 A1 SET COMPLETE BIT
  5438.  
  5439. * RESTORE *ARGR* - *OVLFWA*.
  5440.  
  5441. SB2 OVLFWA-ARGR SET UPPER WORD INDEX
  5442. EXC4 SA1 LOWMEM+B2
  5443. BX6 X1
  5444. SA6 ARGR+B2
  5445. SB2 B2-B1 DECREMENT WORD INDEX
  5446. PL B2,EXC4 IF MORE WORDS TO MOVE
  5447.  
  5448. * RESTORE LAST WORD OF *FL*.
  5449.  
  5450. SA1 LWADDR
  5451. SA2 LW
  5452. BX6 X2
  5453. SA6 X1
  5454.  
  5455. * RESTORE ORIGINAL *FL*.
  5456.  
  5457. SA1 FL
  5458. MEMORY CM,,R,X1
  5459.  
  5460. * RESTORE *A0*.
  5461.  
  5462. SA1 A0S
  5463. SA0 X1
  5464. EQ EXCX RETURN
  5465. EXP SPACE 4,25
  5466. ** EXP - EXPAND DATA FILES.
  5467. *
  5468. * *EXP* EXPANDS FILE SIZE FOR DATA FILES BASED ON
  5469. * EXISTING UNUSED SPACE (FROM *FSTT* AND *CATLIST*) AND
  5470. * PERCENTAGE (BACKUP DIRECTORY FOR THIS DATA BASE
  5471. * FILE). BEFORE A PERCENTAGE IS USED, THE BACKUP DIRECTORY
  5472. * IS UPDATED AT THE DATA BASE AND/OR DATA FILE LEVEL.
  5473. *
  5474. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  5475. * (X2) = NEXT WORD IN BUFFER.
  5476. * (X6) = OPERATION FLAG (VALIDATE PARAMETERS).
  5477. *
  5478. * EXIT ALL INDICATED DATA FILES AND ASSOCIATED INDEX
  5479. * FILES HAVE BEEN EXPANDED IF NECESSARY. BACKUP
  5480. * DIRECTORY FILE (*ZZDBDIR*) WAS REBUILT IF FOUND
  5481. * UNUSABLE. EXIT TO *DMR3* FOR NEXT DIRECTIVE.
  5482. *
  5483. * USES X - 0, 2, 5, 6.
  5484. * A - 2, 5, 6.
  5485. * B - 5, 7.
  5486. *
  5487. * CALLS CWM, DXB, EDF, GXJ, RAF, RXJ, SPR.
  5488. *
  5489. * MACROS ERROR.
  5490.  
  5491.  
  5492. EXP BSS 0 ENTRY
  5493. RJ SPR SET PARAMETERS
  5494. SB5 B5-2
  5495. NE B5,B0,EXP8 IF OTHER THAN ONE FILE SPECIFIED
  5496. SA5 PERCENT
  5497. SB7 B1
  5498. RJ DXB DISPLAY TO BINARY
  5499. NZ X4,EXP9 IF ERROR IN CONVERSION
  5500. SA6 XXPCT PERCENTAGE (OCTAL)
  5501. SX6 X6-100D
  5502. PL X6,EXP9 IF ERROR IN PERCENT SIZE
  5503. SX6 PTWR WRITE MODE
  5504. SA6 XXMODE ATTACH DATA/INDEX FILE IN WRITE MODE
  5505. SA6 TEMPO TEMPORARY
  5506. SA5 TDFN
  5507. MX0 12
  5508. BX5 X0*X5 DATA BASE NAME ( 2LDB )
  5509. RJ GXJ GET XXJ FILE
  5510. NZ X1,DMR3 IF ERROR
  5511. SA2 TDFN CHECK FOR MORE THAN TWO CHARACTERS
  5512. MX0 12
  5513. BX2 -X0*X2
  5514. ZR X2,EXP3 IF EXPAND BY DATA BASE
  5515.  
  5516. * EXPAND ONE DATA/INDEX FILE.
  5517.  
  5518. EXP1 SA5 TDFN
  5519. RJ RXJ FIND THIS FILE
  5520. ZR X1,EXP2 IF FILE FOUND
  5521. PL X1,EXP7 IF FILE NOT FOUND
  5522. ZR X2,EXP7 IF FILE NOT FOUND
  5523. EXP2 RJ CWM CHECK WRITE MODE
  5524. NZ X1,EXP7 IF ERROR
  5525. RJ EDF EXPAND DATA FILE
  5526. NZ X1,DMR3 IF ERROR IN EDF
  5527. EQ EXP7 GO RETURN FILES AND QUIT
  5528.  
  5529. * EXPAND BY DATA BASE.
  5530.  
  5531. EXP3 SX5 B1
  5532. EXP4 RJ RXJ READ NEXT XXJ ENTRY
  5533. ZR X1,EXP5 IF NO ERROR
  5534. NG X1,EXP6 IF EOF
  5535. EQ DMR3 REAL ERROR
  5536.  
  5537. EXP5 RJ CWM CHECK WRITE MODE
  5538. SX5 B0+ SET ENTRY CONDITION FOR *RXJ*
  5539. NZ X1,EXP4 IF READ ONLY FILE
  5540. RJ EDF EXPAND FILE
  5541. NZ X1,DMR3 IF ERROR IN EDF
  5542. SX5 B0+ SET ENTRY CONDITION FOR *RXJ*
  5543. EQ EXP4 GET NEXT FILE
  5544.  
  5545. EXP6 ZR X2,EXP7 IF NO MORE FILES
  5546. RJ CWM CHECK WRITE MODE
  5547. NZ X1,EXP7 IF ERROR
  5548. RJ EDF EXPAND LAST FILE
  5549. NZ X1,DMR3 IF ERROR IN EDF
  5550. EXP7 RJ RAF RETURN ALL FILES
  5551. EQ DMR3 RETURN
  5552.  
  5553. EXP8 ERROR IFVB,,,EXP7,,E *DB NAME AND FILE NAME BOTH SPECIFIED*
  5554.  
  5555. EXP9 ERROR EXPA,,,EXP7,,E *PERCENT PARAMETER NOT SPECIFIED*
  5556.  
  5557. EXPA DATA 20H0 *****
  5558. DATA C*PERCENT PARAMETER NOT SPECIFIED PROPERLY.*
  5559. EXPAL EQU *-EXPA
  5560. FAW SPACE 4,15
  5561. ** FAW - FORMAT ALPHA WORD.
  5562. *
  5563. * ENTRY (B2) = ADDRESS OF WORD TO FORMAT TO STRING BUFFER.
  5564. * (SCPC) = BYTE POSITION.
  5565. *
  5566. * EXIT (B2) = UNCHANGED.
  5567. * CHARACTERS PLACED IN STRING BUFFER AND *SCPC*
  5568. * ADVANCED.
  5569. *
  5570. * USES X - 1, 2, 3, 4, 6, 7.
  5571. * A - 1, 3, 4, 6, 7.
  5572. * B - 4, 5, 7.
  5573. *
  5574. * CALLS BSB.
  5575.  
  5576.  
  5577. FAW SUBR ENTRY/EXIT
  5578. SA3 OPWD
  5579. LX3 59-0
  5580. PL X3,FAW1 IF NOT OCTAL/ALPHA MODE
  5581. SA4 SCPC
  5582. NZ X4,FAW1 IF NOT FIRST WORD
  5583. RJ BSB BLANK BUFFER
  5584.  
  5585. FAW1 SA4 SCPC
  5586. SA1 B2 GET DATA WORD
  5587. MX2 10
  5588. SA3 OPWD
  5589. MX6 54
  5590. LX3 59-0
  5591. SB7 1R SET BLANK REPLACE
  5592. NG X3,FAW5 IF OCTAL/ALPHA MODE
  5593. SA3 TAAP+X4 GET STARTING POSITION
  5594. SB5 X3
  5595. SB4 B1
  5596.  
  5597. FAW2 LX1 6
  5598. BX7 -X6*X1
  5599. LX2 1
  5600. NZ X7,FAW3 IF NOT 00 CHARACTER
  5601. SX7 B7 FORCE BLANK
  5602. FAW3 SA7 B5
  5603. SB5 B5+B4 ADVANCE STORE
  5604. NG X2,FAW2 IF NOT END OF WORD
  5605.  
  5606. SA4 SCPC ADVANCE POSITION
  5607. SA3 OPWD
  5608. SX7 X4+B1
  5609. LX3 59-0
  5610. SX6 X7-TBOPL
  5611. NG X3,FAW4 IF OCTAL ALPHA MODE
  5612. SX6 X7-TAAPL
  5613. FAW4 SA7 A4
  5614. NZ X6,FAW IF NOT END OF LINE
  5615. SA6 A4 SET BEGINNING OF NEXT LINE
  5616. EQ FAWX RETURN
  5617.  
  5618. FAW5 SA3 TBOP+X4 SET STARTING POSITION
  5619. SB5 X3+B1
  5620. SB4 B1+B1 SET INCREMENT
  5621. EQ FAW2 LOOP FOR NEXT BYTE
  5622.  
  5623. * TABLE OF BYTE FORMAT POSITIONS
  5624.  
  5625. TAAP BSS 0
  5626. LOC 0
  5627. CON OLWS+10
  5628. CON OLWS+24
  5629. CON OLWS+38
  5630. CON OLWS+52
  5631. TAAPL EQU *
  5632. LOC *O
  5633. FER SPACE 4,20
  5634. ** FER - FIT ERROR STATUS.
  5635. *
  5636. * ENTRY (DIRR) = FWA OF BACKUP DIRECTORY FIT.
  5637. *
  5638. * EXIT (X1) = 0, IF NO ERRORS.
  5639. * 1, IF KEY NOT FOUND.
  5640. * 2, IF OTHER *CRM* ERROR.
  5641. * 3, IF END OF FILE.
  5642. *
  5643. * USES X - 0, 1, 2, 5, 7.
  5644. * A - 5, 7.
  5645. * B - NONE.
  5646. *
  5647. * CALLS COD.
  5648. *
  5649. * MACROS ERROR, FETCH.
  5650.  
  5651.  
  5652. FER SUBR ENTRY/EXIT
  5653. FETCH DIRR,FP,X2 FILE POSITION
  5654. SX2 X2-EOFF
  5655. SX1 3
  5656. ZR X2,FERX IF END OF FILE
  5657. MX1 0
  5658. FETCH DIRR,ES,X5 ERROR STATUS
  5659. ZR X5,FERX IF NO ERROR
  5660. SX2 KNFF KEY NOT FOUND
  5661. BX2 X5-X2
  5662. SX1 B1
  5663. ZR X2,FERX IF KEY NOT FOUND
  5664. BX1 X5
  5665. RJ COD CONVERT TO OCTAL DISPLAY CODE
  5666. MX0 18
  5667. BX7 X0*X4
  5668. SA7 HOLD5
  5669. ERROR FERA,HOLD5,,FER1,,E CRM ERROR STATUS
  5670. FER1 SX1 B1+B1
  5671. EQ FERX RETURN - ERROR
  5672.  
  5673. FERA DATA 20H0 *****
  5674. DATA C*ERROR STATUS XXX ON BACKUP DIRECTORY.*
  5675. FERAL EQU *-FERA
  5676. FML SPACE 4,10
  5677. ** FML - FORMAT PRINT LINE(S).
  5678. *
  5679. * ENTRY (A0) = INDEX TO LAST ENTRY+1 IN WORD BUFFER.
  5680. *
  5681. * EXIT PRINT LINE FORMATTED
  5682. *
  5683. * USES X - 1, 2, 6, 7.
  5684. * A - 2, 6, 7.
  5685. * B - 2.
  5686. *
  5687. * CALLS ELH, FOW, WSB, FAW.
  5688.  
  5689.  
  5690. FML SUBR ENTRY/EXIT
  5691. BX1 X1-X1
  5692. SX1 A0-B1
  5693. NG X1,FMLX IF EMPTY LINE
  5694. SA2 OPWD
  5695. LX2 59-0
  5696. PL X2,FML2 IF NOT OCTAL MODE
  5697. BX6 X6-X6 CLEAR BYTE POSITION
  5698. SA6 SCPC
  5699. RJ ELH ENTER LINE HEADER
  5700. SB2 DTOL
  5701. RJ FOW WORD 1
  5702. SB2 B2+B1
  5703. SX1 A0-2
  5704. NG X1,FML1 IF END OF LINE
  5705. RJ FOW WORD 2
  5706. SB2 B2+B1
  5707. SX1 A0-3
  5708. NG X1,FML1 IF END OF LINE
  5709. RJ FOW WORD 3
  5710. SB2 B2+B1
  5711. SX1 A0-4
  5712. NG X1,FML1 IF END OF LINE
  5713. RJ FOW WORD 4
  5714. FML1 RJ WSB WRITE BUFFER
  5715. FML2 SA2 OPWD
  5716. LX2 59-1
  5717. BX6 X6-X6
  5718. PL X2,FML4 IF NOT ALPHA MODE
  5719. SA6 SCPC
  5720. RJ ELH
  5721. SB2 DTOL
  5722. RJ FAW WORD 1
  5723. SB2 B2+B1
  5724. SX1 A0-2
  5725. NG X1,FML3 IF END OF LINE
  5726. RJ FAW WORD 2
  5727. SB2 B2+B1
  5728. SX1 A0-3
  5729. NG X1,FML3 IF END OF LINE
  5730. RJ FAW WORD 3
  5731. SB2 B2+B1
  5732. SX1 A0-4
  5733. NG X1,FML3 IF END OF LINE
  5734. RJ FAW WORD 4
  5735. FML3 RJ WSB WRITE BUFFER
  5736. FML4 SA2 WDCT
  5737. BX7 X2
  5738. SA7 WCBL SET BEGINNING OF NEXT LINE
  5739. EQ FMLX RETURN
  5740. FND SPACE 4,15
  5741. ** FND - FIND NEXT DIRECTIVE.
  5742. *
  5743. * ENTRY NONE.
  5744. *
  5745. * EXIT (X1) = 0, IF VALID DIRECTIVE FOUND.
  5746. *
  5747. * USES X - 4.
  5748. * A - NONE.
  5749. * B - NONE.
  5750. *
  5751. * CALLS CND.
  5752.  
  5753.  
  5754. FND SUBR ENTRY/EXIT
  5755. SX4 3RDA* *ADD* DIRECTIVE
  5756. RJ CND CHECK NEXT DIRECTIVE
  5757. ZR X1,FNDX IF FOUND RETURN
  5758. SX4 3RYC* *CYCLE* DIRECTIVE
  5759. RJ CND CHECK NEXT DIRECTIVE
  5760. ZR X1,FNDX IF FOUND RETURN
  5761. SX4 3RED* *DELETE* DIRECTIVE
  5762. RJ CND CHECK NEXT DIRECTIVE
  5763. EQ FNDX RETURN
  5764. FOW SPACE 4,15
  5765. ** FOW - FORMAT OCTAL WORD.
  5766. *
  5767. * ENTRY (B2) = ADDRESS OF WORD TO FORMAT.
  5768. * (SCPC) = BYTE POSITION.
  5769. *
  5770. * EXIT WORD PLACED IN BUFFER.
  5771. * (SCPC) = UPDATED.
  5772. * (X6) = 0 IF LINE IS FILLED.
  5773. * (B2) = UNCHANGED.
  5774. *
  5775. * USES A - 4, 6, 7.
  5776. * X - 2, 3, 4, 6, 7.
  5777. * B - 6, 7.
  5778.  
  5779.  
  5780. FOW SUBR ENTRY/EXIT
  5781. SA4 SCPC
  5782. SA4 TBOP+X4 GET BEGINNING CHARACTER POSITION
  5783. MX3 20 DIGIT COUNT
  5784. SB7 X4 STORE ADDRESS
  5785. SB6 1R0
  5786. MX2 -3
  5787. SA4 B2 GET INPUT WORD
  5788. FOW1 LX4 3
  5789. BX7 -X2*X4 GET DIGIT
  5790. SX7 X7+B6
  5791. LX3 1
  5792. SA7 B7 STORE CONVERTED DIGIT
  5793. SB7 B7+B1
  5794. NG X3,FOW1 IF NOT END OF WORD
  5795. SA4 SCPC
  5796. SX7 X4+B1
  5797. SX6 X7-TBOPL
  5798. SA7 A4 ADVANCE POSITION
  5799. NZ X6,FOWX IF NOT END OF LINE
  5800. SA6 A4 RESET BYTE POSITION
  5801. EQ FOWX RETURN
  5802.  
  5803. * TABLE OF FORMATTING VALUES
  5804.  
  5805. TBOP BSS 0
  5806. LOC 0
  5807. CON OLWS+10
  5808. CON OLWS+34
  5809. CON OLWS+58
  5810. CON OLWS+82
  5811. TBOPL EQU *
  5812. LOC *O
  5813. GAL SPACE 4,15
  5814. ** GAL - GENERATE AFTER IMAGE HEADER LISTING.
  5815. *
  5816. * ENTRY (DIRR) = FWA OF BACKUP DIRECTORY FIT.
  5817. * (TVSN) = VSN OF AFTER IMAGE LOG DUMP TAPE.
  5818. * (TIME) = HH.MM.SS, IF ENTRIES AFTER THIS TIME NEEDED.
  5819. *
  5820. * EXIT (X1) = 0, IF NO ERRORS.
  5821. *
  5822. * USES X - ALL.
  5823. * A - 1, 2, 3, 4, 5, 6, 7.
  5824. * B - 6, 7.
  5825. *
  5826. * CALLS BFL, CDD, COD, FER, GNR, LDE, LDH, RQT, SFN, SHT.
  5827. *
  5828. * MACROS EDATE, ERROR, ETIME, READ, READW, REWIND, RMGET.
  5829.  
  5830.  
  5831. GAL SUBR ENTRY/EXIT
  5832. SA2 TVSN
  5833. MX0 24
  5834. LX2 35-59
  5835. SA3 VSNK SECOND WORD OF THE KEY
  5836. BX4 X0*X3 UPPER FOUR CHARACTERS
  5837. BX6 X2+X4
  5838. SA6 CKY1
  5839. BX6 X3
  5840. SA6 CKY2
  5841. RMGET DIRR,WSAB,0,,CKY1 READ VSN ENTRY
  5842. RJ FER FIT ERROR STATUS
  5843. NZ X1,GAL6 IF ERRORS
  5844. SA2 TVSN
  5845. SX5 B0 READ MODE FOR TAPE REQUEST
  5846. BX6 X2 VSN NUMBER
  5847. SB7 TP TAPE REQUEST FET
  5848. RJ RQT REQUEST TAPE FILE
  5849. SA1 =6L MASS STORAGE FILE EXISTS
  5850. BX2 X1-X6
  5851. ZR X2,GAL2 IF DISK FILE ASSIGNED
  5852. SA1 TVSN
  5853. BX2 X1-X6
  5854. NZ X2,GAL7 IF NOT THE SAME VSN
  5855. REWIND TP,R
  5856. READ TP READ DMREC-S HEADER
  5857. READW TP,WBUF,WBUFL AFTER IMAGE TAPE - NO END OF TAPE
  5858. ZR X1,GAL8 IF ERROR
  5859. NG X1,GAL8 IF ERROR
  5860. GAL2 SX6 8 SET LISTING HEADER
  5861. RJ LPH LIST PAGE HEADER
  5862. SX6 9 SET LINE HEADER
  5863. RJ LPH LIST PAGE HEADER
  5864. MX6 0
  5865. SA6 HOLD INITIAL READ
  5866. SA6 RECC RECORD COUNT
  5867. SX4 TP TAPE FET ADDRESS
  5868. RJ GNR READ FIRST RECORD
  5869. NZ X1,GALX IF ERROR IN TAPE HEADER
  5870. GAL3 SX4 TP TAPE FET ADDRESS
  5871. RJ GNR READ NEXT RECORD
  5872. NG X1,GAL9 IF END OF FILE
  5873. NZ X1,GAL8 IF READ ERROR
  5874. SA1 RECC
  5875. SX2 B1
  5876. IX6 X1+X2 INCREMENT RECORD COUNT
  5877. SA6 RECC
  5878. SB6 X4 FWA OF AFTER IMAGE RECORD
  5879. RJ BFL BLANK FILL LINE
  5880. SA5 B6+XLPDW PACKED DATE/TIME
  5881. ETIME X5 UNPACK TIME
  5882. AX5 18
  5883. SA6 PLIN+6
  5884. EDATE X5 UNPACK DATE
  5885. SA6 PLIN+5
  5886. SA1 TIME
  5887. ZR X1,GAL4 IF ALL HEADERS REQUIRED
  5888. SA2 PLIN+6
  5889. IX2 X1-X2 COMPARE TIMES
  5890. NG X2,GAL4 IF HEADER TIME QUALIFIES
  5891. EQ GAL3 NEXT RECORD
  5892.  
  5893. GAL4 SA1 RECC RECORD COUNT
  5894. RJ CDD CONVERT TO DISPLAY CODE
  5895. LX6 48
  5896. SA6 PLIN+1
  5897. SA1 B6+XLFNW FILE NAME
  5898. MX0 42
  5899. BX1 X0*X1
  5900. RJ SFN SPACE FILL NAME
  5901. LX6 41-59
  5902. MX0 12
  5903. BX7 -X0*X6 LOWER HALF
  5904. SA1 PLIN+1
  5905. BX1 X0*X1 UPPER PART
  5906. BX7 X1+X7 COMBINE
  5907. SA7 PLIN+1
  5908. SA1 B6+XLBWW FIRST HEADER WORD
  5909. MX0 -19
  5910. BX2 -X0*X1
  5911. LX2 18-17
  5912. SX3 X2 HEADER TYPE
  5913. AX3 1
  5914. LX2 59-19
  5915. PL X2,GAL5 IF NO BEGIN INDICATOR
  5916. SA5 BIND BEGIN INDICATOR
  5917. BX6 X5
  5918. SA6 PLIN+4
  5919. GAL5 RJ SHT SET HEADER TYPE
  5920. NZ X1,GALX IF UNRECOGNIZABLE HEADER
  5921. MX0 24
  5922. SA1 B6+XLBWW TRANSACTION SEQUENCE NUMBER
  5923. BX1 X0*X1
  5924. LX1 23-59
  5925. RJ COD CONSTANT TO OCTAL DISPLAY
  5926. LX6 6
  5927. MX0 54
  5928. SX1 1RB
  5929. BX6 X0*X6
  5930. BX6 X1+X6
  5931. SA6 PLIN+2
  5932. SA1 B6+XLTNW TASK NAME
  5933. MX0 42
  5934. BX1 X0*X1
  5935. RJ SFN SPACE FILL NAME
  5936. LX6 53-59
  5937. SA1 B6+XLKSW RECORD LENGTH
  5938. AX1 24
  5939. SA6 PLIN+3
  5940. RJ CDD CONVERT TO DISPLAY CODE
  5941. BX5 X6
  5942. MX0 -24
  5943. SA1 B6+XLKSW KEY LENGTH
  5944. BX1 -X0*X1
  5945. RJ CDD CONVERT BINARY TO DISPLAY
  5946. MX0 -24
  5947. LX5 24
  5948. BX6 -X0*X6
  5949. BX5 X0*X5
  5950. BX6 X5+X6 KEY AND RECORD LENGTH
  5951. SA6 PLIN+7
  5952. MX7 0
  5953. SA7 PLIN+8 TERMINATE LINE
  5954. SX6 B6
  5955. SA6 GALE SAVE *B6*
  5956. RJ LDE LIST ENTRY
  5957. SA1 GALE
  5958. SB6 X1
  5959. SA1 B6+XLKSW KEY LENGTH
  5960. MX0 -24
  5961. BX7 -X0*X1
  5962. ZR X7,GAL3 IF NO KEY PRESENT
  5963. RJ LKC LIST KEY CONTENTS
  5964. EQ GAL3 NEXT RECORD
  5965.  
  5966. GAL6 ERROR CVNA,,,GALX,,E VSN DOES NOT EXIST
  5967.  
  5968. GAL7 ERROR GALB,,,GALX,,E WRONG VSN USED
  5969.  
  5970. GAL8 ERROR GALC,,,GALX,,E READ ERROR ON TAPE
  5971.  
  5972. GAL9 ERROR GALD,,,GAL10 END OF FILE REACHED
  5973. GAL10 MX1 0
  5974. EQ GALX RETURN
  5975.  
  5976. GALB DATA 20H0 *****
  5977. DATA C*WRONG VSN USED.*
  5978. GALBL EQU *-GALB
  5979.  
  5980. GALC DATA 20H0 *****
  5981. DATA C*READ ERROR ON TAPE.*
  5982. GALCL EQU *-GALC
  5983.  
  5984. GALD DATA 20H0 *****
  5985. DATA C*END OF FILE REACHED.*
  5986. GALDL EQU *-GALD
  5987.  
  5988. GALE BSSZ 1 TEMPORARY SAVE OF *B6*
  5989. GDR SPACE 4,10
  5990. ** GDR - GET DATA RECORD.
  5991. *
  5992. * *GDR* RETRIEVES THE NEXT RECORD FROM AN *AFTER IMAGE*
  5993. * LOG FILE.
  5994. *
  5995. * ENTRY (HOLD) = 0 FOR INITIAL CALL ONLY.
  5996. * (X4) = FET ADDRESS.
  5997. * (HOLD)/(HOLD1) = LAST EXIT IF NOT FIRST CALL.
  5998. *
  5999. * EXIT (HOLD) = FWA OF NEXT RECORD.
  6000. * (HOLD1) = LWA+1 OF DATA BLOCK READ.
  6001. * (X1) = 0, IF RECORD RETRIEVED.
  6002. * .LT. 0, IF EOF REACHED (PHYSICAL EOF),
  6003. * OR ONE WORD TRAILER (ZZDBLNNEND).
  6004. * (X5) = RECORD LENGTH.
  6005. * (X4) = ADDRESS OF RECORD.
  6006. *
  6007. * USES X - 0, 1, 2, 3, 4, 5, 6.
  6008. * A - 1, 2, 3, 4, 5, 6.
  6009. *
  6010. * MACROS ERROR, READ, READW.
  6011. *
  6012. * NOTE - WBUF MUST BE GREATER THAN THE MAXIMUM
  6013. * *AI* BUFFER IN AAMI. (SEE COMKCRM.680)
  6014.  
  6015.  
  6016. GDR SUBR ENTRY/EXIT
  6017. BX6 X4
  6018. SA3 HOLD
  6019. SA6 HOLD2 SAVE FET ADDRESS
  6020. NZ X3,GDR4 IF NOT FIRST TRIP
  6021. SX6 WBUF
  6022. SA6 HOLD1
  6023. SA6 A3
  6024. READ X4,R
  6025. SA4 HOLD2
  6026. READW X4,WBUF,WBUFL
  6027. SA4 HOLD2
  6028. ZR X1,GDR8 IF NO HEADER
  6029. NG X1,GDR8 IF NO HEADER
  6030.  
  6031. * EOR ENCOUNTERED.
  6032.  
  6033. SA3 WBUF+3 GET MAXIMUM BUFFER LENGTH
  6034. MX0 36
  6035. BX6 -X0*X3
  6036. SX2 WBUFL
  6037. IX6 X6-X2
  6038. NG X6,GDR5 IF BUFFER BIG ENOUGH
  6039. EQ GDR7 ERROR
  6040.  
  6041. * READ NEXT BLOCK.
  6042.  
  6043. GDR1 READ X4,R
  6044. SA4 HOLD2
  6045. READW X4,WBUF,WBUFL
  6046. SA4 HOLD2
  6047. ZR X1,GDR7 IF RECORD TOO LARGE
  6048. PL X1,GDR3 IF EOR
  6049. GDR2 MX1 1
  6050. EQ GDRX RETURN EOF
  6051.  
  6052. GDR3 SX6 WBUF
  6053. SA6 HOLD ADDRESS OF NEXT RECORD
  6054. BX6 X1
  6055. SA6 HOLD1 LWA+1 OF DATA BLOCK
  6056. MX0 -18
  6057. SX3 3REND
  6058. SA5 WBUF CHECK FIRST WORD
  6059. BX5 X5-X3
  6060. BX5 -X0*X5
  6061. ZR X5,GDR2 IF TRAILER RECORD FOUND
  6062. GDR4 SA2 HOLD
  6063. SA1 HOLD1
  6064. IX3 X2-X1
  6065. PL X3,GDR1 IF NO MORE RECORDS IN THIS BLOCK
  6066. SA5 X2
  6067. NZ X5,GDR4.0 IF NOT WORD OF ALL 1-S
  6068. NG X5,GDR1 IF WORD OF ALL 1-S
  6069. GDR4.0 MX0 -XLTYN
  6070. BX5 -X0*X5 GET FUNCTION
  6071. ZR X5,GDR6 IF *COMMIT* STAMP
  6072. SX3 X5-XLQD
  6073. ZR X3,GDR6 IF *BRF* DOWN STAMP
  6074. SX3 X5-TRDF
  6075. ZR X3,GDR6 IF *DBFREE* STAMP
  6076. SX3 X5-DMCC
  6077. ZR X3,GDR6 IF *CEASE* STAMP
  6078. SA5 X2+XLRSW
  6079. MX0 -XLRSN
  6080. LX5 XLRSN-1-XLRSS GET RECORD LENGTH
  6081. BX3 -X0*X5 RECORD LENGTH
  6082. MX0 -XLKSN
  6083. LX5 XLKSN-1-XLKSS-XLRSN+XLRSS+1
  6084. BX5 -X0*X5
  6085. SX1 10 ASSUME ONE WORD
  6086. LX6 X5
  6087. IX4 X6/X1
  6088. SX1 10 RESTORE (X1)
  6089. IX4 X4*X1
  6090. IX5 X4-X5
  6091. ZR X5,GDR4.1 IF KL IS A MULTIPLE OF 10
  6092. IX4 X4+X1 ROUND KL UP TO THE NEXT MULTIPLE OF 10
  6093.  
  6094. GDR4.1 IX3 X4+X3 KL + RL IN CHARACTERS
  6095. SX4 9
  6096. IX3 X3+X4 ADD 9 TO CHARACTER COUNT
  6097. SX5 10
  6098. IX4 X3/X5 WORDS
  6099. SX3 TARHL
  6100. IX5 X3+X4
  6101. SX4 X2 RECORD ADDRESS
  6102. IX6 X5+X2
  6103. SA6 A2+ ADDRESS OF NEXT RECORD
  6104. GDR5 SX1 B0
  6105. EQ GDRX RETUN WITH RECORD
  6106.  
  6107. GDR6 SX6 X2+TARHL
  6108. SX3 TARHL
  6109. SA6 A2 FWA OF NEXT RECORD
  6110. SX4 X2
  6111. EQ GDR5 RETURN
  6112.  
  6113. GDR7 ERROR GNRA,,,GDRX,,E BLOCK BUFFER TOO SMALL
  6114.  
  6115. GDR8 ERROR GNRB,,,GDRX,,E ARF FILE HEADER ERROR
  6116. GFA SPACE 4,20
  6117. ** GFA - GET AFTER/BEFORE IMAGE RECOVERY FILE LOCAL.
  6118. *
  6119. * ENTRY (A0) = FWA OF FET CONTAINED IN *TARF* OR *TBRF*.
  6120. * (A5) = FWA OF HEADER CONTAINED IN *TARF* OR *TBRF*.
  6121. * (X5) = FIRST WORD OF HEADER.
  6122. * (B7) = ZERO IF *ARF* PROCESS.
  6123. * = ONE IF *BRF* PROCESS.
  6124. *
  6125. * EXIT (X6) = 0, IF NO ERRORS.
  6126. * (X6) = 6, IF ERROR ON ATTACH OR DEFINE.
  6127. * = 12, IF *CIO* ERROR ON RECOVERY FILE I/O.
  6128. *
  6129. * USES X - 0, 1, 6, 7.
  6130. * A - 1, 7.
  6131. * B - 7.
  6132. *
  6133. * CALLS ARF, ATF.
  6134. *
  6135. * MACROS STATUS.
  6136.  
  6137. GFA SUBR ENTRY/EXIT
  6138. SX0 B7+ SAVE B7
  6139. SA1 A0 FILE NAME LEFT
  6140. BX7 X1
  6141. SA7 RECF FILE NAME TO FET+0
  6142. STATUS RECF
  6143. SA1 RECF
  6144. MX7 11
  6145. LX1 59-11
  6146. BX1 X7*X1
  6147. NZ X1,GFA1 IF *ARF* OR *BRF* LOCAL
  6148. SB7 B1+B1 (B7) = 2 FOR *ATF* ATTACH
  6149. SA1 A0+ FILE NAME FROM FET
  6150. RJ ATF ATTEMPT ATTACH
  6151. ZR X1,GFA1 IF FILE ATTACHED WITHOUT ERROR
  6152. SB7 B1 (B7) = 1 FOR *ATF* DEFINE
  6153. SA1 A0
  6154. RJ ATF DEFINE *ARF* OR *BRF*
  6155. SX6 6 ERROR ON DEFINE *ARF* OR *BRF* ERROR CODE
  6156. NZ X1,GFAX IF ERROR ON DEFINE
  6157. GFA1 SB7 X0 ZERO FOR *ARF*, ONE FOR *BRF*
  6158. SA1 DIRECT GET DIRECTIVE
  6159. LX1 59-56 CHECK FOR *D*
  6160. NG X1,GFA2 IF DUMP DIRECTIVE
  6161. RJ AAF ALLOCATE BUFFER
  6162. EQ GFA3 CHECK FOR COMPLETE ALLOCATION
  6163.  
  6164. GFA2 RJ RFH REWRITE FILE HEADER
  6165. GFA3 ZR X6,GFAX IF *ARF* OR *BRF* ALLOCATED
  6166. SX6 12B CIO ERROR ON RECOVERY FILE ERROR CODE
  6167. EQ GFAX ERROR EXIT
  6168. GFL SPACE 4,25
  6169. ** GFL - GENERATE FULL LISTING.
  6170. *
  6171. * THIS ROUTINE GENERATES FULL LISTING OF THE BACKUP
  6172. * DIRECTORY. FIRST PART SHOWS ALL ENTRIES IN THE KEY
  6173. * SEQUENCE. SECOND PART SHOWS DUMP ENTRIES IN THE
  6174. * CHRONOLOGICAL SEQUENCE BY DATE/TIME OF THE DUMP.
  6175. *
  6176. * ENTRY (LFNC) = 0 ALL FILES TO BE LISTED.
  6177. * (LSTC) = 0 NO DATE/TIME SPECIFIED.
  6178. *
  6179. * EXIT LISTING GENERATED.
  6180. *
  6181. * USES X - 0, 1, 2, 3, 5, 6, 7.
  6182. * A - 0, 1, 2, 3, 5, 6, 7.
  6183. * B - 2.
  6184. *
  6185. * CALLS BFL, LDE, LDH, LFH, LPH, RDE, RVE, SFN, SM5END,
  6186. * SM5FROM, SM5KEY, SM5SORT, SM5TO.
  6187. *
  6188. * MACROS CLOSEM, EDATE, ETIME, FETCH, OPENM, PUT, REWINDM,
  6189. * RMGET, SKIPBL.
  6190.  
  6191.  
  6192. GFL SUBR ENTRY/EXIT
  6193. REWINDM DIRR
  6194. OPENM SORTI,I-O
  6195. SA1 GFLA FULL LISTING
  6196. BX6 X1
  6197. SA6 HDR1+1
  6198. SA0 DIRR SET FIT ADDRESS
  6199. MX6 0 FULL PAGE HEADING
  6200. RJ LDH LIST DIRECTORY HEADER
  6201. SA1 BKEY BLANK KEY
  6202. BX6 X1
  6203. SA6 TKY1 PRESET PREVIOUS KEY
  6204. SA6 TKY2
  6205. GFL1 RJ RDE READ DIRECTORY ENTRY
  6206. ZR X6,GFL2 IF NO ERRORS
  6207. SX6 X6-1
  6208. ZR X6,GFL3 IF NEW KEY VALUE FOUND
  6209. MX1 0
  6210. SX6 X6-2
  6211. ZR X6,GFLX IF END OF FILE, RETURN
  6212. EQ GFL4 PROCESS VSN ENTRIES
  6213.  
  6214. GFL2 RJ LDE LIST DIRECTORY ENTRY
  6215. PUT SORTI,WSAB WRITE SEQUENTIAL FILE
  6216. EQ GFL1 CONTINUE
  6217. GFL3 RJ LFH LIST FILE HEADER
  6218. EQ GFL1 CONTINUE
  6219.  
  6220. GFL4 SX6 5 VSN PAGE HEADER
  6221. RJ LPH LIST PAGE HEADER
  6222. MX6 0
  6223. SA6 HDRC CLEAR FILE HEADER CONTROL
  6224. SKIPBL DIRR,1
  6225. GFL5 RJ RVE READ VSN ENTRY
  6226. NZ X1,GFL6 IF END OF FILE
  6227. RJ LDE LIST ENTRY
  6228. EQ GFL5 CONTINUE
  6229.  
  6230. GFL6 SX6 6 CHRONOLOGICAL LIST HEADER
  6231. RJ LPH LIST PAGE HEADER
  6232. SX6 7 DUMP ENTRY HEADER
  6233. RJ LPH LIST PAGE HEADER
  6234. REWINDM SORTI
  6235. OPENM SORTO
  6236.  
  6237. * SORT DIRECTORY DUMP ENTRIES
  6238.  
  6239. SA1 GFLI
  6240. RJ =XSM5SORT
  6241. SA1 GFLJ
  6242. RJ =XSM5FROM SELECT SORT INPUT FILE
  6243. SA1 GFLK
  6244. RJ =XSM5TO SELECT SORT OUTPUT FILE
  6245. SA1 GFLL
  6246. RJ =XSM5KEY SELECT SORT KEY
  6247. SA1 GFLB
  6248. RJ =XSM5END
  6249.  
  6250. OPENM SORTO
  6251. GFL7 RMGET SORTO,WSAB GET RECORD
  6252. FETCH SORTO,FP,X1 FILE POSITION
  6253. SX2 EOSF
  6254. IX1 X2-X1
  6255. NZ X1,GFL8 IF NOT END OF FILE
  6256. CLOSEM SORTO,U
  6257. CLOSEM SORTI,U
  6258. MX1 0
  6259. EQ GFLX RETURN
  6260.  
  6261. GFL8 RJ BFL BLANK FILL LINE BUFFER
  6262. SA5 WSAB+1 PACKED DATE/TIME
  6263. ETIME X5 UNPACK TIME
  6264. SA6 PLIN+2
  6265. AX5 18
  6266. EDATE X5 UNPACK DATE
  6267. SA6 PLIN+1
  6268. SA2 WSAB FILE NAME
  6269. MX0 42
  6270. BX1 X0*X2
  6271. RJ SFN SPACE FILL NAME
  6272. LX6 47-59
  6273. SA6 PLIN+3
  6274. MX0 -18
  6275. SA2 WSAB DUMP ENTRY TYPE
  6276. BX1 -X0*X2
  6277. SX2 3RBBB FILE DUMP
  6278. BX2 X1-X2
  6279. SA3 LOGT AFTER IMAGE LOG TYPE
  6280. BX3 X0*X3
  6281. BX3 X1+X3
  6282. SA1 WSAB+2 FILE DUMP FORMAT
  6283. NZ X2,GFL9 IF NOT FILE DUMP
  6284. SB2 X1
  6285. SA2 TFOR+B2
  6286. BX6 X2
  6287. SA6 PLIN+6
  6288. SA3 TFIL FILE TYPE
  6289. GFL9 BX6 X3
  6290. SA6 PLIN+4
  6291. MX0 36
  6292. BX1 X0*X1 VSN NUMBER
  6293. RJ SFN SPACE FILL NAME
  6294. LX6 47-59
  6295. SA6 PLIN+5
  6296. MX7 0
  6297. SA7 PLIN+8
  6298. RJ LDE LIST ENTRY
  6299. EQ GFL7 NEXT ENTRY
  6300.  
  6301. GFLA DATA 10H FULL LI
  6302. GFLB CON 0
  6303. GFLC DATA 10HSORTI SORT INPUT FILE
  6304. GFLD DATA 10HSORTO SORT OUTPUT FILE
  6305. GFLE DATA 11 POSITION OF FIRST BYTE OF KEY FIELD
  6306. GFLF DATA 10 NUMBER OF BYTES IN THE KEY FIELD
  6307. GFLG DATA 10HBINARY NUMERIC DATA FORMAT OF KEY
  6308. GFLH DATA 10HA ASCENDING ORDER
  6309. GFLI CON GFLB,0
  6310. GFLJ CON GFLC,0
  6311. GFLK CON GFLD,0
  6312. GFLL CON GFLE,GFLF,GFLG,GFLH,0
  6313. GFV SPACE 4,30
  6314. ** GFV - GET FIRST VSN.
  6315. *
  6316. * RETRIEVE FROM BACK-UP DIRECTORY FILE THE DATA BASE
  6317. * DUMP RECORD SPECIFIED BY THE DATE/TIME OR VSN ON
  6318. * THE DIRECTIVE. THIS RECORD CONTAINS THE TARGET VSN
  6319. * NAME (FIRST OF MULTI REEL).
  6320. *
  6321. * ENTRY (DATE) = TARGET DATE.
  6322. * 0 USE TODAYS DATE.
  6323. * (TIME) = TARGET TIME.
  6324. * 0 USE 23,59,59.
  6325. * (TVSN) = VSN OF FIRST TAPE OF DIRECTIVE.
  6326. *
  6327. * EXIT (X1) = 0 IF NO ERRORS.
  6328. * (IVSN) = ADDRESS OF FIRST VSN.
  6329. * (HOLD) = SKIP COUNT.
  6330. * *TVSN* BUILT.
  6331. *
  6332. * USES X - ALL.
  6333. * A - 1, 2, 3, 4, 5, 6, 7.
  6334. * B - 2, 3.
  6335. *
  6336. * CALLS FER, RDT.
  6337. *
  6338. * MACROS DATE, EDATE, ERROR, ETIME, FETCH, GETN,
  6339. * MOVE, RMGET, STORE.
  6340.  
  6341.  
  6342. GFV SUBR ENTRY/EXIT
  6343. SA3 TVSN
  6344. ZR X3,GFV1 IF NO VSN
  6345. SA1 DATE
  6346. NZ X1,GFV18 IF DATE GIVEN
  6347. SA1 TIME
  6348. ZR X1,GFV12 IF NO TIME.
  6349. EQ GFV18 ERROR
  6350.  
  6351. GFV1 SA2 DATE
  6352. ZR X2,GFV2 IF DATE NOT GIVEN
  6353. SX1 B0 SET DATE CONVERSION
  6354. RJ RDT REFORMAT DATE/TIME
  6355. SA6 UDATE UNPACKED DATE (GIVEN)
  6356. EQ GFV3 CONTINUE
  6357.  
  6358. GFV2 DATE UDATE
  6359. GFV3 SA2 TIME
  6360. ZR X2,GFV4 IF TIME NOT GIVEN
  6361. SX1 B1 SET TIME REFORMAT
  6362. RJ RDT REFORMAT DATE/TIME
  6363. SA6 UTIME UNPACKED TIME (GIVEN)
  6364. EQ GFV5 CONTINUE
  6365.  
  6366. GFV4 SA2 MTIME MIDNIGHT TIME
  6367. BX6 X2
  6368. SA6 UTIME
  6369. GFV5 SA2 XXPFN
  6370. SA1 =3RBBB SET DUMP RECORD TYPE
  6371. BX6 X2+X1
  6372. SA6 SKEY SET KEY
  6373. SX6 B0
  6374. SA6 YYBUF
  6375. STORE DIRR,MKL=10
  6376. RMGET DIRR,XXBUF,0,,SKEY
  6377. RJ FER CHECK FIT ERROR
  6378. NZ X1,GFV20 IF ERROR
  6379.  
  6380. * CHECK THIS RECORD FOR TARGET DUMP.
  6381.  
  6382. GFV6 SA2 XXBUF+1
  6383. AX2 18
  6384. EDATE X2
  6385. SA3 UDATE
  6386. IX5 X3-X6
  6387. NG X5,GFV10 IF NOT CANDIDATE (AFTER TARGET DATE)
  6388. SA2 XXBUF+1
  6389. MX0 42
  6390. BX2 -X0*X2
  6391. ETIME X2
  6392. SA3 UTIME
  6393. IX5 X3-X6
  6394. NG X5,GFV10 IF NOT CANDIDATE (AFTER TARGET TIME)
  6395. SX2 77B
  6396. SA1 XXBUF+2 GET FORMAT
  6397. BX1 X2*X1
  6398. SA3 TDFN
  6399. AX3 12
  6400. BX5 X3*X2
  6401. ZR X5,GFV8 IF NO FORMAT SPECIFIED
  6402. SX5 X5-1RR
  6403. NZ X5,GFV7 IF NOT RECORD FORMAT - MUST BE BLOCK
  6404. ZR X1,GFV9 IF BLOCK FORMAT IN THIS DIRECTORY ENTRY
  6405. EQ GFV8 CONTINUE
  6406.  
  6407. GFV7 NZ X1,GFV9 IF NOT BLOCK FORMAT
  6408. GFV8 MOVE 6,XXBUF,YYBUF
  6409. GFV9 GETN DIRR,XXBUF,,SKEY
  6410. SA2 XXPFN
  6411. SA3 XXBUF
  6412. SA1 =3RBBB
  6413. BX2 X1+X2
  6414. BX3 X3-X2
  6415. ZR X3,GFV6 IF MORE KEY ENTRIES
  6416.  
  6417. * DONE - CHECK RECORD.
  6418.  
  6419. GFV10 SA2 YYBUF
  6420. NZ X2,GFV15 IF RECORD FOUND
  6421. EQ GFV20 ERROR
  6422.  
  6423. * CHECK CORRECT VSN IN DIRECTORY FILE.
  6424.  
  6425. GFV11 GETN DIRR,YYBUF,,SKEY
  6426. EQ GFV13 CONTINUE
  6427.  
  6428. GFV12 STORE DIRR,MKL=10
  6429. SA3 XXPFN
  6430. SX2 3RBBB SPECIFY DUMP RECORD
  6431. BX6 X3+X2
  6432. SA6 TEMPO
  6433. RMGET DIRR,YYBUF,0,,TEMPO
  6434. GFV13 FETCH DIRR,ES,X2
  6435. ZR X2,GFV14 IF NO ERRORS
  6436. SX2 X2-100B
  6437. ZR X2,GFV20 IF EOF - NO ENTRY
  6438. SX3 X2+100B-445B
  6439. ZR X3,GFV20 IF RECORD NOT FOUND
  6440. EQ GFV19 ERROR
  6441.  
  6442. GFV14 SA3 YYBUF+2
  6443. MX0 36
  6444. BX4 X0*X3
  6445. SA2 TVSN
  6446. BX6 X2-X4
  6447. NZ X6,GFV11 IF NOT CORRECT VSN - SEARCH NEXT RECORD
  6448.  
  6449. GFV15 STORE DIRR,MKL=20
  6450. SA3 YYBUF+2
  6451. MX0 36
  6452. BX3 X0*X3
  6453.  
  6454. * BUILD LIST OF VSN-S IN THIS REQUEST.
  6455.  
  6456. SX6 TVSN
  6457. SA6 IVSN
  6458. SX6 B0
  6459. SA6 FVSN
  6460. SA6 NFLS
  6461. GFV16 BX6 X3
  6462. LX6 36
  6463. SA1 FILLER
  6464. BX6 X6+X1
  6465. SA6 EVSN SET KEY
  6466. RMGET DIRR,XXBUF,0,,EVSN GET VSN RECORD
  6467. RJ FER CHECK FIT ERROR
  6468. NZ X1,GFV19 IF ERROR
  6469. SA5 NFLS READ UP TOTAL NUMBER OF EOF-S
  6470. SA1 XXBUF+3 NUMBER OF EOF-S ON THIS TAPE
  6471. IX7 X1+X5
  6472. SA7 A5 UPDATE TOTAL WITH THIS VSN
  6473. SA3 IVSN GET INDEX
  6474. SB3 TVSN+TVSNL
  6475. SB2 X3
  6476. EQ B3,B2,GFV21 IF NO ROOM IN *TVSN*
  6477. MX0 36
  6478. SA2 XXBUF
  6479. LX2 24
  6480. BX6 X0*X2
  6481. SA6 X3+
  6482. SA2 FVSN
  6483. NZ X2,GFV17 IF FIRST VSN ALREADY ENCOUNTERED
  6484. SA3 YYBUF+4 FILE ORDINAL
  6485. IX4 X7-X3
  6486. NG X4,GFV17 IF NOT ON THIS TAPE
  6487. SA2 XXBUF+5
  6488. MX0 -3
  6489. BX2 -X0*X2
  6490. ZR X2,GFV22 IF NOT FIRST REEL
  6491. SA4 IVSN
  6492. BX7 X4
  6493. IX6 X3-X5 FILE ORDINAL - OLD TOTAL
  6494. SA7 FVSN ADDRESS OF FIRST VSN
  6495. SA6 HOLD SKIP COUNT
  6496. GFV17 SA2 IVSN
  6497. SX6 X2+B1
  6498. SA6 A2 INCREMENT IVSN
  6499. SA3 XXBUF+2
  6500. NZ X3,GFV16 IF ANOTHER TAPE
  6501. SA2 IVSN
  6502. SX6 B0
  6503. SA6 X2 END *TVSN* LIST
  6504. SA2 FVSN
  6505. ZR X2,GFV21 IF NO VSN FOUND - ERROR
  6506. BX7 X2
  6507. SA7 IVSN START HERE
  6508. SX1 B0
  6509. EQ GFVX RETURN
  6510.  
  6511. GFV18 ERROR GFVE,,,GFVX,,E VSN AND DATE/TIME CANNOT CO-EXIST
  6512.  
  6513. GFV19 ERROR GFVB,,,GFVX,,E CRM ERROR IN ZZDBDIR (GET)
  6514.  
  6515. GFV20 ERROR GFVC,,,GFVX,,E NO RECORD FOUND FOR GIVEN VSN
  6516.  
  6517. GFV21 ERROR GFVD,,,GFVX,,E ERROR IN RETRIEVING VSN
  6518.  
  6519. GFV22 ERROR GFVF,,,GFVX,,E VSN REQUESTED NOT FIRST REEL
  6520.  
  6521. GFVB DATA 20H0 *****
  6522. DATA C*CRM ERROR IN ZZDBDIR (GET).*
  6523. GFVBL EQU *-GFVB
  6524.  
  6525. GFVC DATA 20H0 *****
  6526. DATA C*NO RECORD FOUND FOR GIVEN VSN - DATE/TIME.*
  6527. GFVCL EQU *-GFVC
  6528.  
  6529. GFVD DATA 20H0 *****
  6530. DATA C*ERROR IN RETRIEVING VSN.*
  6531. GFVDL EQU *-GFVD
  6532.  
  6533. GFVE DATA 20H0 *****
  6534. DATA C*VSN AND DATE/TIME CANNOT CO-EXIST ON LOAD DIRECTIVE.*
  6535. GFVEL EQU *-GFVE
  6536.  
  6537. GFVF DATA 20H0 *****
  6538. DATA C*VSN REQUESTED NOT FIRST REEL.*
  6539. GFVFL EQU *-GFVF
  6540. GNR SPACE 4,25
  6541. ** GNR - GET NEXT RECORD.
  6542. *
  6543. * *GNR* RETRIEVES THE NEXT RECORD FROM AN *AFTER IMAGE*
  6544. * LOG FILE.
  6545. *
  6546. * ENTRY (HOLD) = 0 FOR INITIAL CALL ONLY.
  6547. * (X4) = FET ADDRESS.
  6548. *
  6549. *
  6550. * EXIT (HOLD) = FWA OF NEXT RECORD.
  6551. * (HOLD1) = LWA+1 OF DATA BLOCK READ.
  6552. * (X1) = 0 - IF RECORD RETRIEVED.
  6553. * NEGITIVE - IF EOF REACHED (PHYSICAL EOF),
  6554. * OR ONE WORD TRAILER (ZZDBLNNEND).
  6555. * POSITIVE - IF ERROR.
  6556. * (X5) = RECORD LENGTH.
  6557. * (X4) = ADDRESS OF RECORD.
  6558. *
  6559. * USES X - 0, 1, 2, 3, 4, 5, 6.
  6560. * A - 2, 3, 5, 6.
  6561. * B - 6, 7.
  6562. *
  6563. * MACROS ERROR, READEI, READW.
  6564.  
  6565.  
  6566. GNR SUBR ENTRY/EXIT
  6567. BX6 X4
  6568. SA3 HOLD
  6569. BX2 X4
  6570. SA6 HOLD2 SAVE FET ADDRESS
  6571. NZ X3,GNR1 IF NOT FIRST TRIP
  6572. SX6 WBUF
  6573. SA6 HOLD1
  6574. SA6 A3
  6575. READEI X2 INITIAL READ
  6576. READW X2,WBUF,TAHDL READ FILE HEADER WORD
  6577. NZ X1,GNR8 IF NO HEADER
  6578.  
  6579. GNR0 SX4 WBUF
  6580. BX1 X1-X1
  6581. EQ GNRX RETURN
  6582.  
  6583. * READ NEXT RECORD.
  6584.  
  6585. GNR1 READW X2,WBUF,TARHL READ RECORD HEADER WORD
  6586. GNR2 SX4 WBUF
  6587. PL X1,GNR3 IF TRANSFER COMPLETED
  6588. EQ GNRX RETURN EOF
  6589.  
  6590. GNR3 SX6 WBUF
  6591. SA6 HOLD ADDRESS OF NEXT RECORD
  6592. MX0 -18
  6593. SX3 3REND
  6594. SA5 WBUF CHECK FIRST WORD
  6595. BX5 X5-X3
  6596. BX5 -X0*X5
  6597. NZ X5,GNR4 IF TRAILER RECORD NOT FOUND
  6598. MX1 1 SET *EOR*
  6599. EQ GNRX RETURN
  6600.  
  6601. GNR4 SA3 HOLD
  6602. SA5 X3+
  6603. NZ X5,GNR4.2 IF NOT WORD OF ALL 1-S
  6604. PL X5,GNR4.2 IF NOT WORD OF ALL 1-S
  6605. SB7 WBUF+TARHL-1
  6606. SB6 WBUF
  6607. GNR4.1 SA2 B6+B1 MOVE HEADER WORDS UP ONE WORD
  6608. BX6 X2
  6609. SA6 B6
  6610. SB6 B6+B1
  6611. LT B6,B7,GNR4.1 IF NOT ALL WORDS MOVED
  6612. SA2 HOLD2
  6613. READW X2,B7,B1 READ LAST WORD OF HEADER
  6614. EQ GNR2 CHECK STATUS
  6615.  
  6616. GNR4.2 SA2 HOLD
  6617. MX0 -XLTYN
  6618. BX5 -X0*X5 GET FUNCTION
  6619. ZR X5,GNR6 IF *COMMIT* STAMP
  6620. SX3 X5-XLQD
  6621. ZR X3,GNR6 IF *BRF* DOWN STAMP
  6622. SX3 X5-TRDF
  6623. ZR X3,GNR6 IF *DBFREE* STAMP
  6624. SX3 X5-DMCC
  6625. ZR X3,GNR6 IF *CEASE* STAMP
  6626. SA5 X2+XLRSW
  6627. MX0 -XLRSN
  6628. LX5 XLRSN-1-XLRSS GET RECORD LENGTH
  6629. BX3 -X0*X5 RECORD LENGTH
  6630. MX0 -XLKSN
  6631. LX5 XLKSN-1-XLKSS-XLRSN+XLRSS+1
  6632. BX5 -X0*X5
  6633. SX0 10 ASSUME ONE WORD
  6634. LX6 X5
  6635. IX4 X6/X0
  6636. SX0 10
  6637. IX4 X4*X0
  6638. IX5 X4-X5
  6639. ZR X5,GNR5 IF KL IS A MULTIPLE OF 10
  6640. IX4 X4+X0 ROUND KL UP TO THE NEXT MULTIPLE OF 10
  6641. GNR5 IX3 X4+X3 KL + RL CHARACTERS
  6642. SX4 9
  6643. IX3 X3+X4 ADD 9 TO CHARACTER COUNT
  6644. SX5 10
  6645. IX4 X3/X5 WORDS
  6646. SB7 X4
  6647. SX3 TARHL
  6648. IX5 X3+X4 ADD HEADER
  6649. SX4 X2 RECORD ADDRESS
  6650. IX6 X5+X2
  6651. SB6 WBUF+TARHL
  6652. SA6 HOLD1
  6653. SA2 HOLD2
  6654. READW X2,B6,B7
  6655. SX4 WBUF
  6656. EQ GNRX RETURN WITH RECORD
  6657.  
  6658. GNR6 SX6 X2+TARHL
  6659. SA6 A2 FWA OF NEXT RECORD
  6660. SX3 TARHL
  6661. SX4 WBUF
  6662. BX1 X1-X1
  6663. EQ GNRX RETURN
  6664.  
  6665. GNR8 SX1 X4-ARF
  6666. NZ X1,GNR9 IF TAPE FILE
  6667. ERROR GNRB,,,GNRX,,E ARF FILE HEADER ERROR
  6668.  
  6669. GNR9 ERROR GNRC,,,GNRX,,E ARF DUMP TAPE HEADER ERROR
  6670.  
  6671. GNRA DATA 20H0 *****
  6672. DATA C*BLOCK BUFFER TOO SMALL.*
  6673. GNRAL EQU *-GNRA
  6674.  
  6675. GNRB DATA 20H0 *****
  6676. DATA C*ARF FILE HEADER ERROR.*
  6677. GNRBL EQU *-GNRB
  6678.  
  6679. GNRC DATA 20H0 *****
  6680. DATA C*ARF DUMP TAPE HEADER ERROR.*
  6681. GNRCL EQU *-GNRC
  6682. GNW SPACE 4,15
  6683. ** GNW - GET NEXT WORD.
  6684. *
  6685. * GET NEXT WORD FROM THE KEY AREA.
  6686. *
  6687. * ENTRY (LWAK) = LWA OF KEY AREA.
  6688. * (KEYW) = CURRENT KEY WORD ADDRESS.
  6689. *
  6690. * EXIT (X1) = 1, IF END OF KEY AREA.
  6691. * (X6) = NEXT WORD CONTENTS.
  6692. * (KEYW) = UPDATED ADDRESS.
  6693. *
  6694. * USES X - 1, 2, 6, 7.
  6695. * A - 1, 2, 7.
  6696. * B - NONE.
  6697.  
  6698.  
  6699. GNW1 SX1 B1 END OF KEY AREA
  6700.  
  6701. GNW SUBR ENTRY/EXIT
  6702. SA1 KEYW CURRENT KEY WORD ADDRESS
  6703. SX1 X1+B1 INCREMENT ADDRESS
  6704. SA2 LWAK LWA OF KEY AREA
  6705. IX2 X1-X2
  6706. ZR X2,GNW1 IF OUT OF KEY AREA
  6707. SA1 X1 NEXT WORD
  6708. BX6 X1
  6709. SX7 A1
  6710. SA7 KEYW SAVE NEXT ADDRESS
  6711. MX1 0
  6712. EQ GNWX RETURN
  6713. GPL SPACE 4,25
  6714. ** GPL - GENERATE PARTIAL LISTING.
  6715. *
  6716. * THIS ROUTINE GENERATES PARTIAL LISTING OF THE BACKUP
  6717. * DIRECTORY. ENTRIES FOR THE FILES SPECIFIED IN THE
  6718. * PARAMETER LIST ARE LISTED. IF DATE AND TIME ARE SPECIFIED
  6719. * ONLY ENTRIES BEFORE THIS DATE/TIME ARE LISTED.
  6720. *
  6721. * ENTRY (LFNC) = NUMBER OF FILES TO BE LISTED.
  6722. * (LSTC) = 0, IF NO DATE/TIME.
  6723. * 1, IF DATE/TIME.
  6724. * (DATE) = YY/MM/DD.
  6725. * (TIME) = HH.MM.SS.
  6726. * (TDFN) = FWA OF SELECTED FILES TABLE.
  6727. *
  6728. * EXIT (X1) = 0, IF NO ERRORS.
  6729. * LISTING GENERATED.
  6730. * INFORMATIVE MESSAGE IF SELECTED FILE NOT IN DIRECTORY.
  6731. *
  6732. * USES X - 0, 1, 2, 3, 6, 7.
  6733. * A - 1, 2, 6, 7.
  6734. * B - NONE.
  6735. *
  6736. * CALLS FER, LDE, LFH, LPH, RDE, SFN.
  6737. *
  6738. * MACROS ERROR, GETN, REWINDM, RMGET, START, STORE.
  6739.  
  6740.  
  6741. GPL SUBR ENTRY/EXIT
  6742. SX6 B0 SET LISTING HEADER
  6743. RJ LPH LIST PAGE HEADER
  6744. SX6 -2
  6745. SA6 LFNP CURRENT FILE NAME POINTER
  6746. SA2 LFNC
  6747. NZ X2,GPL4 IF SELECTED FILES
  6748. REWINDM DIRR
  6749. GETN DIRR,WSAB,,TKY1 DIRECTORY HEADER
  6750. GPL1 RJ RDE READ DIRECTORY ENTRY
  6751. ZR X6,GPL2 IF ENTRY QUALIFIES
  6752. SX3 X6-1
  6753. ZR X3,GPL3 IF NEW FILE
  6754. MX1 0
  6755. SX2 X6-3
  6756. ZR X2,GPLX IF END OF FILE, RETURN
  6757. NG X2,GPLX IF VSN ENTRY, RETURN
  6758. EQ GPL1 ENTRY DOES NOT QUALIFY
  6759.  
  6760. GPL2 RJ LDE LIST ENTRY
  6761. EQ GPL1 READ NEXT ENTRY
  6762.  
  6763. GPL3 SA2 CKY2 KEY RETURNED
  6764. SX1 B1
  6765. NZ X2,GPL9 IF INCORRECT POSITION
  6766. RJ LFH LIST FILE HEADER
  6767. SA1 CKY1
  6768. BX6 X1
  6769. SA6 TKY1 SAVE CURRENT KEY
  6770. EQ GPL1 READ NEXT ENTRY
  6771.  
  6772. GPL4 SA1 LFNP CURRENT FILE NAME POINTER
  6773. SX6 X1+2 INCREMENT
  6774. SA6 A1 REPLACE POINTER
  6775. SA1 LFNC NUMBER OF FILES
  6776. LX1 1 MULTIPLY BY 2
  6777. IX2 X6-X1
  6778. MX1 0
  6779. ZR X2,GPLX IF END OF *TDFN* TABLE
  6780. SA1 TDFN+X6 LFN FROM *TDFN* TABLE
  6781. SX2 3RAAA FILE HEADER INDICATOR
  6782. BX6 X1+X2
  6783. SA6 TKY1 SAVE KEY
  6784. MX7 0
  6785. SA7 TKY2 REST OF KEY
  6786. RMGET DIRR,WSAB,0,,TKY1 GET FILE HEADER
  6787. RJ FER FIT ERROR STATUS
  6788. ZR X1,GPL5 IF LFN EXISTS
  6789. SX1 X1-1
  6790. ZR X1,GPL8 IF LFN NOT FOUND
  6791. EQ GPL10 CRM ERROR ENCOUNTERED
  6792.  
  6793. GPL5 RJ LFH LIST FILE HEADER
  6794. GPL6 RJ RDE READ DIRECTORY ENTRY
  6795. ZR X6,GPL7 IF ENTRY QUALIFIES
  6796. SX3 X6-4
  6797. ZR X3,GPL6 IF ENTRY DOES NOT QUALIFY
  6798. EQ GPL4 NEXT FILE
  6799.  
  6800. GPL7 RJ LDE LIST ENTRY
  6801. EQ GPL6 NEXT ENTRY
  6802.  
  6803. GPL8 SA1 TKY1
  6804. MX0 42
  6805. BX1 X0*X1 CLEAR HEADER INDICATOR
  6806. RJ SFN SPACE FILL NAME
  6807. SA6 HOLD5
  6808.  
  6809. ERROR EFDB,HOLD5,,GPL4 FILE NOT FOUND
  6810.  
  6811. GPL9 ERROR GPLA,,,GPLX,,E POSITION INCORRECT
  6812.  
  6813. GPL10 ERROR EITB,,,GPLX,,E CRM ERROR ENCOUNTERED
  6814.  
  6815.  
  6816. GPLA DATA 20H0 *****
  6817. DATA C*INCORRECT POSITION IN THE DIRECTORY.*
  6818. GPLAL EQU *-GPLA
  6819.  
  6820. GPR SPACE 4,25
  6821. ** GPR - GET PARAMETER.
  6822. *
  6823. * *GPR* GETS ONE PARAMETER FROM A STRING BUFFER.
  6824. * *,*, *=* AND * * ACT AS DELIMITERS. A *.* ACTS AS THE
  6825. * END OF THE BUFFER.
  6826. *
  6827. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  6828. * (X2) = NEXT WORD IN BUFFER.
  6829. * (B7) = LWA+1 OF BUFFER.
  6830. *
  6831. * EXIT (X5) = PARAMETER (BITS 59-17).
  6832. * DELIMITER (EXCLUDING *,*) (BITS 5-0).
  6833. * (A2) = NEXT ADRESS IN BUFFER.
  6834. * (X2) = NEXT WORD IN BUFFER.
  6835. * (B2) = 0 IF NO ERRORS.
  6836. * (B2) = 1 IF ERRORS.
  6837. * (B2) = NEGATIVE IF END OF BUFFER REACHED.
  6838. * (B3) = NUMBER OF CHARACTERS IN PARAMETER.
  6839. *
  6840. * USES X - 1, 2, 3, 4, 5.
  6841. * A - 2, 4.
  6842. * B - 2, 3, 4, 6.
  6843.  
  6844.  
  6845. GPR SUBR ENTRY/EXIT
  6846. MX5 0
  6847. SB3 B0
  6848. BX4 X5
  6849. SB2 60
  6850. SB4 18
  6851. GPR1 SB6 A2
  6852. GE B6,B7,GPR5 IF END OF BUFFER REACHED
  6853. SX3 X2-1R.
  6854. ZR X3,GPR5 IF *.* DELIMITER - END OF BUFFER
  6855. SX3 X2-1R,
  6856. ZR X3,GPR3 IF DELIMITER (*,*)
  6857. SX3 X2-1R/
  6858. ZR X3,GPR2 IF DELIMITER (*/*)
  6859. SX3 X2-1R=
  6860. ZR X3,GPR2 IF DELIMITER (*=*)
  6861. SX3 X2-1R
  6862. ZR X3,GPR3 IF DELIMITER (* *)
  6863.  
  6864. * CHECK FOR LEGAL CHARACTERS.
  6865.  
  6866. ZR X2,GPR6 IF CHARACTER = *00*
  6867. SX3 X2-1R+
  6868. PL X3,GPR6 IF NOT ALPHA/NUMERIC
  6869. LX5 6
  6870. BX5 X5+X2 STORE CHARACTER
  6871. SB3 B3+B1
  6872. SB2 B2-6 DECREASE SHIFT COUNT
  6873. LT B2,B4,GPR6 IF DIRECTIVE TOO LONG
  6874. SA2 A2+B1 ADVANCE
  6875. EQ GPR1 LOOP FOR NEXT CHARACTER
  6876.  
  6877. GPR2 SA4 A2+B1
  6878. SX3 X4-1R,
  6879. BX4 X2 SAVE DELIMITER
  6880. NZ X3,GPR3 IF NOT ( , )
  6881. SA2 A2+B1
  6882. GPR3 MX1 0 SET NO ERRORS
  6883. GPR4 LX5 B2 SHIFT
  6884. BX5 X5+X4 STORE *=* AND */* DELIMITERS
  6885. SA2 A2+B1 ADVANCE BUFFER
  6886. SB2 X1
  6887. EQ GPRX RETURN
  6888.  
  6889. GPR5 SX1 -1 SET END OF BUFFER
  6890. EQ GPR4 RETURN
  6891.  
  6892. GPR6 SB2 B1 SET ERRORS
  6893. EQ GPRX RETURN
  6894. GRM SPACE 4,10
  6895. ** GRM - GET *RMKDEF* CARDS FROM THE XXJ.
  6896. *
  6897. * *GRM* - READS THE *XXJ* FILE SEARCHING FOR *RMKDEF* CARDS
  6898. * THAT MATCH THE DIRECTIVE FILE NAME. THE *ZZZZZDR* FILE
  6899. * IS CREATED TO HOLD THE *RMKDEF* CARDS.
  6900. *
  6901. * EXTRY -(XXPFN) - PERMANENT FILE NAME FROM DIRECTIVE.
  6902. * (XXJ) - FILE ATTACHED.
  6903. *
  6904. * EXIT (XXXXXDR) - FILE CREATED WITH *RMKDEF* CARDS.
  6905. * (X1) = 0, IF NO ERRORS.
  6906. *
  6907. * USES X - 0, 1, 2, 3, 4, 5, 6.
  6908. * A - 2, 3, 5, 6.
  6909. * B - 2, 5, 7.
  6910. *
  6911. * CALLS PAC, UPC.
  6912. *
  6913. * MACROS ERROR, READ, READC, REWIND, WRITEC, WRITER.
  6914.  
  6915.  
  6916. GRM SUBR ENTRY/EXIT
  6917. REWIND XXJ,R
  6918. READ XXJ SET READ FUNCTION
  6919. GRM1 READC XXJ,GXJA,8
  6920. NZ X1,GRM7 IF *CRM* STATEMENT NOT FOUND
  6921. SA5 GXJA
  6922. SX3 3RCRM SEARCH FOR *CRM* CARD
  6923. MX0 18
  6924. LX3 59-17
  6925. BX3 X3-X5
  6926. BX3 X0*X3
  6927. ZR X3,GRM2 IF *CRM* CARD
  6928. EQ GRM1 LOOP
  6929.  
  6930. * PROCESS *CRM* CARD.
  6931.  
  6932. GRM2 SB7 GXJP
  6933. RJ UPC UNPACK CARD
  6934. MX0 42
  6935. SA2 B7+1 FILE NAME FROM *CRM* CARD
  6936. BX2 X0*X2
  6937. SA3 XXPFN FILE NAME FROM DIRECTIVE
  6938. BX3 X0*X3
  6939. IX4 X2-X3
  6940. NZ X4,GRM1 IF FILE NAME DOES NOT MATCH
  6941.  
  6942. * SEARCH FOR *RMKDEF*.
  6943.  
  6944. GRM3 READC XXJ,GXJA,8
  6945. ZR X1,GRM5 IF BUFFER TRANSFER COMPLETE
  6946. SA2 GRMA *RMKDEF* FLAG
  6947. ZR X2,GRM7 IF NO *RMKDEF'S* ENCOUNTERED
  6948. GRM4 WRITER ZZZZZDR,R
  6949. REWIND ZZZZZDR,R
  6950. MX1 0
  6951. EQ GRMX RETURN
  6952.  
  6953. GRM5 SA2 GRMB CHECK FOR *RMKDEF*
  6954. SA5 GXJA
  6955. MX0 36
  6956. BX3 X2-X5
  6957. BX3 X0*X3
  6958. NZ X3,GRM6 IF NO *RMKDEF* CARD
  6959. SB7 GXJP
  6960. RJ UPC UNPACK CONTROL CARD
  6961. SA2 B7+1 FILE NAME FROM *RMKDEF* CARD
  6962. MX0 42
  6963. BX2 X0*X2
  6964. SA3 XXPFN
  6965. BX3 X0*X3
  6966. IX4 X2-X3
  6967. NZ X4,GRM7 IF FILE NAMES DO NOT MATCH
  6968. SA3 GRMD
  6969. BX6 X3
  6970. SA6 A2 REPLACE FILE NAME WITH *FET* NAME
  6971. SA3 GRMB
  6972. BX6 X3
  6973. SA6 B7
  6974. SB5 B7+
  6975. RJ PAC PACK CONTROL CARD
  6976. MX6 0
  6977. SB2 B2+B1
  6978. SA6 GXJP+B2
  6979.  
  6980. * PROCESS *RMKDEF* CARDS
  6981.  
  6982. WRITEC ZZZZZDR,GXJP
  6983. SX6 1
  6984. SA6 GRMA SET *RMKDEF* FLAG
  6985. EQ GRM3 PROCESS NEXT CARD
  6986.  
  6987. GRM6 SA2 GRMA
  6988. ZR X2,GRM3 IF *RMKDEF* NOT FOUND YET
  6989. EQ GRM4 END OF PROCESSING
  6990.  
  6991. GRM7 ERROR GRMC,,,GRMX,,E ERROR IN BUILDING *RMKDEF* FILE
  6992.  
  6993. GRMA CON 0 *RMKDEF* FLAG
  6994. GRMB DATA C*RMKDEF*
  6995. GRMC DATA 20H0 *****
  6996. DATA C*ERROR IN BUILDING RMKDEF FILE.*
  6997. GRMCL EQU *-GRMC
  6998. GRMD DATA C*ZZZDATA*
  6999. GXJ SPACE 4,25
  7000. ** GXJ - GET *XXJ* FILE (XX=DATA BASE).
  7001. *
  7002. * *GXJ* GETS THE *XXJ* FILE (XX=DATA BASE) FROM *TAF*-S
  7003. * USER INDEX AND PROCESSES USER (OR ACCOUNT) AND *CRM* CARDS
  7004. * (FOR MAXIMUM RECORD LENGTH AND MAXIMUM KEY LENGTH ONLY).
  7005. * A PREVIOUSLY OPENED *XXJ* FILE IS RETURNED.
  7006. * THE OPENED *XXJ* FILE IS REWOUND AFTER PROCESSING.
  7007. *
  7008. * ENTRY (X5) = DATA BASE NAME (12/XX,48/0).
  7009. *
  7010. * EXIT (X1) = 0, IF NO ERRORS.
  7011. * (X1) = 1, IF ERRORS ENCOUNTERED.
  7012. * (XXMRL) = MAXIMUM RECORD LENGTH IN DATA BASE.
  7013. * (XXMKL) = MAXIMUM KEY LENGTH.
  7014. * (XXUSER) = CURRENT USER NAME.
  7015. * (XXPW) = CURRENT PASSWORD.
  7016. * (XXFAM) = CURRENT FAMILY.
  7017. *
  7018. * USES X - 0, 1, 2, 3, 5, 6, 7.
  7019. * A - 1, 2, 3, 5, 6, 7.
  7020. * B - 6, 7.
  7021. *
  7022. * CALLS ALC, CER, CMM, DXB, UPC.
  7023. *
  7024. * MACROS ERROR, GET, GETPFP, READ, READC, RETURN, REWIND,
  7025. * SETPFP, WRITEW.
  7026.  
  7027.  
  7028. GXJ SUBR ENTRY/EXIT
  7029. BX0 X5 SAVE DATA BASE NAME
  7030. RETURN XXJ,R RETURN PREVIOUS XXJ FILE
  7031. GXJ1 SX1 1RJ
  7032. SX6 B1
  7033. LX1 -18
  7034. IX5 X0+X1 XXJ (WHERE XX=DATA BASE NAME)
  7035. BX7 X5+X6
  7036. SA7 XXJ XXJ NAME IN FET
  7037. LX6 44 ERROR PROCESSING BIT
  7038. SA1 A7+B1
  7039. BX6 X6+X1
  7040. SA6 A1
  7041. GETPFP GXJA SAVE CURRENT FAMILY NAME
  7042. SETPFP GXJV CHANGE TO FAMILY WHERE XXJ FILE RESIDES
  7043. SA3 =0L"USNM"
  7044. GET XXJ,,A3 GET XXJ FILE FROM *TAF-S* USER INDEX
  7045. SX2 10B *SETPFP* FLAG BIT
  7046. SA1 GXJA
  7047. BX7 X2+X1
  7048. SA7 A1
  7049. SETPFP GXJA RESET TO CURRENT FAMILY
  7050. SA5 XXJ
  7051. SX2 XXJ
  7052. RJ CER CHECK ERROR
  7053. NZ X1,GXJ7 IF ERROR FOUND
  7054. MX0 42
  7055. BX5 X0*X5
  7056.  
  7057. * PROCESS XXJ HEADER.
  7058.  
  7059. REWIND XXJ,R
  7060. READ XXJ
  7061. READC XXJ,GXJA,8 READ FIRST STATEMENT ON XXJ FILE
  7062. SA1 GXJA
  7063. RJ ZFN ZERO FILL NAME
  7064. BX7 X1-X5
  7065. NZ X7,GXJ8 IF HEADER ON *XXJ* FILE DOES NOT MATCH
  7066.  
  7067. * PROCESS *ACCOUNT* OR *USER* CARD.
  7068.  
  7069. READC XXJ,GXJA,8 READ SECOND STATEMENT ON XXJ FILE
  7070. SB7 GXJP FWA TO UNPACK CARD
  7071. SA5 GXJA FIRST WORD TO UNPACK
  7072. RJ UPC UNPACK CONTROL CARD
  7073. NZ X6,GXJ9 IF ERROR ON UNPACK
  7074. MX3 42
  7075. SA1 B7
  7076. BX1 X3*X1 CHECK FOR ACCOUNT NUMBER
  7077. SA3 B7+B1 USER NAME
  7078. SA2 GXJB
  7079. SA5 GXJC USER CARD
  7080. BX2 X1-X2
  7081. BX5 X1-X5
  7082. ZR X2,GXJ3 IF ACCOUNT STATEMENT FOUND
  7083. NZ X5,GXJ10 IF NO USER STATEMENT FOUND
  7084. GXJ3 BX6 X3
  7085. SA6 XXUSER STORE USER NAME
  7086. SA3 A3+B1 PASSWORD
  7087. BX7 X3
  7088. SA7 XXPW STORE PASSWORD
  7089. SA3 A3+B1 POSSIBLE FAMILY
  7090. BX7 X3
  7091. SA7 XXFAM STORE FAMILY
  7092.  
  7093. * PROCESS *BRF* CARD.
  7094.  
  7095. READC XXJ,GXJA,8 READ POSSIBLE *BRF* CARD
  7096. NZ X1,GXJ20 IF NO *BRF* CARD
  7097. SB7 GXJP FWA TO UNPACK
  7098. SA5 GXJA FIRST WORD TO UNPACK
  7099. RJ UPC UNPACK STATEMENT IMAGE
  7100. NZ X6,GXJ20 IF ERROR IN UNPACKING CARD
  7101. SA5 GXJA FIRST PARAMETER UNPACKED
  7102. MX0 18 MASK FOR 3 CHARACTERS
  7103. SX3 3RBRF CHARACTER STRING *BRF*
  7104. LX3 59-17 POSITION *BRF*
  7105. BX3 X3-X5 COMPARE WITH THE INPUT CARD
  7106. BX3 X0*X3 ONLY 3 CHARACTERS
  7107. NZ X3,GXJ20 IF NO *BRF* STATEMENT FOUND
  7108. SX1 2R00 SET NUMBER OF *BRF-S* TO ZERO
  7109. LX1 59-11 POSITION DIGITS
  7110. ZR B6,GXJ3.1 IF NO PARAMETER - ASSUME 0
  7111. SA1 GXJP+1 NUMBER FROM *BRF* CARD
  7112. GXJ3.1 SB7 B0+ SET OCTAL BASE FOR CONVERSION
  7113. MX0 48 MASK FOR PARAMETER
  7114. BX5 X0*X1 REMOVE TERMINATOR
  7115. RJ DXB CONVERT TO BINARY
  7116. NZ X4,GXJ21 IF ERROR IN CONVERSION
  7117. SX3 BMAX
  7118. IX5 X3-X6
  7119. NG X5,GXJ21 IF VALUE TOO LARGE
  7120. SA6 XXBRF SAVE NUMBER OF *BRF-S*
  7121.  
  7122. * SKIP ALL CARDS EXCEPT *CRM* CARDS.
  7123.  
  7124. SX6 B1
  7125. SA6 GXJD SET FLAG FOR NO CRM CARD
  7126. GXJ4 READC XXJ,GXJA,8 READ NEXT CARD
  7127. NZ X1,GXJ6 IF ALL STATEMENTS ON XXJ READ
  7128. SA5 GXJA CHECK FOR CRM CARD
  7129. MX0 18
  7130. SX3 3RCRM
  7131. LX3 59-17
  7132. BX3 X3-X5
  7133. BX3 X0*X3
  7134. NZ X3,GXJ4 IF NOT CRM CARD
  7135.  
  7136. * PROCESS *CRM* STATEMENT FOR FILENAME AND RECORD LENGTH.
  7137.  
  7138. SX6 B0
  7139. SA6 GXJD CLEAR FLAG FOR NO CRM CARD
  7140. SB7 GXJP FWA TO UNPACK CARD
  7141. RJ UPC UNPACK CARD
  7142. NZ X6,GXJ11 IF ERROR IN ARGUMENTS
  7143. SA1 XXJ
  7144. LE B6,B1,GXJ12 IF NO FILE NAME
  7145. SA2 B7+B1 FILE NAME FROM CRM CARD
  7146. MX6 12 MASK FOR DATA BASE
  7147. BX1 X6*X1 DATA BASE
  7148. BX3 X6*X2 DATA BASE OF FILE
  7149. IX3 X3-X1
  7150. NZ X3,GXJ13 IF INCORRECT DATA BASE
  7151.  
  7152. * CHECK FOR RECOVERABLE FILE.
  7153.  
  7154. SB7 B6-10
  7155. LT B7,GXJ4 IF RECOVERABLE PARAMETER NOT SPECIFIED
  7156. SA5 A2+8 RECOVERABLE PARAMETER
  7157. ZR X5,GXJ4 IF NOT SPECIFIED, NON-RECOVERABLE
  7158. SX3 1RN
  7159. MX0 6
  7160. LX3 59-5
  7161. BX5 X0*X5
  7162. IX3 X3-X5
  7163. ZR X3,GXJ4 IF NOT RECOVERABLE
  7164. SX3 1RR
  7165. LX3 59-5
  7166. IX3 X3-X5
  7167. NZ X3,GXJ22 IF INCORRECT PARAMETER
  7168. SB7 GXJP RESET B7 FOR ENTRY TO *DXB*
  7169.  
  7170. * PROCESS MAXIMUM RECORD LENGTH.
  7171.  
  7172. SB6 B6-7
  7173. LT B6,GXJ14 IF NO MAXIMUM RECORD LENGTH SPECIFIED
  7174. SA5 A2+5 MAXIMUM RECORD LENGTH
  7175. RJ DXB DISPLAY CODE TO BINARY
  7176. NZ X4,GXJ15 IF INCORRECT LENGTH
  7177. ZR X6,GXJ15 IF ZERO RECORD LENGTH
  7178. SA5 XXMRL GET PREVIOUS MAXIMUM RECORD LENGTH
  7179. IX5 X5-X6
  7180. PL X5,GXJ5 IF NOT GREATER THAN MAXIMUM LENGTH
  7181. SA6 A5 STORE NEW MAXIMUM LENGTH
  7182. GXJ5 SB6 B6-B1
  7183. LT B6,GXJ16 IF NO KEY LENGTH SPECIFIED
  7184. SA5 A2+6 MAX KEY LENGTH
  7185. RJ DXB DISPLAY TO BINARY
  7186. NZ X4,GXJ17 IF INCORRECT LENGTH
  7187. ZR X6,GXJ17 IF ZERO KEY LENGTH
  7188. SA5 XXMKL GET PREVIOUS LENGTH
  7189. IX5 X5-X6
  7190. PL X5,GXJ4 IF PREVIOUS GREATER THAN CURRENT
  7191. SA6 A5+ NEW MAX
  7192. EQ GXJ4 PROCESS NEXT CARD
  7193.  
  7194. * *XXJ* FILE PROCESSED.
  7195.  
  7196. GXJ6 REWIND XXJ,R REWIND *XXJ* FILE
  7197. SA2 GXJD FLAG FOR NO CRM CARD
  7198. NZ X2,GXJ18 IF NO CRM STATEMENT FOUND
  7199. USERNUM GXJA GET USER NAME
  7200. SA1 XXUSER USER NAME FROM XXJ FILE
  7201. SA2 GXJA USER NAME FROM USER CARD
  7202. BX1 X1-X2
  7203. ZR X1,GXJX IF USER NAME MATCHES
  7204. MESSAGE GXJRH,,R
  7205. EQ GXJ19 EXIT
  7206.  
  7207.  
  7208. * ERROR EXITS.
  7209.  
  7210. GXJ7 ERROR GXJE,XXJ,,GXJX,,E *XXJ FILE NOT FOUND*
  7211.  
  7212. GXJ8 ERROR GXJF,XXJ,,GXJX,,E *MISSING HEADER WORD ON XXJ*
  7213.  
  7214. GXJ9 ERROR GXJG,,GXJA,GXJX,,E *ERROR IN ACCOUNT/USER CARD*
  7215.  
  7216. GXJ10 ERROR GXJH,XXJ,,GXJX,,E *NO ACCOUNT/USER STATEMENT IN XXJ*
  7217.  
  7218. GXJ11 ERROR GXJI,,GXJA,GXJX,,E *ERROR IN CRM STATEMENT ARGUMENTS*
  7219.  
  7220. GXJ12 ERROR GXJJ,,GXJA,GXJX,,E *NO FILE NAME SPECIFIED ON CRM*
  7221.  
  7222. GXJ13 ERROR GXJK,XXJ,,GXJX,,E *DATA BASE NAME IN CRM FILE NAME*
  7223.  
  7224. GXJ14 ERROR GXJL,,GXJA,GXJX,,E *NO MRL SPECIFIED*
  7225.  
  7226. GXJ15 ERROR GXJM,,GXJA,GXJX,,E *MRL PARAMETER NOT ON CRM CARD*
  7227.  
  7228. GXJ16 ERROR GXJN,,GXJA,GXJX,,E *NO KEY LENGTH SPECIFIED ON CRM*
  7229.  
  7230. GXJ17 ERROR GXJO,,GXJA,GXJX,,E *KL PARAMETER NOT ON CRM CARD*
  7231.  
  7232. GXJ18 ERROR GXJQ,XXJ,,GXJX,,E *NO CRM STATEMENT FOUND IN FILE*
  7233.  
  7234. GXJ19 ERROR GXJR,,,DMR6,,E *USER NOT VALIDATED FOR ACCESS*
  7235.  
  7236. GXJ20 ERROR GXJS,XXJ,,GXJX,,E *NO BRF STATEMENT FOUND IN FILE.*
  7237.  
  7238. GXJ21 ERROR GXJT,,GXJA,GXJX,,E *ERROR IN BRF PARAMETER IN XXJ*
  7239.  
  7240. GXJ22 ERROR GXJU,,GXJA,GXJX,,E *RECOVERABLE PARAMETER INCORRECT*
  7241.  
  7242. * ERROR MESSAGES.
  7243.  
  7244. GXJE DATA 20H0 *****
  7245. DATA C*XXJ FILE NOT FOUND.*
  7246. GXJEL EQU *-GXJE
  7247. GXJF DATA 20H0 *****
  7248. DATA C*MISSING HEADER WORD ON XXJ FILE.*
  7249. GXJFL EQU *-GXJF
  7250. GXJG DATA 20H0 *****
  7251. DATA C*ERROR IN USER STATEMENT ARGUMENT.*
  7252. GXJGL EQU *-GXJG
  7253. GXJH DATA 20H0 *****
  7254. DATA C*NO USER STATEMENT IN XXJ FILE.*
  7255. GXJHL EQU *-GXJH
  7256. GXJI DATA 20H0 *****
  7257. DATA C*ERROR IN CRM STATEMENT ARGUMENTS.*
  7258. GXJIL EQU *-GXJI
  7259. GXJJ DATA 20H0 *****
  7260. DATA C*NO FILE NAME SPECIFIED ON CRM CARD.*
  7261. GXJJL EQU *-GXJJ
  7262. GXJK DATA 20H0 *****
  7263. DATA C*DATA BASE NAME IN CRM FILE NAME DOES NOT MATCH XXJ.*
  7264. GXJKL EQU *-GXJK
  7265. GXJL DATA 20H0 *****
  7266. DATA C*NO MAXIMUM RECORD LENGTH SPECIFIED ON CRM CARD.*
  7267. GXJLL EQU *-GXJL
  7268. GXJM DATA 20H0 *****
  7269. DATA C*MRL PARAMETER ON CRM STATEMENT NOT SPECIFIED PROPERLY
  7270. ,.*
  7271. GXJML EQU *-GXJM
  7272. GXJN DATA 20H0 *****
  7273. DATA C*NO KEY LENGTH SPECIFIED ON CRM CARD.*
  7274. GXJNL EQU *-GXJN
  7275. GXJO DATA 20H0 *****
  7276. DATA C*KL PARAMETER ON CRM STATEMENT NOT SPECIFIED PROPERLY.
  7277. ,*
  7278. GXJOL EQU *-GXJO
  7279. GXJQ DATA 20H0 *****
  7280. DATA C*NO CRM STATEMENT FOUND IN XXJ FILE.*
  7281. GXJQL EQU *-GXJQ
  7282.  
  7283. GXJR DATA 20H0 *****
  7284. GXJRH DATA C*USER NOT VALIDATED FOR ACCESS.*
  7285. GXJRL EQU *-GXJR
  7286.  
  7287. GXJS DATA 20H *****
  7288. DATA C*NO BRF STATEMENT FOUND IN XXJ FILE.*
  7289. GXJSL EQU *-GXJS
  7290.  
  7291. GXJT DATA 20H *****
  7292. DATA C*ERROR IN BRF PARAMETER IN XXJ FILE.*
  7293. GXJTL EQU *-GXJT
  7294.  
  7295. GXJU DATA 20H *****
  7296. DATA C* RECOVERABLE FILE PARAMETER MUST BE -R- OR -N-.*
  7297. GXJUL EQU *-GXJU
  7298.  
  7299. * MISCELLANEOUS FIELDS.
  7300.  
  7301. GXJA BSS 8 WORKING BUFFER
  7302. GXJB DATA 0LACCOUNT
  7303. GXJC DATA 0LUSER
  7304. GXJD BSSZ 1 FLAG FOR NO CRM CARD
  7305. GXJP BSS 15 STORAGE FOR UNPACKING CARD
  7306.  
  7307. * PARAMETER BLOCK FOR *SETPFP*.
  7308.  
  7309. GXJV VFD 42/0L"FMLY",14/,4/10B FAMILY WHERE XXJ FILE RESIDES
  7310. BSS 2
  7311. IFV SPACE 4,10
  7312. ** IFV - INITIALIZE FILES AND VARIABLES.
  7313. *
  7314. * ENTRY (B5) = NUMBER OF ENTRIES IN *TDFN* TABLE.
  7315. *
  7316. * EXIT (X1) = 0, IF NO ERRORS.
  7317. * (LFNC) = 0, ALL FILES WILL BE PROCESSED.
  7318. * N, SELECTIVE FILES WILL BE PROCESSED.
  7319. * BACKUP DIRECTORY AND *XXJ* ARE ATTACHED.
  7320. *
  7321. * USES X - 0, 1, 2, 5, 6, 7.
  7322. * A - 1, 2, 6, 7.
  7323. * B - 2, 3, 4, 5.
  7324. *
  7325. * CALLS ACF, GXJ.
  7326. *
  7327. * MACROS ERROR, OPENM.
  7328.  
  7329.  
  7330. IFV SUBR ENTRY/EXIT
  7331. SB2 B0
  7332. SB3 B0 INITIAL INDEX INTO *TDFN* TABLE
  7333. SB4 B5-2 NUMBER OF ENTRIES IN *TDFN* TABLE
  7334. SX1 B1
  7335. NG B4,IFV4 IF NO PARAMETERS
  7336. MX0 12
  7337. IFV1 SA2 TDFN+B3 ENTRY FROM *TDFN* TABLE
  7338. BX5 X0*X2 EXTRACT DATA BASE NAME
  7339. BX6 X2-X5
  7340. NZ X6,IFV2 IF NOT DATA BASE NAME
  7341. SB2 B1 SET DATA BASE NAME FLAG
  7342. IFV2 SB3 B3+2 INCREMENT INDEX
  7343. NE B3,B5,IFV1 IF MORE ENTRIES
  7344. EQ B2,IFV3 IF NO DATA BASE NAME
  7345. SB4 2
  7346. SB5 B5-2 ADJUST TO ZERO FOR ALL FILES
  7347. NE B3,B4,IFV5 IF DATA BASE NAME NOT THE ONLY PARAMETER
  7348. IFV3 SX6 B5 NUMBER OF ENTRIES
  7349. AX6 1 ENTRIES ARE TWO WORDS LONG
  7350. SA6 LFNC SAVE NUMBER OF FILES
  7351. SA1 TDFN
  7352. BX5 X0*X1 GET DATA BASE NAME
  7353. BX6 X1
  7354. SA6 XXPFN SAVE FOR ATTACH OF BACKUP DIRECTORY
  7355. SA2 HDR1+6 LISTING HEADER
  7356. LX2 59-17
  7357. BX7 -X0*X2
  7358. BX7 X5+X7 INSERT DATA BASE NAME
  7359. LX7 17-59
  7360. SA7 A2
  7361. RJ GXJ VERIFY DATA BASE IDENTIFIER - GET XXJ FILE
  7362. NZ X1,IFVX IF DATA BASE DOES NOT EXIST
  7363. RJ ACF ATTACH BACKUP DIRECTORY
  7364. MX1 0
  7365. EQ IFVX RETURN
  7366.  
  7367. IFV4 ERROR IFVA,,,IFVX,,E DATA BASE NAME OR LFN MISSING
  7368.  
  7369. IFV5 ERROR IFVB,,,IFVX,,E DATA BASE AND FILES SPECIFIED
  7370.  
  7371. IFVA DATA 20H0 *****
  7372. DATA C*DATA BASE NAME OR FILE NAME MISSING.*
  7373. IFVAL EQU *-IFVA
  7374.  
  7375. IFVB DATA 20H0 *****
  7376. DATA C*DATA BASE NAME AND FILE NAME(S) BOTH SPECIFIED.*
  7377. IFVBL EQU *-IFVB
  7378. IGN SPACE 4,30
  7379. ** IGN - IGNORE AFTER IMAGE LOG ENTRIES.
  7380. *
  7381. * *IGN* CRACKS THE *IGNORE* DIRECTIVE STATEMENT AND THROUGH
  7382. * *SPR* BUILDS A TABLE OF TASK NAMES AND SEQUENCE NUMBERS
  7383. * THAT ARE TO BE IGNORED ON AN UPDATE OR RECOVER. THE
  7384. * TABLE *TTIG* CONTAINS ENTRIES FOR BOTH *TN* AND *TS*.
  7385. *
  7386. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  7387. * (X2) = NEXT WORD IN BUFFER.
  7388. * (X6) = OPERATION FLAG.
  7389. * (TYPFLG) = 0 - IF EXIT TO RECOVER PROCESSOR.
  7390. * NE. 0 - IF EXIT TO UPDATE PROCESSOR.
  7391. * (SDATE) = SAVED DATE.
  7392. * (STIME) = SAVED TIME.
  7393. * (SDATE1) = SAVED DATE1
  7394. * (STIME1) = SAVED TIME1.
  7395. * (SVSN) = SAVED VSN.
  7396. * (STDFN) = SAVED PFN.
  7397. *
  7398. * EXIT EXIT TO SPECIFIED PROCESSOR.
  7399. * (DATE) = RESTORED DATE.
  7400. * (TIME) = RESTORED TIME.
  7401. * (DATE1) = RESTORED DATE1.
  7402. * (TIME1) = RESTORED TIME1.
  7403. * (TVSN) = RESTORED VSN.
  7404. * (TDFN) = RESTORED PFN.
  7405. *
  7406. * USES A - 2, 6.
  7407. * X - 2, 4, 6.
  7408. * B - NONE.
  7409.  
  7410.  
  7411. IGN BSS 0 ENTRY
  7412. RJ SPR SET PARAMETERS
  7413. SX4 3RGI*
  7414. RJ CND CHECK NEXT DIRECTIVE
  7415. ZR X1,IGN1 IF DONE - ACCUMULATE TIT ENTRIES
  7416. SA2 SDATE
  7417. BX6 X2
  7418. SA6 DATE RESTORE DATE
  7419. SA2 STIME
  7420. BX6 X2
  7421. SA6 TIME RESTORE TIME
  7422. SA2 SDATE1
  7423. BX6 X2
  7424. SA6 DATE1 RESTORE DATE1
  7425. SA2 STIME1
  7426. BX6 X2
  7427. SA6 TIME1 RESTORE TIME1
  7428. SA2 SVSN
  7429. BX6 X2
  7430. SA6 TVSN RESTORE VSN
  7431. SA2 STDFN
  7432. BX6 X2
  7433. SA6 TDFN RESTORE PFN
  7434. EQ UPD2 EXIT TO UPDATE
  7435.  
  7436. IGN1 CLOSEM DFIT,U
  7437. RJ RAF RETURN ALL FILES
  7438. EQ DMR3 RETURN
  7439. PPS SPACE 4,20
  7440. ** LBL - LOAD BLOCK.
  7441. *
  7442. * COPY THE SPECIFIED TAPE FILE TO THE FILE GIVEN.
  7443. * THE TAPE FILE MUST BE ASSIGNED, OPENED AND POSITIONED
  7444. * CORRECTLY.
  7445. *
  7446. * ENTRY TAPE (TP) IS OPENED AND POSITIONED.
  7447. * (X4) = FET ADDRESS OF RECIPIENT FILE.
  7448. *
  7449. * EXIT (X1) = 0 IF NO ERRORS.
  7450. *
  7451. * USES X - 1, 4, 6.
  7452. * A - 1, 4, 6.
  7453. * B - NONE.
  7454. *
  7455. * CALLS DER.
  7456. *
  7457. * MACROS ERROR, READ, READW, RECALL, WRITEF, WRITER,
  7458. * WRITEW.
  7459.  
  7460.  
  7461. LBL SUBR ENTRY/EXIT
  7462. BX6 X4
  7463. SA6 HOLD SAVE FET ADDRESS
  7464. RECALL X4
  7465. RECALL TP
  7466. LBL1 READ TP,R
  7467. LBL2 READW TP,WBUF,WBUFL
  7468. BX6 X1
  7469. SA6 HOLD1 SAVE STATUS
  7470. RJ DER DETECT END OF TAPE
  7471. NG X1,LBL1 IF END OF TAPE
  7472. NZ X1,LBLX IF ERROR
  7473. SA1 HOLD1 GET STATUS
  7474. SX6 X1-WBUF-1
  7475. NZ X6,LBL3 IF NOT ONE WORD RECORD
  7476. SX6 3REND
  7477. SA4 XXPFN
  7478. BX6 X6+X4
  7479. SA4 WBUF
  7480. BX6 X4-X6
  7481. ZR X6,LBL5 IF TRAILER RECORD FOUND
  7482. LBL3 ZR X1,LBL4 IF NO EOR/EOF
  7483. NG X1,LBL6 IF EOF/EOI - NO TRAILER RECORD FOUND
  7484.  
  7485. * EOR ENCOUNTERED.
  7486.  
  7487. SA4 HOLD RESTORE FET ADDRESS
  7488. WRITEW X4,WBUF,X1-WBUF
  7489. SA4 HOLD
  7490. WRITER X4,R
  7491. EQ LBL1 GET NEXT RECORD
  7492.  
  7493. LBL4 SA4 HOLD
  7494. WRITEW X4,WBUF,WBUFL
  7495. EQ LBL2 GET NEXT BLOCK
  7496.  
  7497. LBL5 SA4 HOLD
  7498. WRITEF X4,R
  7499. SX1 B0
  7500. EQ LBLX EXIT NORMAL
  7501.  
  7502. LBL6 ERROR LBLA,,,LBLX,,E LBL - CIO ERROR
  7503.  
  7504. LBLA DATA 20H0 *****
  7505. DATA C*LBL - CIO ERROR.*
  7506. LBLAL EQU *-LBLA
  7507. LDE SPACE 4,15
  7508. ** LDE - LIST DIRECTORY ENTRY.
  7509. *
  7510. * ENTRY (PLIN) = LINE BUFFER.
  7511. * (PLINL) = LINE LENGTH.
  7512. * (JOBORG) = 0, IF INTERACTIVE ORIGIN.
  7513. *
  7514. * EXIT LINE LISTED, LINE COUNT ADJUSTED.
  7515. *
  7516. * USES X - 1, 2, 6.
  7517. * A - 1, 6.
  7518. * B - NONE.
  7519. *
  7520. * CALLS ALC, LPH.
  7521. *
  7522. * MACROS WRITEC, WRITER.
  7523.  
  7524.  
  7525. LDE SUBR ENTRY/EXIT
  7526. SA1 HDRC HEADER CONTROL
  7527. ZR X1,LDE1 IF FILE ENTRY HEADER PRINTED
  7528. MX6 0
  7529. SA6 HDRC
  7530. SX6 4 SET FILE ENTRY HEADER
  7531. RJ LPH LIST PAGE HEADER
  7532. LDE1 SA1 JOBORG JOB ORIGIN
  7533. SX2 PLIN FWA OF LINE BUFFER
  7534. NZ X1,LDE2 IF NOT INTERACTIVE ORIGIN
  7535. SX2 X2+1 SKIP CARRIAGE CONTROL WORD
  7536. LDE2 WRITEC O,X2 PRINT LINE
  7537. WRITER O
  7538. SX2 B1
  7539. RJ ALC ADVANCE LINE COUNT
  7540. EQ LDEX RETURN
  7541. LDH SPACE 4,20
  7542. ** LDH - LIST DIRECTORY HEADER.
  7543. *
  7544. * THIS ROUTINE PRINTS SEVERAL LISTING HEADERS AND
  7545. * BACKUP DIRECTORY HEADER.
  7546. *
  7547. * ENTRY (A0) = FWA OF BACKUP DIRECTORY FIT.
  7548. * (X6) = 0, IF ALL PAGE HEADINGS REQUIRED.
  7549. * 1, IF ONLY DIRECTORY HEADER REQUIRED.
  7550. *
  7551. * EXIT HEADERS PRINTED, LINE COUNT ADJUSTED.
  7552. *
  7553. * USES X - 0, 1, 2, 5, 6, 7.
  7554. * A - 1, 5, 6, 7.
  7555. * B - NONE.
  7556. *
  7557. * CALLS ALC, BFL, CDD, LDE, LPH.
  7558. *
  7559. * MACROS EDATE, ETIME, GETN, REWINDM.
  7560.  
  7561.  
  7562. LDH SUBR ENTRY/EXIT
  7563. NZ X6,LDH1 IF DIRECTORY HEADER ONLY
  7564. SX6 B0 SET LISTING HEADER
  7565. RJ LPH LIST PAGE HEADER
  7566. LDH1 SX6 B1 SET DIRECTORY HEADER - FIRST LINE
  7567. RJ LPH LIST PAGE HEADER
  7568. SX6 B1+B1 SET DIRECTORY HEADER - SECOND LINE
  7569. RJ LPH LIST PAGE HEADER
  7570.  
  7571. REWINDM A0
  7572. GETN A0,WSAB READ DIRECTORY HEADER
  7573. RJ BFL BLANK FILL LINE
  7574. SA5 WSAB+2 PACKED DATE/TIME
  7575. ETIME X5
  7576. SA6 PLIN+2 UNPACKED TIME
  7577. AX5 18
  7578. EDATE X5
  7579. SA6 PLIN+1 UNPACKED DATE
  7580. SA5 WSAB+3 *BRF* UNUSABLE WORD
  7581. MX0 -24
  7582. BX1 -X0*X5 *BRF* DOWN COUNT
  7583. RJ CDD CONVERT TO DISPLAY CODE
  7584. LX6 53-11
  7585. SA6 PLIN+5
  7586. MX0 36
  7587. BX5 X0*X5 PACKED DATE/TIME OF *BRF* DOWN
  7588. ZR X5,LDH2 IF NO DATE/TIME
  7589. LX5 36
  7590. ETIME X5 UNPACK TIME
  7591. SA6 PLIN+4
  7592. AX5 18
  7593. EDATE X5 UNPACK DATE
  7594. SA6 PLIN+3
  7595. LDH2 SA1 WSAB+4 PREALLOCATION PERCENTAGE
  7596. MX0 -18
  7597. BX1 -X0*X1
  7598. RJ CDD CONVERT TO DISPLAY CODE
  7599. LX6 6
  7600. MX0 30
  7601. SA1 PLIN+5
  7602. BX7 X0*X1
  7603. BX6 -X0*X6
  7604. BX6 X6+X7
  7605. SA6 PLIN+5
  7606. SA1 WSAB+5 NUMBER OF BACKUP COPIES TO RETAIN
  7607. RJ CDD CONVERT BINARY TO DISPLAY
  7608. LX6 35-11
  7609. SA6 PLIN+6
  7610. SA1 WSAB+4 FIRST *ARF* VSN
  7611. MX0 36
  7612. BX1 X0*X1
  7613. ZR X1,LDH3 IF NO VSN
  7614. RJ SFN SET FILE NAME
  7615. SA6 PLIN+7
  7616. LDH3 MX7 0
  7617. SA7 PLIN+8
  7618. RJ LDE LIST ENTRY
  7619. SX2 B1
  7620. RJ ALC ADVANCE LINE COUNT
  7621. EQ LDHX RETURN
  7622. LFH SPACE 4,15
  7623. ** LFH - LIST FILE HEADER.
  7624. *
  7625. * ENTRY (WSAB) = FILE HEADER ENTRY.
  7626. *
  7627. * EXIT FILE HEADER AND HEADER ENTRY LISTED.
  7628. *
  7629. * USES X - 0, 1, 2, 6.
  7630. * A - 1, 6.
  7631. * B - NONE.
  7632. *
  7633. * CALLS ALC, BFL, CDD, LDE, LPH, SFN.
  7634.  
  7635.  
  7636. LFH SUBR ENTRY/EXIT
  7637. SA1 HDRC HEADER CONTROL
  7638. ZR X1,LFH1 IF NOT SET
  7639. MX6 0
  7640. SA6 HDRC CLEAR IT
  7641. LFH1 SX6 3 SET FILE HEADER
  7642. RJ LPH LIST PAGE HEADER
  7643. RJ BFL BLANK FILL LINE
  7644. SA1 WSAB FILE NAME
  7645. MX0 42
  7646. BX1 X0*X1
  7647. RJ SFN SPACE FILL NAME
  7648. LX6 42
  7649. SA6 PLIN+2
  7650. SA1 WSAB+4 PREALLOCATION PERCENTAGE
  7651. RJ CDD CONVERT TO DISPLAY CODE
  7652. LX6 12
  7653. SA6 PLIN+3
  7654. SA1 WSAB+5 NUMBER OF BACKUP COPIES
  7655. RJ CDD CONVERT TO DISPLAY CODE
  7656. LX6 42
  7657. SA6 PLIN+5
  7658. MX6 0
  7659. SA6 PLIN+6
  7660. RJ LDE LIST ENTRY
  7661. SX6 B1
  7662. SA6 HDRC SET FILE ENTRY HEADER CONTROL
  7663. SX2 B1
  7664. RJ ALC ADVANCE LINE COUNT
  7665. EQ LFHX RETURN
  7666. LKC SPACE 4,20
  7667. ** LKC - LIST KEY CONTENTS.
  7668. *
  7669. * LISTS CONTENTS OF THE KEY AREA IN THE *AFTER IMAGE*
  7670. * LOG RECORD IN CHARACTER AND OCTAL REPRESENTATION.
  7671. *
  7672. * ENTRY (X7) = KEY LENGTH IN CHARACTERS.
  7673. * (B6) = FWA OF *AFTER IMAGE* LOG RECORD.
  7674. * (JOBORG) = 0, IF INTERACTIVE ORIGIN.
  7675. *
  7676. * EXIT KEY CONTENTS LISTED.
  7677. *
  7678. * USES X - 0, 1, 2, 3, 4, 6, 7.
  7679. * A - 0, 1, 2, 3, 4, 6, 7.
  7680. * B - 2, 3.
  7681. *
  7682. * CALLS ALC, CTW, FML, GNW, TKL, WBL.
  7683. *
  7684. * MACROS WRITEC.
  7685.  
  7686.  
  7687. LKC SUBR ENTRY/EXIT
  7688. RJ CTW CONVERT TO WORDS
  7689. SX7 B6+XLKAW-1 FWA-1 OF THE KEY AREA
  7690. SA7 KEYW INITIAL KEY WORD
  7691. IX6 X7+X1
  7692. SX6 X6+B1 LWA OF THE KEY AREA
  7693. SA6 LWAK
  7694. SA0 B0 CLEAR ENTRY POSITION
  7695. BX6 X6-X6
  7696. SA6 WDCT CLEAR WORD COUNT
  7697. SA6 WCBL CLEAR BEGINNING OF LINE COUNT
  7698. LKC1 RJ GNW GET WORD FROM KEY AREA
  7699. NZ X1,LKC8 IF OUT OF KEY AREA
  7700. SA6 DTOL+A0 STORE IN LINE WORD BUFFER
  7701. SX2 B1
  7702. SA1 WDCT
  7703. IX6 X1+X2 ADVANCE WORD COUNT
  7704. SA6 A1
  7705. SA0 A0+B1 ADVANCE POSITION COUNT
  7706. SA1 JOBORG
  7707. SA2 X1+WPLT
  7708. SB2 X2
  7709. SX1 A0-B2
  7710. NZ X1,LKC1 IF NOT FULL LINE
  7711. SA4 WPLT TERMINAL WORD COUNT
  7712. SB3 X4
  7713. SA1 DTOL WORD 1
  7714. SA2 A1+B1
  7715. SA3 A2+1
  7716. SA4 A3+B1 WORD 4
  7717. BX6 X1-X2 X6 = DIFF(1-2)
  7718. EQ B2,B3,LKC2 IF TERMINAL
  7719. BX7 X1-X3
  7720. BX6 X6+X7 X6 = DIFF(1-2-3)
  7721. BX7 X1-X4
  7722. BX6 X6+X7 X6 = DIFF(1-2-3-4)
  7723. LKC2 NZ X6,LKC3 IF NOT ALL SAME ON LINE
  7724. PL X6,LKC7 IF ALL SAME ON LINE
  7725. LKC3 SA1 RPCT
  7726. NZ X1,LKC6 IF LINES BEING SKIPPED
  7727. LKC4 RJ FML FORMAT LIST LINE(S)
  7728. SA0 B0 CLEAR POSITION COUNT
  7729. EQ LKC1 GET NEXT WORD
  7730.  
  7731. LKC5 BX7 X3 USE OLD REPEAT COUNT
  7732. SA7 A3+
  7733. LKC6 BX7 X7-X7
  7734. SA2 RPCT
  7735. SA7 A2 ZERO SUPPRESSING COUNT
  7736. AX2 1
  7737. ZR X2,LKC4 IF ONE LINE ONLY
  7738. WRITEC O,MALR WRITE LINES REPEATED
  7739. SX2 B1
  7740. RJ ALC ADVANCE LINE COUNT
  7741. EQ LKC4 CONTINUE
  7742.  
  7743. LKC7 SA4 EQTW PREVIOUS IDENTITY LINE
  7744. SA3 RPCT SKIP COUNT
  7745. BX6 X1
  7746. BX1 X1-X4
  7747. SA6 A4 STORE NEW IDENTITY
  7748. SX7 X3+B1 ADVANCE SKIP COUNT
  7749. SA7 A3
  7750. ZR X3,LKC4 IF NO SUPPRESSION RUNNING
  7751. NZ X1,LKC5 IF PREVIOUS SUPPRESSION NOT CONTINUED
  7752. NG X1,LKC5 IF PREVIOUS SUPPRESSION NOT CONTINUED
  7753. SA2 WDCT
  7754. BX7 X2
  7755. SA0 B0 RESET WORD COUNT
  7756. SA7 WCBL
  7757. EQ LKC1 GET NEXT WORD
  7758.  
  7759. LKC8 RJ TKL TERMINATE KEY LIST
  7760. RJ WBL WRITE BLANK LINE
  7761. EQ LKCX CONTINUE
  7762. LOD SPACE 4,25
  7763. ** LOD - LOAD DATA BASE FILES.
  7764. *
  7765. * LOAD DATA, INDEX OR LOG FILES AS REQUESTED ON LOAD
  7766. * DIRECTIVE CARD. DATA AND INDEX FILES ARE LOADED IN
  7767. * THE SAME FORMAT (BLOCK/RECORD).
  7768. *
  7769. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  7770. * (X2) = NEXT WORD IN BUFFER.
  7771. * (X6) = OPERATION FLAG (VALIDATE PARAMETERS).
  7772. *
  7773. * EXIT ALL REQUESTED FILES LOADED IN SPECIFIED FORMAT.
  7774. * EXIT TO UPD1, IF PART OF A FILE RECOVERY.
  7775. * TO UPD2, IF PART OF A *BRF* FILE RECOVERY.
  7776. * OTHERWISE, TO DMR3.
  7777. *
  7778. * USES X - 0, 1, 2, 3, 4, 5, 6.
  7779. * A - 1, 2, 3, 5, 6.
  7780. * B - 5, 7.
  7781. *
  7782. * CALLS ACF, GFV, GXJ, LBL, LTF, RDF, RXJ, SPR.
  7783. *
  7784. * MACROS CLOSEM, ERROR, RETURN.
  7785.  
  7786.  
  7787. LOD BSS 0 ENTRY
  7788. RJ SPR GET PARAMETERS
  7789. SB5 B5-2
  7790. NE B5,B0,LOD9 IF MORE THEN ONE FILE
  7791. LOD1 SA2 TDFN
  7792. MX0 42
  7793. BX6 X0*X2
  7794. SA6 XXPFN SAVE FILE NAME
  7795. MX0 12
  7796. BX5 X0*X6 MASK DATA BASE NAME
  7797. RJ GXJ GET *XXJ* FILE
  7798. NZ X1,LOD8 IF ERROR
  7799. SA5 XXPFN
  7800. RJ RXJ READ *XXJ* FILE
  7801. ZR X1,LOD2 IF FILE FOUND
  7802. PL X1,LOD8 IF ERROR
  7803. ZR X2,LOD8 IF NOT LAST
  7804. LOD2 RJ CWM CHECK WRITE MODE
  7805. NZ X1,LOD8 IF ERROR
  7806. RJ ACF ATTACH *ZZDBDIR* FILE
  7807. RJ GFV GET FIRST VSN
  7808. NZ X1,LOD8 IF ERRORS
  7809. CLOSEM DIRR,U
  7810. BX6 X6-X6
  7811. MX5 0 READ MODE
  7812. SA6 TPMODE SAVE MODE
  7813. SB7 TP
  7814. RJ RTF REQUEST TAPE FILE
  7815. NZ X1,LOD8 IF ERRORS
  7816. REWIND TP,R
  7817. SA5 HOLD SKIP COUNT
  7818. ZR X5,LOD3 IF SKIP COUNT ZERO
  7819. SKIPFF TP,X5,R
  7820. LOD3 SX6 PTWR WRITE MODE
  7821. SA6 XXMODE FORCE WRITE ATTACH MODE
  7822. RJ ADF ATTACH DATA FILE
  7823. NZ X1,LOD8 IF ERROR IN ATTACH
  7824. LOD4 READ TP,R READ HEADER
  7825. RJ DER DETECT END OF REEL
  7826. NG X1,LOD4 IF END OF TAPE
  7827. NZ X1,LOD8 IF ERROR
  7828. SA5 YYBUF FILE NAME FROM DIRECTORY RECORD
  7829. MX0 42
  7830. BX5 X0*X5
  7831. SA2 TBUF FILE NAME FROM DUMP TAPE
  7832. BX2 X2-X5
  7833. MX5 -3
  7834. NZ X2,LOD10 IF ERROR - FILE NAME MISMATCH
  7835. SA2 YYBUF+2 GET FORMAT
  7836. BX2 -X5*X2
  7837. SA3 TBUF+1
  7838. BX5 X3-X2
  7839. NZ X5,LOD10 IF FORMAT MISMATCH
  7840. ZR X3,LOD5 IF BLOCK FORMAT
  7841.  
  7842. * LOAD RECORD FORMAT.
  7843.  
  7844. RJ LRD LOAD RECORD FORMAT
  7845. NZ X1,LOD8 IF ERROR
  7846. SA3 XXIXN
  7847. ZR X3,LOD6 IF NO INDEX FILE TO LOAD
  7848. RJ BIF BUILD INDEX FILE
  7849. NZ X1,LOD8 IF ERROR IN BIF
  7850. EQ LOD7 CONTINUE
  7851.  
  7852. LOD5 SA1 TP+B1
  7853. SX6 X1
  7854. SA6 A1+B1 RESET FET POINTERS
  7855. SA6 A6+B1
  7856. SX4 DF FET ADDRESS
  7857. RJ LBL LOAD BLOCK
  7858. NZ X1,LOD8 IF ERROR
  7859. SA5 YYBUF+3 GET INDEX FN
  7860. ZR X5,LOD6 IF NO INDEX FILE
  7861. LOD5.1 READ TP,R READ EOF
  7862. RJ DER DETECT END OF REEL
  7863. NG X1,LOD5.1 IF END OF REEL
  7864. NZ X1,LOD8 IF ERROR
  7865. LOD5.2 READ TP,R
  7866. READW TP,WBUF,WBUFL READ INDEX FILE HEADER
  7867. RJ DER DETECT END OF REEL
  7868. NG X1,LOD5.2 IF END OF REEL
  7869. NZ X1,LOD8 IF ERROR
  7870. SA5 YYBUF+3 INDEX FN FROM DIRECTORY RECORD
  7871. MX0 42
  7872. BX6 X0*X5
  7873. SA6 XXPFN SAVE PFN FOR *LBL*
  7874. SA2 WBUF INDEX FN FROM DUMP TAPE
  7875. BX2 X2-X6
  7876. NZ X2,LOD10 IF ERROR - FN MISMATCH
  7877. SA1 TP+B1 RESET FET POINTERS
  7878. SX6 X1
  7879. SA6 A1+B1
  7880. SA6 A6+B1
  7881. SX4 IF
  7882. SA3 TBUF+1
  7883. ZR X3,LOD5.3 IF BLOCK FORMAT
  7884.  
  7885. * LOAD INDEX FILE IN RECORD FORMAT.
  7886.  
  7887. RJ LRD LOAD INDEX FILE IN RECORD FORMAT
  7888. NZ X1,LOD8 IF ERROR IN LOADING INDEX FILE
  7889. EQ LOD6 CLOSE DATA FILE
  7890.  
  7891. * LOAD INDEX FILE IN BLOCK FORMAT.
  7892.  
  7893. LOD5.3 RJ LBL LOAD INDEX FILE IN BLOCK FORMAT
  7894. NZ X1,LOD8 IF ERROR
  7895. LOD6 CLOSEM DFIT,U
  7896. LOD7 RJ RAF RETURN ALL FILES
  7897. SA2 BRFFLG
  7898. ZR X2,DMR3 IF SUBCODE NOT SET - MUST BE LOAD ONLY
  7899.  
  7900. * THIS IS THE FIRST PART OF A RECOVERY. GO CALL THE UPDATE
  7901. * PROCESSOR LESS PARAMETER CRACKING.
  7902.  
  7903. SA1 RECE VSN ON DIRECTIVE STATEMENT IF USED
  7904. BX6 X1
  7905. SA6 TVSN ZERO TVSN FOR UPDATE PROCESSOR
  7906. NG X2,UPD2 IF THIS IS PART OF A *BRF* RECOVERY
  7907. EQ UPD1 UPDATE FILE JUST LOADED.
  7908.  
  7909. LOD8 CLOSEM DFIT,U
  7910. RJ RAF RETURN ALL FILES
  7911. EQ DMR3 RETURN
  7912.  
  7913. LOD9 ERROR DMRA,,,LOD8,,E DIRECTIVE ERROR
  7914.  
  7915.  
  7916. LOD10 ERROR LODD,,,LOD8,,E BLOCK LOAD ERROR
  7917.  
  7918. LODD DATA 20H0 *****
  7919. DATA C*BLOCK LOAD ERROR.*
  7920. LODDL EQU *-LODD
  7921. LDH SPACE 4,15
  7922. ** LPH - LIST PAGE HEADER.
  7923. *
  7924. * ENTRY (X6) = HEADER NUMBER.
  7925. * (JOBORG) = 0, IF INTERACTIVE ORIGIN.
  7926. *
  7927. * EXIT HEADER LISTED.
  7928. *
  7929. * USES X - 0, 1, 2, 5, 6.
  7930. * A - 1, 2, 6.
  7931. * B - NONE.
  7932. *
  7933. * CALLS ALC.
  7934. *
  7935. * MACROS WRITEC, WRITEH.
  7936.  
  7937.  
  7938. LPH SUBR ENTRY/EXIT
  7939. SA6 LHDR SAVE LAST HEADER CODE
  7940. SA1 THDR+X6 HEADER CONTROL WORD
  7941. SX2 X1 HEADER ADDRESS
  7942. AX1 18
  7943. SX5 X1 HEADER LENGTH
  7944. AX1 18
  7945. MX0 -12
  7946. BX6 -X0*X1 LINES ADVANCE COUNT
  7947. SA6 LPHA
  7948. AX1 12
  7949. MX0 -6
  7950. BX6 -X0*X1 SPACE LINES AFTER PRINT
  7951. SA6 LPHB
  7952. AX1 6
  7953. SX6 X1 SPACE LINES BEFORE PRINT
  7954. SA6 LPHC
  7955. SX0 X2
  7956. SA1 JOBORG JOB ORIGIN
  7957. NZ X1,LPH1 IF NOT INTERACTIVE ORIGIN
  7958. SX0 X0+1 SKIP CARRIAGE CONTROL WORD
  7959. SX5 X5-1 ADJUST LINE LENGTH
  7960. SA1 LPHC
  7961. ZR X1,LPH1 IF NO SPACE BEFORE PRINT - INTERACTIVE
  7962. WRITEC O,BLKL SPACE LINE
  7963. EQ LPH2 CONTINUE
  7964. LPH1 SA1 LPHC
  7965. ZR X1,LPH2 IF NO SPACE BEFORE PRINT - BATCH
  7966. WRITEC O,BLKL SPACE LINE
  7967. LPH2 WRITEH O,X0,X5
  7968. SA1 LPHB
  7969. ZR X1,LPH3 IF NO SPACE AFTER PRINT
  7970. WRITEC O,BLKL SPACE LINE
  7971. LPH3 SA2 LPHA LINES ADVANCE COUNT
  7972. RJ ALC ADJUST LINE COUNT
  7973. EQ LPHX RETURN
  7974.  
  7975. LPHA BSSZ 1 LINES ADVANCE COUNT
  7976. LPHB BSSZ 1 LINES AFTER PRINT
  7977. LPHC BSSZ 1 LINES BEFORE PRINT
  7978. LRD SPACE 4,20
  7979. ** LRD - LOAD RECORD.
  7980. *
  7981. * *LRD* RECONSTRUCTS *IS*, *DA* AND *AK* *CRM* FILES
  7982. * FROM DUMPS GENERATED BY *DMREC*. THESE FILES CAN
  7983. * CONTAIN MULTIPLE INDICES, IN WHICH CASE THE INDEX
  7984. * FILE IS ALSO REBUILT.
  7985. *
  7986. * ENTRY DUMP TAPE *TP* IS OPENED AND POSITIONED.
  7987. * (YYBUF) = FIRST WORD OF FILE DUMP RECORD.
  7988. *
  7989. * EXIT (X1) = 0 - IF NO ERRORS.
  7990. *
  7991. * USES X - ALL.
  7992. * A - 1, 2, 3, 4, 6, 7.
  7993. * B - 1.
  7994. *
  7995. * CALLS CER, DER, PRD.
  7996. *
  7997. * MACROS DEFINE, ERROR, GET, LDREQ, LOADER, MOVE, OPENM,
  7998. * PURGE, READ, READW, RETURN, STORE.
  7999.  
  8000.  
  8001. LRD SUBR ENTRY/EXIT
  8002. SA1 TP+B1 INITIALIZE BUFFER
  8003. SX6 X1
  8004. SA6 A1+B1 IN
  8005. SA6 A6+B1 OUT
  8006.  
  8007. * READ FSTT
  8008.  
  8009. LRD1 READ TP,R
  8010. LRD2 READW TP,WBUF,WBUFL
  8011. BX6 X1
  8012. SA6 HOLD1 SAVE STATUS
  8013. RJ DER DETECT END OF REEL
  8014. NG X1,LRD1 IF END OF TAPE
  8015. NZ X1,LRDX IF ERROR
  8016. SA1 HOLD1 RESTORE STATUS
  8017. NG X1,LRD25 IF EOF/EOI
  8018. ZR X1,LRD25 IF NO EOR - ERROR
  8019.  
  8020. * END OF RECORD - FSTT JUST READ, BUILD
  8021. * A FIT FROM OLD FSTT PARAMETERS.
  8022.  
  8023. PURGE ZZZDATA,,,XXPACK,XXDEV
  8024. RETURN ZZZDATA,R
  8025. DEFINE ZZZDATA,XXPFN,,,XXDEV,,,XXPACK
  8026. PURGE ZZINDEX,,,XXIXP,XXIDEV
  8027. RETURN ZZINDEX,R
  8028. DEFINE ZZINDEX,XXIXN,,,XXIDEV,,,XXIXP
  8029. STORE DFIT,PD=NEW
  8030. GET ZZZZZDG GET CRM FILE DEFINITIONS
  8031. SX2 ZZZZZDG SET FET ADDRESS
  8032. RJ CER IF ERROR ENCOUNTERED - CLEAR STATUS
  8033. SA2 WBUF+FSTT100
  8034. AX2 35
  8035. MX0 -3
  8036. BX6 -X0*X2
  8037. SX2 X6-#IS#
  8038. NZ X2,LRD3 IF NOT *IS*
  8039. SX6 #IS#
  8040. EQ LRD5 SET FO
  8041.  
  8042. LRD3 SX2 X6-#DA#
  8043. NZ X2,LRD4 IF NOT *DA*
  8044. SX6 #DA#
  8045. EQ LRD5 SET FO
  8046.  
  8047. LRD4 SX6 #AK#
  8048. LRD5 SA6 LRDFO SAVE FO
  8049. STORE DFIT,FO=X6
  8050. STORE DFIT,ORG=NEW
  8051. SA2 WBUF+FSTT21
  8052. MX0 -18
  8053. BX6 -X0*X2
  8054. SA6 LRDMNR SAVE MINIMUM RECORD LENGTH
  8055. STORE DFIT,MNR=X6
  8056. SA2 WBUF+FSTT21
  8057. MX0 -18
  8058. AX2 18
  8059. BX6 -X0*X2
  8060. SA6 LRDMRL SAVE MAXIMUN RECORD LENGTH
  8061. STORE DFIT,MRL=X6
  8062. SA2 WBUF+FSTT100
  8063. AX2 35
  8064. MX0 -3
  8065. BX3 -X0*X2
  8066. SX4 X3-#IS#
  8067. NZ X4,LRD9 IF NOT *IS* FILE
  8068.  
  8069. * PROCESS *IS* FILE.
  8070.  
  8071. SA2 WBUF+FSTT100
  8072. AX2 32
  8073. MX0 60-3
  8074. BX2 -X0*X2
  8075. SX3 X2-#SKT#
  8076. NZ X3,LRD6 IF NOT SYMBOLIC KEY
  8077. MOVE 20B,WBUF+43B,LCOLL
  8078. SX6 #SKT#
  8079. EQ LRD8 STORE KEY TYPE
  8080.  
  8081. LRD6 SX3 X2-#IKT#
  8082. NZ X3,LRD7 IF NOT INTEGER KEY
  8083. SX6 #IKT#
  8084. EQ LRD8 KT INTEGER
  8085.  
  8086. LRD7 SX6 #UKT#
  8087. LRD8 SA6 LRDKT SAVE KEY TYPE
  8088. STORE DFIT,KT=X6
  8089. EQ LRD10 CONTINUE
  8090.  
  8091. LRD9 SX4 X3-#DA#
  8092. NZ X4,LRD10 IF NOT *DA* FILE
  8093.  
  8094. * PROCESS *DA* FILE.
  8095.  
  8096. SA2 WBUF+FSTT56
  8097. MX0 30
  8098. BX6 -X0*X2
  8099. SA6 LRDHMB SAVE HMB
  8100. STORE DFIT,HMB=X6
  8101. SA1 XXHASH HASH FILE NAME
  8102. ZR X1,LRD10 IF NO OWNCODE
  8103.  
  8104. * LOAD HASHING ROUTINE - OWNCODE ROUTINE READ INTO
  8105. * A FIXED BUFFER.
  8106.  
  8107. SX2 3 REWIND FILE
  8108. BX7 X1+X2
  8109. BX6 X1
  8110. SA7 LRDI+1 SET FILE NAME IN LOAD REQUEST
  8111. SA6 LRDJ+1 SET ENTRY POINT IN REQUEST
  8112. LOADER LRDH,CMM LOAD HASHING ROUTINE
  8113.  
  8114. * CHECK FOR LOADER ERRORS ON HASHING ROUTINE.
  8115.  
  8116. SB1 1
  8117. SA1 LRDH+2 LOAD STATUS
  8118. MX0 2
  8119. BX2 X0*X1
  8120. NZ X2,LRD27 IF HASHING LOADER ERROR
  8121. SA3 LRDJ+1 GET FWA OF HASH ENTRY POINT
  8122. ZR X3,LRD27 IF ENTRY POINT NOT FOUND
  8123.  
  8124. * SET HASH ROUTINE ADDRESS IN FIT.
  8125.  
  8126. STORE DFIT,HRL=X3
  8127.  
  8128. * READ DATA BLOCK FROM TAPE AND EXTRACT RECORDS
  8129. * FOR REBUILDING FILE.
  8130.  
  8131. LRD10 SA2 WBUF+FSTT20
  8132. AX2 30
  8133. MX0 54
  8134. BX6 -X0*X2 EXTRACT SYSCOMP (S - C)
  8135. SX2 X6-2
  8136. PL X2,LRD28 IF NOT LEGAL COMPRESSION
  8137. STORE DFIT,CPA=X6 SET COMPRESSION ADDRESS
  8138. SA2 WBUF+FSTT100
  8139.  
  8140. MX0 -18
  8141. BX6 -X0*X2
  8142. SA6 LKS SAVE KEY SIZE
  8143. STORE DFIT,KL=X6 STORE KEY LENGTH
  8144. AX2 18
  8145. MX0 60-14
  8146. BX6 -X0*X2
  8147. SA6 LKLOC SAVE KEY LOCATION
  8148. AX2 20 GET KP
  8149. MX0 60-4
  8150. BX6 -X0*X2
  8151. SA6 LKP SAVE KEY POSITION
  8152. SX5 X6-10
  8153. ZR X5,LRD11 IF NON - EMBEDDED KEY
  8154. STORE DFIT,RKP=X6
  8155. SA1 LKLOC
  8156. STORE DFIT,RKW=X1
  8157. STORE DFIT,EMK=YES
  8158. EQ LRD12 CONTINUE
  8159.  
  8160. LRD11 STORE DFIT,EMK=NO
  8161. LRD12 OPENM DFIT,NEW
  8162. LRD13 READ TP,R
  8163. READW TP,WBUF,WBUFL
  8164. BX6 X1
  8165. SA6 HOLD1 SAVE STATUS
  8166. RJ DER DETECT END OF TAPE
  8167. NG X1,LRD13 IF END OF TAPE
  8168. NZ X1,LRDX IF ERROR
  8169. SA1 HOLD1 GET STATUS
  8170. SX6 X1-WBUF-1
  8171. NZ X6,LRD14 IF NOT ONE WORD RECORD
  8172. SX6 3REND
  8173. SA4 XXPFN
  8174. BX6 X4+X6
  8175. SA4 WBUF GET ONE WORD RECORD
  8176. BX6 X4-X6
  8177. ZR X6,LRD23 IF TRAILER RECORD FOUND
  8178. LRD14 ZR X1,LRD26 IF ERROR
  8179. NG X1,LRD24 IF EOF/EOI - NO TRAILER RECORD FOUND
  8180.  
  8181. * EOR ENCOUNTERED - SCAN BLOCK FOR RECORDS.
  8182.  
  8183. SX6 X1-1
  8184. SA6 LRDWRD
  8185. BX7 X7-X7
  8186. SA7 LRDLG INITIAL RECORD POINTER
  8187. SA7 LRDPT INITIAL COUNTER
  8188. SA7 LLGN INITIAL LENGTH
  8189. SA7 LRDNREC
  8190. SA7 LRDPOS
  8191. SX6 WBUF+2
  8192. SA6 LFWA
  8193. SA3 WBUF+B1
  8194. MX0 1
  8195. BX6 X0*X3
  8196. ZR X6,LRD17 IF RECORDS ARE VARIABLE LENGTH
  8197.  
  8198. * LOAD FIXED LENGTH RECORDS.
  8199.  
  8200. SA2 X1-1 GET LAST WORD OF BLOCK
  8201. MX0 60-13
  8202. BX6 -X0*X2
  8203. SA6 LLGN SAVE FIXED RECORD LENGTH
  8204. AX3 38 GET RC - RECORD COUNT (WORDS)
  8205. BX6 -X0*X3
  8206. SA6 LRDRC SAVE RECORD COUNT
  8207. LX2 30+4 (X2) = NEGATIVE IF RECORD COMPRESSED
  8208. BX6 X2
  8209. SA6 LCOMP SAVE COMPRESSION FLAG
  8210. MX0 60-4
  8211. BX6 -X0*X2
  8212. SA6 LUCC SAVE UNUSED CARACTER COUNT
  8213. LRD15 SA1 LRDNREC
  8214. SX7 X1+B1
  8215. SA7 A1 INCREMENT NUMBER OF RECORDS
  8216. SA3 LRDRC RECORD COUNT
  8217. IX4 X3-X7 REDUCE TOTAL RECORD COUNT
  8218. NG X4,LRD13 IF ALL RECORD ACCOUNTED FOR
  8219. SA2 LUCC UNUSED CHARACTER COUNT
  8220. SX6 X2-17B
  8221. ZR X6,LRD16 IF *IS* OR *DA* DEAD RECORD
  8222.  
  8223. * PUT RECORD INTO DATA FILE.
  8224.  
  8225. RJ PRD PUT RECORD
  8226. NZ X1,LRDX IF ERROR
  8227. LRD16 SA1 LFWA
  8228. SA2 LLGN
  8229. IX6 X1+X2
  8230. SA6 A1 RESET FWA
  8231. EQ LRD15 GET NEXT RECORD
  8232.  
  8233. * RECORDS ARE VARIABLE IN LENGTH.
  8234.  
  8235. LRD17 MX0 60-13
  8236. SA3 WBUF+B1
  8237. AX3 38
  8238. BX6 -X0*X3
  8239. SA6 LRDRC SAVE RECORD COUNT
  8240. SX6 WBUF+2
  8241. SA6 LRDFWA FWA FOR VARIABLE RECORD LENGTH
  8242. LRD18 SA2 LRDWRD
  8243. SA2 X2
  8244. SA3 LRDPOS
  8245. MX0 30
  8246. MX5 60-13
  8247. ZR X3,LRD19 IF LOWER POINTER
  8248. LX2 30
  8249. BX7 X7-X7
  8250. EQ LRD20 CONTINUE
  8251.  
  8252. LRD19 SX7 B1
  8253. LRD20 SA7 A3
  8254. BX6 -X0*X2
  8255. BX7 -X5*X6
  8256. SA7 LRDLG SAVE RECORD POINTER
  8257. LX6 30+4
  8258. SA6 LCOMP LCOMP NEGATIVE IF COMPRESSED
  8259. MX0 60-4
  8260. BX6 -X0*X6
  8261. SA6 LUCC SAVE UNUSED CHARACTER COUNT
  8262. SA1 LRDNREC
  8263. SX7 X1+B1
  8264. SA7 A1 INCREMENT NUMBER OF RECORDS
  8265. SA3 LRDRC
  8266. IX4 X3-X7
  8267. NG X4,LRD13 IF END OF BLOCK
  8268. SA1 LRDFWA
  8269. SA2 LRDPT
  8270. IX6 X1+X2
  8271. SA6 LFWA SAVE FWA
  8272. SA1 LRDLG GET LENGTH
  8273. IX6 X1-X2
  8274. MX0 -4
  8275. SA6 LLGN SAVE RECORD LENGTH
  8276. IX6 X6+X2
  8277. SA6 A2 BUMP LRDPT
  8278. SA2 LUCC
  8279. SX2 X2-10
  8280. NG X2,LRD21 IF UNUSED CHARACTER COUNT UNDER 10
  8281. SX2 X2-3
  8282. ZR X2,LRD22 IF *AK* POINTER - IGNORE
  8283. SX2 X2-1
  8284. NZ X2,LRD22 IF .GE. 15 - MUST BE DEAD RECORD
  8285. SA2 LFWA GET FIRST WORD
  8286. SA3 X2
  8287. LX3 4
  8288. SX7 X2+1
  8289. BX6 -X0*X3
  8290. SA6 LUCC SAVE LUCC FOR *AK* ALIEN RECORD
  8291. SA7 A2 EXCLUDE POINTER FROM RECORD
  8292.  
  8293. * PUT RECORD INTO DATA FILE.
  8294.  
  8295. LRD21 RJ PRD PUT RECORD
  8296. NZ X1,LRDX IF ERROR
  8297. LRD22 SA2 LRDPOS
  8298. NZ X2,LRD18 IF NEXT POINTER WORD NEEDED
  8299. SA3 LRDWRD
  8300. SA2 X3-1
  8301. SX6 A2
  8302. SA6 A3 DECREMENT POINTER WORD
  8303. EQ LRD18 GET NEXT POINTER WORD
  8304.  
  8305. LRD23 SX1 B0
  8306. EQ LRDX EXIT NORMAL
  8307.  
  8308. LRD24 ERROR LRDA,,,LRDX,,E TAPE NOT READABLE
  8309.  
  8310. LRD25 ERROR LRDD,,,LRDX,,E FSTT READ ERROR
  8311.  
  8312. LRD26 ERROR LRDE,,,LRDX,,E BLOCK BUFFER OVERFLOW
  8313.  
  8314. LRD27 ERROR LRDF,,,LRDX,,E LOAD ERROR IN HASHING ROUTING
  8315.  
  8316. LRD28 ERROR LRDG,,,LRDX,,E NON-STANDARD COMPRESSION
  8317.  
  8318. LRDA DATA 20H0 *****
  8319. DATA C*TAPE NOT READABLE.*
  8320. LRDAL EQU *-LRDA
  8321.  
  8322. LRDD DATA 20H0 *****
  8323. DATA C*FSTT READ ERROR.*
  8324. LRDDL EQU *-LRDD
  8325.  
  8326. LRDE DATA 20H0 *****
  8327. DATA C*BLOCK BUFFER OVERFLOW.*
  8328. LRDEL EQU *-LRDE
  8329.  
  8330. LRDF DATA 20H0 *****
  8331. DATA C*LOAD ERROR IN HASHING ROUTINE.*
  8332. LRDFL EQU *-LRDF
  8333.  
  8334. LRDG DATA 20H0 *****
  8335. DATA C*DUMP TAPE SPECIFIES NON-STANDARD COMPRESSION.*
  8336. LRDGL EQU *-LRDG
  8337.  
  8338. LRDH LDREQ BEGIN,0,0,0,0
  8339. LDREQ MAP,BSEX,MAP
  8340. LRDI LDREQ LOAD,(HASH/R)
  8341. LDREQ SATISFY
  8342. LRDJ LDREQ ENTRY,(HASH) HASH ENTRY POINT
  8343. LDREQ END
  8344.  
  8345.  
  8346. LRDNREC BSSZ 1 NUMBER OF RECORDS
  8347. LRDLG BSSZ 1 POINTER
  8348. LRDPT BSSZ 1 COUNTER
  8349. LRDPOS BSSZ 1 RECORD POSITION
  8350. LRDSLWA BSSZ 1 SAVED LWA
  8351. LRDRC BSSZ 1 RECORD COUNT
  8352. LRDFWA BSSZ 1 RECORD FWA
  8353. LRDWRD BSSZ 1 POINTER WORD
  8354. LRDFO BSSZ 1 FILE ORGANIZATION
  8355. LRDMRL BSSZ 1 MAXIMUM RECORD LENGTH
  8356. LRDKT BSSZ 1 KEY TYPE
  8357. LRDMNR BSSZ 1 MINIMUM RECORD LENGTH
  8358. LRDHMB BSSZ 1 NUMBER OF HOME BLOCKS
  8359. LST SPACE 4,25
  8360. ** LST - LIST BACKUP DIRECTORY AND AFTER IMAGE LOG HEADERS.
  8361. *
  8362. * THIS ROUTINE GENERATES LISTING OF THE CONTENTS OF THE
  8363. * BACKUP DIRECTORY FOR EITHER AN ENTIRE DATA BASE OR ONE
  8364. * OR MORE FILES WITHIN A DATA BASE. THIS INCLUDES DUMPS
  8365. * OF DATA BASE FILES AND DUMPS OF *AFTER IMAGE* LOG FILES.
  8366. * IT ALSO GENERATES A LISTING OF THE CONTENTS OF THE *AFTER
  8367. * IMAGE* LOG RECORD HEADERS FROM THE DUMP TAPE.
  8368. *
  8369. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  8370. * (X2) = NEXT WORD IN BUFFER.
  8371. * (X6) = OPERATION CODE.
  8372. *
  8373. * EXIT TO *DMR3* IF NO ERRORS.
  8374. * ABORT IF ERRORS.
  8375. *
  8376. * USES X - 3.
  8377. * A - 3, 6.
  8378. * B - NONE.
  8379. *
  8380. * CALL GAL, GFL, GPL, IFV, RAF, SDT, SPR.
  8381. *
  8382. * MACROS ERROR.
  8383.  
  8384.  
  8385. LST BSS 0 ENTRY
  8386. SB1 1
  8387. SA6 OPFLG SAVE OPERATION FLAG
  8388. RJ SPR SET PARAMETERS
  8389. RJ SDT SET DATE AND TIME
  8390. RJ IFV INITIALIZE FILES AND VARIABLES
  8391. NZ X1,LST5 IF ERRORS
  8392. SA3 LFNC FILE CONTROL INDICATOR
  8393. ZR X3,LST1 IF DATA BASE PARAMETER SPECIFIED
  8394. RJ GPL GENERATE PARTIAL LISTING
  8395. NZ X1,LST5 IF ERRORS
  8396. EQ LST4 COMPLETE
  8397.  
  8398. LST1 SA3 TVSN
  8399. ZR X3,LST2 IF NO VSN PARAMETER
  8400. RJ GAL GENERATE AFTER IMAGE HEADERS LISTING
  8401. NZ X1,LST5 IF ERRORS
  8402. EQ LST4 COMPLETE
  8403.  
  8404. LST2 SA3 LSTC LIST CONTROL INDICATOR
  8405. ZR X3,LST3 IF NO DATE/TIME - FULL LISTING
  8406. RJ GPL GENERATE PARTIAL LISTING
  8407. NZ X1,LST5 IF ERRORS
  8408. EQ LST4 COMPLETE
  8409.  
  8410. LST3 RJ GFL GENERATE FULL LISTING
  8411. NZ X1,LST5 IF ERRORS
  8412. LST4 RJ RAF RETURN ALL FILES
  8413. EQ LST7 NORMAL TERMINATION
  8414.  
  8415. LST5 RJ RAF RETURN ALL FILES
  8416. EQ LST8 ABNORMAL TERMINATION
  8417.  
  8418. LST6 RJ RAF RETURN ALL FILES
  8419. EQ DMR2 RETURN
  8420.  
  8421. LST7 ERROR LSTA,,,DMR3 LIST COMPLETE, READ NEXT DIRECTIVE
  8422.  
  8423. LST8 ERROR LSTB,,,LST6,,E ERROR IN LIST PROCESSING
  8424.  
  8425. LSTA DATA 20H0
  8426. DATA C*LIST COMPLETE.*
  8427. LSTAL EQU *-LSTA
  8428.  
  8429. LSTB DATA 20H0 *****
  8430. DATA C*ERROR IN LIST PROCESSING.*
  8431. LSTBL EQU *-LSTB
  8432. MDI SPACE 4,20
  8433. ** MDI - MODIFY DIRECTORY.
  8434. *
  8435. * *MDI* DELETES OR ADDS ALL DUMP AND VSN ENTRIES BELONGING
  8436. * TO A GIVEN VSN NUMBER.
  8437. *
  8438. * ENTRY (TVSN) = VSN NUMBER.
  8439. * (ADDF) = 0, DELETE ENTRIES.
  8440. * 1, ADD ENTRIES.
  8441. * (FITA) = FWA OF AUXILARY FIT TABLE.
  8442. *
  8443. * EXIT (X1) = 0, IF NO ERRORS
  8444. *
  8445. * USES X - 0, 1, 2, 3, 6.
  8446. * A - 0, 1, 2, 3, 6.
  8447. * B - 5.
  8448. *
  8449. * CALLS CVN, FER, PDE, SVK.
  8450. *
  8451. * MACROS DELETE, ERROR, FETCH, GETN, PUT, REWIND, RMGET.
  8452.  
  8453.  
  8454. MDI SUBR ENTRY/EXIT
  8455. RJ CVN CHECK VSN ENTRY
  8456. NZ X1,MDIX IF ERROR, RETURN
  8457. MDI1 SA6 MDIF SAVE NUMBER OF ACTIVE FILES
  8458. MDI2 SA1 ADDF ADD FLAG
  8459. ZR X1,MDI3 IF DELETE
  8460. PUT DIRR,WSAB,WSAL,,VKY1 INSERT INTO DIRECTORY
  8461. RJ FER FIT ERROR STATUS
  8462. NZ X1,MDI12 IF ERROR, RETURN
  8463. SA0 FITA RESET *A0*
  8464. SB5 B1
  8465. RJ PDE PRINT ADDED ENTRY
  8466. SA0 FITA RESET *A0*
  8467. EQ MDI4 NEXT ENTRY
  8468.  
  8469. MDI3 DELETE A0,,VKY1 DELETE VSN ENTRY
  8470. SB5 B1
  8471. RJ PDE PRINT DELETED ENTRY
  8472. MDI4 SA1 WSAB+2 CONTINUATION VSN
  8473. ZR X1,MDI5 IF NO CONTINUATION VSN
  8474. RJ SVK SET VSN KEY
  8475. RMGET A0,WSAB,0,,VKY1 READ VSN ENTRY
  8476. FETCH A0,ES,X1
  8477. NZ X1,MDI11 IF ERROR, RETURN
  8478. EQ MDI2 PROCESS ENTRY
  8479.  
  8480. MDI5 REWINDM A0
  8481. GETN A0,WSAB,,TKY1 DIRECTORY HEADER
  8482. MDI6 GETN A0,WSAB,,TKY1 NEXT DIRECTORY ENTRY
  8483. FETCH A0,FP,X3
  8484. MX1 0
  8485. SX2 X3-EOFF END OF FILE
  8486. ZR X2,MDIX IF END OF FILE
  8487. SA2 TKY2 SECOND WORD OF KEY
  8488. SA3 VSNK ALL ASTERISKS
  8489. BX1 X2-X3 COMPARE
  8490. ZR X1,MDI10 IF VSN TYPE ENTRY
  8491. SA1 WSAB+2 VSN FROM DUMP ENTRY
  8492. MX0 36
  8493. BX1 X0*X1
  8494. SA2 TVSN
  8495. BX1 X1-X2 COMPARE VSN NUMBERS
  8496. NZ X1,MDI6 IF NOT EQUAL, NEXT ENTRY
  8497. SA1 RECC RECORD COUNT
  8498. SX6 X1+B1 INCREMENT COUNT
  8499. SA2 WSAB+3 INDEX FILE
  8500. ZR X2,MDI7 IF NO INDEX FILE
  8501. SX6 X6+B1 INCREMENT COUNT
  8502. MDI7 SA6 RECC REPLACE COUNT
  8503. SA1 ADDF ADD FLAG
  8504. ZR X1,MDI8 IF DELETE
  8505. PUT DIRR,WSAB,WSAL,,TKY1 INSERT INTO DIRECTORY
  8506. RJ FER FIT ERROR STATUS
  8507. NZ X1,MDI12 IF ERROR, RETURN
  8508. SA0 FITA RESET *A0*
  8509. EQ MDI9 CONTINUE
  8510.  
  8511. MDI8 DELETE A0,,TKY1 DELETE ENTRY
  8512. MDI9 SB5 B0
  8513. RJ PDE PRINT ENTRY ADDED/DELETED
  8514. EQ MDI6 PROCESS NEXT ENTRY
  8515.  
  8516. MDI10 SA2 MDIF NUMBER OF ACTIVE FILES
  8517. SA3 RECC NUMBER OF ADDED/DELETED ENTRIES
  8518. IX1 X2-X3
  8519. NZ X1,MDI13 IF NUMBERS DO NOT MATCH
  8520. EQ MDIX NORMAL RETURN
  8521.  
  8522. MDI11 ERROR CVNA,,,MDIX,,E VSN DOES NOT EXIST
  8523.  
  8524. MDI12 ERROR MDIB,,,MDIX,,E DUPLICATE ENTER ON ADD
  8525.  
  8526. MDI13 ERROR MDIC,,,MDIX,,E ERROR IN ADD/DELETE VSN
  8527.  
  8528. MDIB DATA 20H0 *****
  8529. DATA C*DUPLICATE ENTRY ON ADD.*
  8530. MDIBL EQU *-MDIB
  8531.  
  8532. MDIC DATA 20H0 *****
  8533. DATA C*ERROR IN ADD/DELETE VSN.*
  8534. MDICL EQU *-MDIC
  8535.  
  8536. MDIF BSSZ 1 NUMBER OF ACTIVE FILES
  8537. MDS SPACE 4,20
  8538. ** MDS - MODIFY DIRECTORY SELECTIVELY.
  8539. *
  8540. * *MDS* DELETES OR ADDS DUMP AND VSN ENTRIES BELONGING
  8541. * TO GIVEN VSN NUMBER FOR SELECTED FILE.
  8542. *
  8543. * ENTRY (TVSN) = VSN NUMBER.
  8544. * (ADDF) = 0, DELETE ENTRY.
  8545. * 1, ADD ENTRY.
  8546. * (FITA) = FWA OF AUXILARY FIT TABLE.
  8547. *
  8548. * EXIT (X1) = 0, IF NO ERRORS.
  8549. *
  8550. * USES X - 0, 1, 2, 3, 4, 6, 7.
  8551. * A - 0, 1, 2, 3, 6, 7.
  8552. * B - 5.
  8553. *
  8554. * CALLS CVN, FER, PDE, SFN, SVK.
  8555. *
  8556. * MACROS DELETE, ERROR, FETCH, GETN, PUT, RMGET, RMREP.
  8557.  
  8558.  
  8559. MDS SUBR ENTRY/EXIT
  8560. SX6 -2
  8561. SA6 LFNP PRESET FILE NAME POINTER
  8562. RJ CVN CHECK VSN NUMBER
  8563. SX6 A0
  8564. SA6 MDSE SAVE *A0*
  8565. NZ X1,MDSX IF ERROR, RETURN
  8566. MDS1 SA1 LFNP FILE POINTER IN *TDFS* TABLE
  8567. SX6 X1+2 INCREMENT POINTER
  8568. SA6 A1 REPLACE POINTER
  8569. SA1 LFNC NUMBER OF FILES IN *TDFS* TABLE
  8570. LX1 1 MULTIPLY BY TWO
  8571. IX2 X6-X1
  8572. MX1 0
  8573. ZR X2,MDSX IF END OF TABLE, NORMAL RETURN
  8574. SA1 TDFS+X6 SELECTIVE FILE NAME
  8575. MX0 42
  8576. BX6 X0*X1
  8577. SX2 3RAAA FILE HEADER
  8578. BX6 X2+X6
  8579. SA6 CKY1 KEY WORD ONE
  8580. MX7 0
  8581. SA7 CKY2 KEY WORD TWO
  8582. SA1 MDSE
  8583. SA0 X1 RESTORE *A0*
  8584. RMGET A0,WSAB,0,,CKY1 READ FILE HEADER
  8585. FETCH A0,ES,X2 FIT ERROR STATUS
  8586. SX1 B1
  8587. NZ X2,MDS7 IF FILE DOES NOT EXIST
  8588. MDS2 GETN A0,WSAB,,TKY1 NEXT FILE ENTRY
  8589. FETCH A0,FP,X2 FILE POSITION
  8590. MX1 0
  8591. SX2 X2-EOFF
  8592. ZR X2,MDS1 IF END OF FILE, NEXT SELECTIVE FILE
  8593. SA2 CKY1 ORIGINAL FILE NAME
  8594. MX0 42
  8595. BX2 X0*X2
  8596. SA3 TKY1 FILE NAME OF CURRENT ENTRY
  8597. BX3 X0*X3
  8598. BX4 X2-X3
  8599. NZ X4,MDS1 IF NEW FILE NAME
  8600. SA1 WSAB+2 VSN FROM DUMP ENTRY
  8601. MX0 36
  8602. BX1 X0*X1
  8603. SA2 TVSN
  8604. BX3 X1-X2
  8605. NZ X3,MDS2 IF VSNS NOT EQUAL, NEXT ENTRY
  8606. SA1 ADDF ADD/DELETE FLAG
  8607. NZ X1,MDS3 IF ADD PROCESS
  8608. SB5 B0 FILE DUMP ENTRY
  8609. RJ PDE PRINT DELETED ENTRY
  8610. RJ PVE PROCESS VSN ENTRY
  8611. NZ X1,MDSX IF ERROR, RETURN
  8612. DELETE DIRR,,TKY1 DELETE FILE DUMP ENTRY
  8613. EQ MDS1 NEXT SELECTIVE FILE
  8614.  
  8615. MDS3 PUT DIRR,WSAB,WSAL,,TKY1 INSERT INTO DIRECTORY
  8616. RJ FER FIT ERROR STATUS
  8617. NZ X1,MDS8 IF DUPLICATE DUMP ENTRY
  8618. SB5 B0
  8619. RJ PDE PRINT ADDED ENTRY
  8620. SX6 B1 FILES IN ENTRY
  8621. SA1 WSAB+3 INDEX FILE
  8622. ZR X1,MDS4 IF NO INDEX FILE
  8623. SX6 X6+B1
  8624. MDS4 SA6 MDSA SAVE COUNT OF FILES
  8625. SA1 TVSN
  8626. RJ SVK SET VSN KEY
  8627. RMGET DIRR,WSAB,0,,VKY1 READ VSN ENTRY
  8628. RJ FER FIT ERROR STATUS
  8629. NZ X1,MDS5 IF VSN ENTRY NOT FOUND
  8630. SA2 MDSA ACTIVE FILES ON DUMP ENTRY
  8631. SA3 WSAB+4 ACTIVE FILES FROM VSN ENTRY
  8632. IX6 X2+X3 UPDATE COUNT
  8633. SA6 A3
  8634. RMREP DIRR,WSAB,WSAL,,VKY1 REPLACE VSN ENTRY
  8635. RJ FER FIT ERROR STATUS
  8636. NZ X1,MDSX IF ERROR, RETURN
  8637. EQ MDS1 NEXT SELECTIVE FILE
  8638.  
  8639. MDS5 RMGET FITA,WSAB,0,,VKY1 READ VSN ENTRY FROM AUXILARY FIT
  8640. SA2 MDSA COUNT OF FILES ON DUMP ENTRY
  8641. BX6 X2
  8642. SA6 WSAB+4 INITIAL COUNT
  8643. MDS6 PUT DIRR,WSAB,WSAL,,VKY1 INSERT INTO DIRECTORY
  8644. RJ FER FIT ERROR STATUS
  8645. NZ X1,MDS9 IF DUPLICATE VSN ENTRY
  8646. SB5 B1
  8647. RJ PDE PRINT ADDED VSN ENTRY
  8648. SA1 WSAB+2 CONTINUATION VSN
  8649. ZR X1,MDS1 IF NO CONTINUATION VSN, SELECTIVE FILE
  8650. RJ SVK SET VSN KEY
  8651. RMGET FITA,WSAB,0,,VKY1 READ VSN FORM AUXILARY FIT
  8652. EQ MDS6 CONTINUE
  8653.  
  8654. MDS7 SA1 CKY1 FILE NAME
  8655. MX0 42
  8656. BX1 X0*X1
  8657. RJ SFN SPACE FILL NAME
  8658. SA6 MDSB+2
  8659. ERROR MDSB,,,MDS1 FILE NOT FOUND
  8660.  
  8661. MDS8 ERROR MDSC,,,MDSX,,E DUPLICATE DUMP ENTRY ON ADD
  8662.  
  8663. MDS9 ERROR MDSD,,,MDSX,,E DUPLICATE VSN ENTRY ON ADD
  8664.  
  8665. MDSA BSSZ 1 COUNT OF FILES IN DUMP ENTRY
  8666.  
  8667. MDSB DATA 20H0 *****
  8668. DATA C*XXXXXXX NOT FOUND IN DIRECTORY.*
  8669. MDSBL EQU *-MDSB
  8670.  
  8671. MDSC DATA 20H0 *****
  8672. DATA C*DUPLICATE DUMP ENTRY ON ADD.*
  8673. MDSCL EQU *-MDSC
  8674.  
  8675. MDSD DATA 20H0 *****
  8676. DATA C*DUPLICATE VSN ENTRY ON ADD.*
  8677. MDSDL EQU *-MDSD
  8678.  
  8679. MDSE BSSZ 1 SAVE *A0*
  8680. NOP SPACE 4,15
  8681. ** NOP - NOTIFY OPERATOR.
  8682. *
  8683. * *NOP* WILL NOTIFY THE OPERATOR AND PUT A MESSAGE INTO
  8684. * THE JOB-S DAYFILE. IF THIS JOB WAS SUBMITTED BY TAF,
  8685. * THE TAF IDENTIFIER (TT) WILL BE CLEARED SO TAF
  8686. * WILL NOT BE NOTIFIED OF SUCCESSFUL COMPLETION. THIS
  8687. * ROUTINE IS ALSO USED TO INFORM THE OPERATOR OF AN
  8688. * IMPENDING TAPE REQUEST FROM A TAF SUBMITTED JOB.
  8689. *
  8690. * ENTRY (A5) = MESSAGE ADDRESS.
  8691. * (TT) = TAF IDENTIFIER.
  8692. * (RQTREQ) .NE. 0, IF REQUEST FROM *RQT*.
  8693. *
  8694. * EXIT (TT) = 0, IF REQUEST NOT FROM *RQT* (DONT NOTIFY TAF).
  8695. * (TT) UNCHANGED, IF REQUEST FROM *RQT*.
  8696. *
  8697. * USES X - 1, 6.
  8698. * A - 1, 6.
  8699. *
  8700. * MACROS MESSAGE, RECALL.
  8701.  
  8702.  
  8703. NOP3 SA1 RQTREQ
  8704. NZ X1,NOPX IF REQUEST NOT FROM *RQT*, RETURN
  8705. SA6 TT
  8706.  
  8707. NOP SUBR ENTRY/EXIT
  8708. NOP1 SA1 B0 GET RA+0
  8709. SX6 5
  8710. LX6 12
  8711. BX6 X6+X1 SET CFO AND PAUSE BITS
  8712. SA6 A1
  8713. SA1 RQTREQ
  8714. ZR X1,NOP1.1 IF REQUEST NOT FROM *RQT*
  8715. MESSAGE A5,2
  8716. EQ NOP2 GO INTO RECALL UNTIL RESPONSE
  8717.  
  8718. NOP1.1 MESSAGE A5,3
  8719. MESSAGE NOPA,2
  8720. MESSAGE NOPB,3
  8721. NOP2 RECALL
  8722. SA1 B0 CHECK CFO BIT IN RA+0
  8723. LX1 59-14
  8724. NG X1,NOP2 IF NO RESPONSE
  8725. MESSAGE NOPC,2
  8726. SA1 70B GET RESPONSE FROM RA+70B
  8727. AX1 48
  8728. SX6 X1-2RGO CHECK FOR *GO* RESPONSE
  8729. ZR X6,NOP3 IF RESPONSE .EQ. *GO*, RETURN
  8730. EQ NOP1 RE-ISSUE MESSAGE ON INCORRECT RESPONSE
  8731.  
  8732. NOPA DATA C*$SEE JOB DAYFILE.*
  8733.  
  8734. NOPB DATA C* NOTE FAILURE, THEN TYPE IN CFO,JSN.GO.*
  8735.  
  8736. NOPC BSSZ 1 ZERO WORD
  8737. NTF SPACE 4,20
  8738. ** NTF - NOTIFY TAF.
  8739. *
  8740. * *NTF* WILL ISSUE A *SIC* REQUEST TO NOTIFY TAF THAT
  8741. * THE PRESENT *DMREC* FUNCTION HAS COMPLETED.
  8742. *
  8743. * ENTRY (TT) = TAF IDENTIFIER
  8744. * (XXPFN) = PFN OF DATA FILE OR LOG FILE.
  8745. * (TTFLG) = 1 - IF *ARF* DUMP.
  8746. * 2 - IF RECOVER *DB* FILE (UPDATE PROCESSOR).
  8747. * 3 - IF *BRF* DOWN (UPDATE PROCESSOR).
  8748. *
  8749. * EXIT *SIC* REQUEST ISSUED TO TAF.
  8750. *
  8751. * USES X - 0, 1, 2, 5, 6.
  8752. * A - 1, 2, 5, 6.
  8753. * B - 7.
  8754. *
  8755. * MACROS SYSTEM.
  8756.  
  8757.  
  8758. NTF SUBR ENTRY/EXIT
  8759. SA5 TT
  8760. ZR X5,NTFX IF TT NOT SPECIFIED
  8761. SB7 B1
  8762. RJ DXB CONVERT TO BINARY
  8763. SA1 TDFN
  8764. MX0 42
  8765. BX1 X0*X1
  8766. NTF1 BX6 X6+X1
  8767. SA6 NTFB SET PFN/ID
  8768. SA2 TTFLG TELL TAF FLAG
  8769. BX6 X2
  8770. SA6 NTFC STORE FUNCTION CODE IN *SIC* REQUEST
  8771.  
  8772. SYSTEM SIC,R,NTFA,NTFA+1
  8773.  
  8774. EQ NTFX RETURN
  8775.  
  8776. NTFA VFD 18/0,12//SSD/TRSI,30/0
  8777. VFD 12/2007B,30/0,18/4
  8778. VFD 42/6LCRMSIC,18/0
  8779. NTFB VFD 42/0,18/0
  8780. NTFC VFD 42/0,18/0
  8781. VFD 60/0
  8782. PAC SPACE 4,10
  8783. ** PAC - PACK CONTROL CARD.
  8784. *
  8785. * *PAC* - REPACKS A PARAMETER BUFFER INTO A CONTROL CARD
  8786. * FORMAT. THE PARAMETER BUFFER MUST BE LEFT JUSTIFIED ZERO
  8787. * FILLED WITH NO SEPERATORS. THE PARAMETERS WILL BE PACKED
  8788. * WITH COMMA SEPERATORS AND END WITH A PERIOD.
  8789. *
  8790. * ENTRY (B5) - ADDRESS OF CONTROL WORD BUFFER.
  8791. * (B6) - PARAMETER COUNT.
  8792. * (B7) - ADDRESS OF PAREMETER BUFFER.
  8793. *
  8794. * EXIT (B2) - NUMBER OF WORDS IN CONTROL CARD.
  8795. *
  8796. * USES X - 0, 1, 2, 3, 6.
  8797. * A - 1, 2, 6.
  8798. * B - 2, 3, 6.
  8799.  
  8800.  
  8801. PAC SUBR ENTRY/EXIT
  8802. MX0 6 CHARACTER MASK
  8803. SB2 B0 REPLACEMENT WORD COUNT
  8804. SB3 60 PARAMETER LOCATION POINTER
  8805. SA2 B5+
  8806. SA1 B7+
  8807. PAC1 BX3 X0*X1
  8808. ZR X3,PAC3 IF NO MORE CHARACTERS
  8809. LX3 B3
  8810. BX2 X2+X3
  8811. SB3 B3-6
  8812. LX1 6
  8813. PAC2 NE B3,B0,PAC1 IF REPLACEMENT WORD NOT FULL
  8814. BX6 X2
  8815. SA6 A2 REPLACE REPLACEMENT WORD
  8816. SA2 A2+1
  8817. SB2 B2+B1
  8818. MX2 0 ZERO OUT WORD
  8819. SB3 60
  8820. EQ PAC1 CONTINUE
  8821.  
  8822. PAC3 SB3 B3-6
  8823. SB6 B6-1 DECREMENT PARAMETER COUNT
  8824. ZR B6,PAC4 IF LAST PARAMETER
  8825. SX3 1R,
  8826. LX3 B3 POSITION COMMA
  8827. BX2 X2+X3
  8828. SA1 A1+1
  8829. EQ PAC2 CONTINUE
  8830.  
  8831. PAC4 SX3 1R)
  8832. LX3 B3
  8833. BX6 X2+X3
  8834. SA6 A2
  8835. SB2 B2+B1 INCREMENT PACKED WORD COUNT
  8836. EQ PACX RETURN
  8837. PDE SPACE 4,20
  8838. ** PDE - PRINT DELETED ENTRY.
  8839. *
  8840. * ENTRY (B5) = 0, IF DUMP ENTRY.
  8841. * 1, IF VSN ENTRY.
  8842. * (ADDF) = 0, DELETE ENTRY.
  8843. * 1, ADD ENTRY.
  8844. * (WSAB) = FWA OF DELETED ENTRY.
  8845. *
  8846. * EXIT ENTRY PRINTED.
  8847. *
  8848. * USES X - 0, 1, 2, 3, 5, 6, 7.
  8849. * A - 1, 2, 3, 5, 6, 7.
  8850. * B - NONE.
  8851. *
  8852. * CALLS BFL, LDE, SFN.
  8853. *
  8854. * MACROS EDATE, ETIME.
  8855.  
  8856.  
  8857. PDE SUBR ENTRY/EXIT
  8858. RJ BFL BLANK FILL LINE
  8859. SA1 PDEA
  8860. SA2 ADDF ADD FLAG
  8861. ZR X2,PDE1 IF ENTRY DELETED
  8862. SA1 PDEC
  8863. PDE1 BX6 X1
  8864. SA6 PLIN+1
  8865. EQ B5,B1,PDE4 IF VSN ENTRY
  8866. SA2 WSAB FILE NAME
  8867. MX0 -18
  8868. BX1 -X0*X2 COPY NUMBER
  8869. SX3 3RBBB FILE DUMP ENTRY
  8870. BX3 X1-X3
  8871. ZR X3,PDE2 IF FILE DUMP ENTRY
  8872. SA3 LOGT AFTER IMAGE LOG TYPE
  8873. BX3 X0*X3
  8874. BX6 X1+X3
  8875. EQ PDE3 CONTINUE
  8876.  
  8877. PDE2 SA1 TFIL FILE DUMP TYPE
  8878. BX6 X1
  8879. PDE3 SA6 PLIN+2
  8880. BX1 X0*X2 FILE NAME
  8881. RJ SFN SPACE FILL NAME
  8882. LX6 53-59
  8883. SA6 PLIN+3
  8884. SA5 WSAB+1 PACKED DATE/TIME
  8885. ETIME X5 UNPACK TIME
  8886. SA6 PLIN+5
  8887. AX5 18
  8888. EDATE X5 UNPACK DATE
  8889. SA6 PLIN+4
  8890. SA1 WSAB+2 VSN NUMBER
  8891. MX0 36
  8892. BX1 X0*X1
  8893. RJ SFN SPACE FILL NAME
  8894. LX6 47-59
  8895. SA6 PLIN+6
  8896. MX7 0
  8897. SA7 PLIN+8 TERMINATE LINE
  8898. EQ PDE5 PRINT THE LINE
  8899.  
  8900. PDE4 SA2 WSAB VSN NUMBER
  8901. LX2 59-35
  8902. MX0 36
  8903. BX1 X0*X2
  8904. RJ SFN SET FILE NAME
  8905. SA6 PLIN+3
  8906. SA2 PDEB
  8907. BX7 X2
  8908. SA7 PLIN+2
  8909. MX6 0
  8910. SA6 PLIN+4 TERMINATE LINE
  8911. PDE5 RJ LDE PRINT ENTRY
  8912. EQ PDEX RETURN
  8913.  
  8914. PDEA DATA 10HDELETED -
  8915. PDEB DATA 10H VSN =
  8916. PDEC DATA 10H ADDED -
  8917. PDT SPACE 4,20
  8918. ** PDT - PACK DATE AND TIME.
  8919. *
  8920. * *PDT* GENERATES A PACKED DATE AND TIME FROM DATE/TIME
  8921. * IN THE FORMAT OF THE INPUT PARAMETERS.
  8922. *
  8923. * ENTRY (X2) = DATE - 6LYYMMDD
  8924. * (X3) = TIME - 6LHHMMSS
  8925. *
  8926. * EXIT (X1) = 0 IF NO ERRORS
  8927. * (X6) = PACKED DATE/TIME
  8928. *
  8929. * USES A - 2, 6.
  8930. * X - 0, 1, 2, 5, 6.
  8931. * B - 7.
  8932. *
  8933. * CALLS DXB.
  8934. *
  8935. * MACROS ERROR.
  8936.  
  8937.  
  8938. PDT SUBR ENTRY/EXIT
  8939. SB7 B1
  8940. BX6 X2
  8941. SA6 TEMP1 SAVE DATE
  8942. BX6 X3
  8943. SA6 TEMP2 SAVE TIME
  8944. MX0 12
  8945. BX5 X0*X2
  8946. RJ =XDXB YEAR
  8947. NZ X4,PDT1 IF ERROR
  8948. SX6 X6-70D
  8949. LX6 6
  8950. SA6 DAT XXXXY0
  8951. SA2 TEMP1
  8952. LX2 12
  8953. MX0 12
  8954. BX5 X0*X2
  8955. RJ =XDXB
  8956. NZ X4,PDT1 IF ERROR
  8957. SA2 DAT
  8958. BX6 X6+X2
  8959. LX6 6
  8960. SA6 A2 XXXYM0
  8961. SA2 TEMP1
  8962. LX2 24
  8963. MX0 12
  8964. BX5 X0*X2
  8965. RJ =XDXB DAY
  8966. NZ X4,PDT1 IF ERROR
  8967. SA2 DAT
  8968. BX6 X6+X2
  8969. LX6 6
  8970. SA6 A2 XXYMD0
  8971. SA2 TEMP2
  8972. MX0 12
  8973. BX5 X0*X2
  8974. RJ =XDXB HOUR
  8975. NZ X4,PDT1 IF ERROR
  8976. SA2 DAT
  8977. BX6 X6+X2
  8978. LX6 6
  8979. SA6 A2 XYMDH0
  8980. SA2 TEMP2
  8981. MX0 12
  8982. LX2 12
  8983. BX5 X0*X2
  8984. RJ =XDXB MINUTE
  8985. NZ X4,PDT1 IF ERROR
  8986. SA2 DAT
  8987. BX6 X6+X2
  8988. LX6 6
  8989. SA6 A2 YMDHM0
  8990. SA2 TEMP2
  8991. MX0 12
  8992. LX2 24
  8993. BX5 X0*X2
  8994. RJ =XDXB SECOND
  8995. NZ X4,PDT1 IF ERROR
  8996. SA2 DAT
  8997. BX6 X6+X2
  8998. SA6 A2 YMDHMS
  8999. SX1 B0
  9000. EQ PDTX EXIT NORMAL
  9001.  
  9002. PDT1 ERROR PDTA,,,PDTX,,E PACKED DATE/TIME CONVERSION ERROR
  9003.  
  9004. PDTA DATA 20H0 *****
  9005. DATA C*PACKED DATE/TIME CONVERSION ERROR.*
  9006. PDTAL EQU *-PDTA
  9007. PRD SPACE 4,30
  9008. ** PRD - PUT RECORD.
  9009. *
  9010. * *PRD* BUILDS *CRM* FILES FROM RECORDS EXTRACTED FROM
  9011. * A *DMREC* DUMP TAPE. THIS ROUTINE ACCOMMODATES
  9012. * COMPRESSED AND NON-COMPRESSED RECORDS WITH OR WITHOUT
  9013. * EMBEDDED KEYS.
  9014. *
  9015. * ENTRY (LFWA) = FWA OF ENTIRE RECORD.
  9016. * (LLGN) = LENGTH OF RECORD IN WORDS (INCLUDES
  9017. * NON-EMBEDDED KEY)
  9018. * (LCOMP) = COMPRESSION FLAG - NG. IF COMPRESSED.
  9019. * (LUCC) = NUMBER OF UNUSED CHARACTERS IN RECORD.
  9020. * (LKLOC) = WORD POSITION FOR KEY.
  9021. * = 0 - IF NON-EMBEDDED KEY.
  9022. * (LKP) = POSITION OF KEY IN WORD.
  9023. * = 10 - IF NON-EMBEDDED KEY.
  9024. * (LKS) = KEY SIZE IN CHARACTERS.
  9025. *
  9026. * EXIT (X1) = 0 - IF NO ERRORS.
  9027. *
  9028. * USES X - 1, 2, 3, 4, 5, 6, 7.
  9029. * A - 1, 2, 3, 4, 5, 6, 7.
  9030. * B - NONE.
  9031. *
  9032. * CALLS DCK, DCR.
  9033. *
  9034. * MACROS ERROR, FETCH, PUT, STORE.
  9035.  
  9036.  
  9037. PRD SUBR ENTRY/EXIT
  9038. SA1 LFWA FWA OF RECORD
  9039. BX6 X1
  9040. SA6 PRDA WSA FOR *PUT*
  9041. SA2 LLGN LENGTH OF RECORD
  9042. SX5 10
  9043. SA4 LUCC GET UNUSED CHARACTER COUNT
  9044. IX6 X5*X2
  9045. IX6 X6-X4
  9046. SA6 PRDA+1 RL FOR *PUT*
  9047. SA1 LCOMP COMPRESSION FLAG
  9048. NG X1,PRD3 IF RECORD COMPRESSED
  9049.  
  9050. * SET *PUT* PARAMETERS FOR UNCOMPRESSED RECORDS.
  9051.  
  9052. SA3 LKP
  9053. SX3 X3-10
  9054. ZR X3,PRD1 IF KEY NON-EMBEDDED
  9055. SA3 LKLOC WORD POSITION OF KEY
  9056. SA1 LFWA
  9057. SA4 LKP KEY POSITION
  9058. IX6 X1+X3 ABSOLUTE KEY ADDRESS
  9059. SA6 PRDA+2 ABSOLUTE KA FOR *PUT* AND DECOLLATION
  9060. BX6 X4
  9061. SA6 PRDA+3 KP FOR *PUT*
  9062. EQ PRD7 CHECK FOR COLLATED KEY
  9063.  
  9064. * SET *PUT* PARAMETERS FOR UNCOMPRESSED RECORDS
  9065. * WITH NON-EMBEDDED KEYS.
  9066.  
  9067. PRD1 SX7 B0
  9068. SA7 PRDA+3 KP FOR *PUT*
  9069. SA2 LFWA
  9070. BX7 X2
  9071. SA7 PRDA+2 KA FOR *PUT*
  9072. SA2 XXTY FILE TYPE
  9073. SX1 X2-2RAK
  9074. NZ X1,PRD2 IF NOT *AK* FILE
  9075.  
  9076. * PROCESS *AK* FILE.
  9077.  
  9078. SA3 LFWA
  9079. BX6 X3
  9080. SA6 PRDA WSA FOR *PUT*
  9081. SA2 LLGN RL
  9082. SX3 10
  9083. IX6 X2*X3
  9084. SA4 LUCC UNUSED CHARACTERS
  9085. IX7 X6-X4
  9086. SA7 PRDA+1 RL FOR *PUT*
  9087. EQ PRD7 CHECK FOR COLLATED KEY
  9088.  
  9089. PRD2 SA3 LKS *IS* OR *DA* FILE (KEY SIZE)
  9090. SX3 X3+9
  9091. SX4 10
  9092. IX5 X3/X4 WORDS IN KEY
  9093. SX4 10
  9094. SA2 LFWA
  9095. IX6 X2+X5
  9096. SA6 PRDA WSA FOR *PUT*
  9097. SA3 LLGN RL
  9098. IX6 X3-X5
  9099. IX7 X6*X4
  9100. SA5 LUCC UNUSED CHARACTERS
  9101. IX6 X7-X5
  9102. SA6 A6+B1 RL FOR *PUT*
  9103. EQ PRD7 CHECK FOR COLLATED KEY
  9104.  
  9105. * RECORD IS COMPRESSED - SET-UP DECOMPRESSION VECTOR.
  9106.  
  9107. PRD3 SA1 LKP
  9108. SX1 X1-10
  9109. ZR X1,PRD4 IF KEY NON-EMBEDDED
  9110. SA2 PRDA FWA OF RECORD
  9111. BX6 X2
  9112. SA6 PRDL FWA
  9113. SA3 PRDA+1 RL
  9114. BX6 X3
  9115. SA6 PRDM RL IN CHARACTERS
  9116. SA3 LKS KS
  9117. BX6 X3
  9118. SA6 PRDN KS IN CHARACTERS
  9119. SX6 B0
  9120. SA6 PRDK
  9121. SA6 PRDP
  9122. EQ PRD6 GO DECOMPRESS
  9123.  
  9124. * RECORD IS COMPRESSED AND CONTAINS A NON-EMBEDDED KEY.
  9125.  
  9126. PRD4 SX7 B0
  9127. SA7 PRDN KS = 0
  9128. SA7 PRDK KA = 0
  9129. SA7 PRDP KP = 0
  9130. SA3 XXTY FILE TYPE
  9131. SX4 X3-2RAK
  9132. PRD5 SA1 PRDA+1
  9133. BX6 X1
  9134. SA6 PRDM RL
  9135. SA2 PRDA
  9136. BX6 X2
  9137. SA6 PRDL FWA
  9138.  
  9139. * DECOMPRESS RECORD USING THE DECOMPRESSION VECTOR
  9140. * ALREADY SET-UP.
  9141.  
  9142. PRD6 SA1 PRDB VECTOR
  9143. RJ DCR DECOMPRESS RECORD
  9144. SA1 PRDO
  9145. NG X1,PRD9 IF ERROR IN DECOMPRESSION
  9146.  
  9147. * BUILD *PUT* PARAMETERS FOR COMPRESSED RECORDS.
  9148.  
  9149. SX7 CBUF DECOMPRESSION BUFFER
  9150. SA7 PRDA WSA FOR *PUT*
  9151. SA2 PRDO RETURNED RL
  9152. BX6 X2
  9153. SA6 A7+B1 RL FOR *PUT*
  9154. SX6 B0
  9155. SA6 A6+2 KP FOR *PUT*
  9156. SA1 LKP
  9157. SX1 X1-10
  9158. ZR X1,PRD7 IF NON - EMBEDDED KEY
  9159. SX6 CBUF
  9160. SA6 PRDA+2 SAVE NEW *KA*
  9161.  
  9162. * CHECK FOR COLLATED KEY - IF KEY IS IN A *IS*
  9163. * FILE, IT MUST BE DECOLLATED. SET-UP VECTOR AND
  9164. * DECOLLATE.
  9165.  
  9166. PRD7 SA1 XXTY FILE TYPE
  9167. SX3 X1-2RAK
  9168. NZ X3,PRD7.1 IF NOT AK FILE
  9169. SA2 LKP
  9170. SX6 X2-10
  9171. NZ X6,PRD7.1 IF EMBEDDED KEYS
  9172. SA6 PRDU ZERO KEY
  9173. SX7 A6
  9174. SA7 PRDA+2 RESET KA
  9175. EQ PRD8 CONTINUE PUT RECORDS
  9176.  
  9177. PRD7.1 SX2 X1-2RIS
  9178. NZ X2,PRD8 IF FILE IS NOT *IS*
  9179. FETCH DFIT,KT,X2
  9180. SX2 X2-#SKT#
  9181. NZ X2,PRD8 IF NOT SYMBOLIC KT
  9182.  
  9183. * DECOLLATE KEY.
  9184.  
  9185. SA1 PRDC VECTOR
  9186. RJ DCK DECOLLATE KEY
  9187.  
  9188. * PUT RECORDS USING *PUT* PARAMETERS.
  9189.  
  9190. PRD8 SA1 PRDA WSA
  9191. SA2 A1+B1 RL
  9192. SA3 A2+B1 KA
  9193. SA4 A3+B1 KP
  9194.  
  9195. PUT DFIT,X1,X2,,X3,X4
  9196. FETCH DFIT,ES,X1
  9197. ZR X1,PRDX IF NORMAL EXIT
  9198. SX1 X1-446B
  9199. NZ X1,PRD9 IF CRM ERROR
  9200. STORE DFIT,ES=0 DUPLICATE KEY FOUND - IGNORE ERROR
  9201. SX1 B0
  9202. EQ PRDX EXIT NORMALLY
  9203.  
  9204. PRD9 ERROR PRDR,,,PRDX,,E ERROR IN CRM -PUT-
  9205.  
  9206. PRDR DATA 20H0 *****
  9207. DATA C*ERROR IN CRM -PUT- (RECORD LOAD).*
  9208. PRDRL EQU *-PRDR
  9209.  
  9210. PRDA BSS 4 *PUT* PARAMETERS - WSA, RL, KA, KP
  9211. PRDB VFD 60/PRDL FWA OF RECORD
  9212. VFD 60/PRDM RECORD LENGTH IN CHARACTERS
  9213. VFD 60/PRDK KEY ADDRESS
  9214. VFD 60/PRDP KEY POSITION WITHIN WORD
  9215. VFD 60/PRDN KEY SIZE IN CHARACTERS
  9216. VFD 60/PRDT DESTINATION BUFFER
  9217. VFD 60/PRDJ LENGTH OF DESTINATION BUFFER IN CHARACTERS
  9218. VFD 60/PRDO RETURN RL IN CHARACTERS OR .NG. IF ERROR
  9219.  
  9220. PRDC VFD 60/PRDA+2 ABSOLUTE KEY ADDRESS
  9221. VFD 60/PRDA+3 KEY POSITION
  9222. VFD 60/LKS KEY SIZE
  9223. VFD 60/PRDQ DECOLLATION TABLE ADDRESS
  9224.  
  9225. PRDJ VFD 60/CBUFL*10
  9226. PRDK VFD 60/0 ZERO WORD FOR KA
  9227. PRDL BSSZ 1 FWA OF RECORD
  9228. PRDM BSSZ 1 RL
  9229. PRDN BSSZ 1 KS
  9230. PRDO BSSZ 1 RETURNED RL
  9231. PRDP BSSZ 1 KP
  9232. PRDQ VFD 60/LCOLL+10B
  9233. PRDT VFD 60/CBUF DESTINATION BUFFER ADDRESS
  9234. PRDU BSSZ 1 KEY ADDRESS FOR AK FILES - EMK=NO
  9235. PRS SPACE 4,30
  9236. ** PRS - PRESET ROUTINE.
  9237. *
  9238. * *PRS* CRACKS THE *DMREC* COMMAND AND SETS UP FOR
  9239. * THE MAIN PROGRAM. ERROR CHECKING IS PERFORMED ON
  9240. * COMMAND PARAMETERS.
  9241. *
  9242. * ENTRY DMREC(P1,P2,...PN)
  9243. *
  9244. * EXIT INPUT AND OUTPUT FILE INITIALIZED.
  9245. * (STDTIM) = PACKED START DATE AND TIME.
  9246. * (STDATE) = START DATE.
  9247. * (STTIME) = START TIME.
  9248. * (TT) = 0 IF *TT* OPTION NOT USED.
  9249. * (TT) = 1 IF *TT* OPTION USED.
  9250. * (Z) = 0 IF *Z* OPTION NOT USED.
  9251. * (Z) = 1 IF *Z* OPTION USED.
  9252. * (JOBORG) = 0 IF INTERACTIVE ORIGIN AND *L=OUTPUT*.
  9253. *
  9254. * USES X - 0, 1, 2, 3, 4, 6.
  9255. * A - 1, 2, 4, 6.
  9256. * B - 1, 4, 5.
  9257. *
  9258. * CALLS ARG, STL, ZAP.
  9259. *
  9260. * MACROS CLOCK, DATE, GETJO, MESSAGE, PDATE
  9261. * READ, SETLOF.
  9262.  
  9263.  
  9264. PRS SUBR ENTRY/EXIT
  9265. SB1 1
  9266. GETJO JOBORG GET JOB ORIGIN
  9267. SA1 JOBORG
  9268. SX6 X1-3
  9269. SB5 ARGA
  9270. SA6 A1+
  9271. SA1 ACTR ARGUMENT OF CONTROL CARD
  9272. SB4 X1
  9273. SA4 B1+B1 FIRST ARGUMENT
  9274. RJ ARG PROCESS ARGUMENTS
  9275. ZR X1,PRS2 IF NO ARGUMENT ERRORS
  9276. PRS1 MESSAGE PRSA,,R
  9277. EQ DMR6 EXIT
  9278.  
  9279. PRS2 PDATE STDTIM PACKED DATE AND TIME
  9280. CLOCK STTIME TIME
  9281. DATE STDATE DATE
  9282. MX0 42
  9283. SA1 O
  9284. BX1 X0*X1
  9285. SA2 PRSB
  9286. IX3 X1-X2
  9287. ZR X3,PRS3 IF *L=OUTPUT*
  9288. MX6 1
  9289. SA6 JOBORG SET NOT INTERACTIVE ORIGIN
  9290. PRS3 SA2 I
  9291. BX2 X0*X2
  9292. IX1 X1-X2
  9293. ZR X1,PRS1 IF INPUT FILE = OUTPUT FILE
  9294. SA1 Z
  9295. ZR X1,PRS5 IF *Z* ARGUMENTS NOT SELECTED
  9296. PRS4 SX2 I
  9297. RJ ZAP Z ARGUMENT PROCESSOR
  9298. EQ PRS6 NO PRESET READ
  9299.  
  9300. PRS5 ZR X2,PRS1 IF I=0 SELECTED
  9301. READ I PRESET READ FUNCTION
  9302. PRS6 MX0 42
  9303. SA1 O
  9304. BX1 X0*X1
  9305. SX2 O
  9306. BX6 X1+X2
  9307. SA6 LOFB STORE OUTPUT LFN IN LOF PARAMETERS
  9308. SETLOF LOF
  9309. RJ STL SET TITLE LINE
  9310. EQ PRSX EXIT
  9311.  
  9312.  
  9313. PRSA DATA C*COMMAND ARGUMENT ERRORS.*
  9314. PRSB DATA 6LOUTPUT DEFAULT LIST FILE NAME
  9315. PRSC DATA 5LINPUT DEFAULT INPUT FILE NAME
  9316. PRSZ BSS 0 END OF CODE FOR PRS
  9317. PVE SPACE 4,15
  9318. ** PVE - PROCESS VSN ENTRY.
  9319. *
  9320. * ENTRY (WSAB) = FWA OF DUMP ENTRY TO BE DELETED.
  9321. * (TVSN) = VSN OF DUMP.
  9322. *
  9323. * EXIT (X1) = 0, IF NO ERRORS.
  9324. * ACTIVE FILES COUNT REDUCED OR VSN ENTRY DELETED.
  9325. *
  9326. * USES X - 1, 2, 6.
  9327. * A - 1, 2, 6.
  9328. * B - 2, 5.
  9329. *
  9330. * CALLS FER, PDE, SVK.
  9331. *
  9332. * MACROS DELETE, RMGET, RMREP.
  9333.  
  9334.  
  9335. PVE SUBR ENTRY/EXIT
  9336. SA1 TVSN VSN NUMBER OF DUMP
  9337. RJ SVK SET VSN KEY
  9338. PVE1 SA1 WSAB+3 INDEX FILE
  9339. SB2 B1 REDUCE ACTIVE FILES COUNT
  9340. SX6 B2
  9341. SA6 PVEA SAVE *B2*
  9342. ZR X1,PVE2 IF NO INDEX FILE
  9343. SB2 B2+B1 INCREMENT REDUCE COUNT
  9344. SX6 B2
  9345. SA6 PVEA SAVE *B2*
  9346. PVE2 RMGET DIRR,WSAB,0,,VKY1 READ VSN ENTRY
  9347. RJ FER FIT ERROR STATUS
  9348. NZ X1,PVEX IF ERROR, RETURN
  9349. SA1 WSAB+4 COUNT OF ACTIVE FILES ON ALL REELS
  9350. SA2 PVEA RESTORE *B2*
  9351. SX6 X2
  9352. IX6 X1-X6 REDUCE COUNT
  9353. NZ X6,PVE3 IF SOME ACTIVE FILES LEFT
  9354. DELETE DIRR,,VKY1 DELETE VSN ENTRY
  9355. RJ FER FIT ERROR STATUS
  9356. NZ X1,PVEX IF ERROR, RETURN
  9357. SB5 B1
  9358. RJ PDE PRINT DELETED ENTRY
  9359. SA1 WSAB+2 CONTINUATION VSN
  9360. ZR X1,PVEX IF RETURN
  9361. RJ SVK SET VSN KEY
  9362. MX6 0
  9363. SA6 PVEA SET COUNT TO ZERO ON CONTINUATION
  9364. EQ PVE2 PROCESS CONTINUATION VSN
  9365.  
  9366. PVE3 SA6 A1 REPLACE COUNT
  9367. RMREP DIRR,WSAB,WSAL,,VKY1 REPLACE VSN ENTRY
  9368. RJ FER FIT ERROR STATUS
  9369. EQ PVEX RETURN
  9370.  
  9371. PVEA BSSZ 1 SAVE *B2* CELL
  9372. RAF SPACE 4,10
  9373. ** RAF - RETURN ALL FILES.
  9374. *
  9375. * ENTRY NONE.
  9376. *
  9377. * EXIT ALL FILES RETURNED.
  9378. *
  9379. *
  9380. * MACROS CLOSEM, RETURN.
  9381. *
  9382. * CALLS RDF.
  9383.  
  9384.  
  9385. RAF SUBR ENTRY/EXIT
  9386. RETURN XXJ,R
  9387. RETURN TP,R
  9388. RETURN SORTI,R
  9389. CLOSEM DIRR,U
  9390. RETURN ZZZZZDR,R
  9391. RETURN ZZZZSUB,R
  9392. RETURN ZZZZZG7,R
  9393. RJ RDF RETURN DATA FILES
  9394. EQ RAFX RETURN
  9395. RDD SPACE 4,25
  9396. ** RDD - READ DIRECTIVE FROM INPUT FILE.
  9397. *
  9398. * *RDD* READS DIRECTIVES FROM THE INPUT FILE.
  9399. * DOUBLE SPACES AND COMMAS ARE DELETED, SPACES CONVERTED
  9400. * TO COMMAS. THE DIRECTIVE STATEMENTS ARE COPIED TO THE
  9401. * OUTPUT FILE.
  9402. *
  9403. * ENTRY (JOBORG) = 0 IF INTERACTIVE ORIGIN.
  9404. *
  9405. * EXIT (B7) = LWA+1 OF DIRECTIVES IN BUFFER.
  9406. * (DIRFLAG) = LWA+1 OF DIRECTIVES IN BUFFER.
  9407. * (X1) = .NE. 0 IF EOF ENCOUNTERED.
  9408. * (EOF) .NE. 0 IF EOF ENCOUNTERED.
  9409. *
  9410. * USES X - 0, 1, 2, 3, 6, 7.
  9411. * A - 1, 2, 3, 6, 7.
  9412. * B - 6, 7.
  9413. *
  9414. * CALLS ALC, RSC.
  9415. *
  9416. * MACROS READS, WRITES, WRITEW.
  9417.  
  9418.  
  9419. RDD SUBR ENTRY/EXIT
  9420. RDD1 READS I,DIR,DIRL
  9421. NZ X1,RDD4 IF EOR/EOF ENCOUNTERED
  9422. SA1 JOBORG
  9423. NZ X1,RDD2 IF NOT INTERACTIVE INPUT
  9424. SA2 I
  9425. SA3 PRSC CHECK FOR DEFAULT INPUT FILE NAME
  9426. MX0 42
  9427. BX2 X0*X2
  9428. BX3 X0*X3
  9429. IX3 X2-X3
  9430. ZR X3,RDD3 IF DEFAULT INPUT FILE NAME
  9431. SX2 1
  9432. RJ ALC ADVANCE LINE COUNT
  9433. WRITES O,DIR,DIRL
  9434. EQ RDD3 CONTINUE
  9435.  
  9436. RDD2 SX2 2
  9437. RJ ALC ADVANCE LINE COUNT
  9438. WRITEW O,RDDA,2
  9439. WRITES O,DIR,DIRL
  9440. RDD3 SB6 DIR
  9441. SB7 DIR+DIRL
  9442. RJ RSC REMOVE EXTRA SPACES AND COMMAS
  9443. ZR B3,RDD1 IF BLANK CARD
  9444. MX1 0 SET NO ERRORS
  9445. SX7 B7
  9446. SA7 DIRFLAG SAVE DIRECTIVE LWA+1
  9447. EQ RDDX RETURN
  9448.  
  9449. RDD4 SX6 B1 SET EOF
  9450. BX1 X6
  9451. SA6 EOF STORE EOF FLAG
  9452. EQ RDDX RETURN
  9453.  
  9454. RDDA DATA 20H0 >>>>>
  9455. RDE SPACE 4,20
  9456. ** RDE - READ DIRECTORY ENTRY.
  9457. *
  9458. * ENTRY (LSTC) = 1, IF DATE/TIME QUALIFICATION.
  9459. * (TKY1) = PREVIOUS KEY VALUE.
  9460. *
  9461. * EXIT (X6) = 0, IF ENTRY QUALIFIED.
  9462. * 1, IF NEW FILE
  9463. * 2, IF VSN ENTRY READ.
  9464. * 3, IF END OF FILE.
  9465. * 4, IF ENTRY NOT QUALIFIED.
  9466. * (PLIN) = FWA OF FORMATTED LINE.
  9467. *
  9468. * USES X - ALL.
  9469. * A - 1, 2, 3, 5, 6.
  9470. * B - 6.
  9471. *
  9472. * CALLS BFL, CDD, FER, SFN.
  9473. *
  9474. * MACROS GETN, EDATE, ETIME.
  9475.  
  9476.  
  9477. RDE SUBR ENTRY/EXIT
  9478. RJ BFL BLANK FILL PRINT LINE
  9479. GETN DIRR,WSAB,,CKY1 READ NEXT ENTRY
  9480. RJ FER FIT ERROR STATUS
  9481. SX2 X1-3
  9482. NZ X2,RDE0 IF NOT END OF FILE
  9483. SX6 3
  9484. EQ RDEX RETURN
  9485.  
  9486. RDE0 MX0 42
  9487. SA1 CKY1 NEW KEY VALUE
  9488. BX2 X0*X1
  9489. SA3 TKY1 PREVIOUS KEY VALUE
  9490. BX3 X0*X3
  9491. BX2 X2-X3
  9492. ZR X2,RDE2 IF KEYS MATCH
  9493. SA2 VSNK VSN TYPE KEY
  9494. SA3 CKY2 SECOND WORD OF THE KEY
  9495. BX3 X2-X3
  9496. SX6 2
  9497. ZR X3,RDEX IF VSN TYPE KEY
  9498. SX6 B1 NEW FILE
  9499. BX7 X1
  9500. SA7 TKY1 REPLACE PREVIOUS KEY VALUE
  9501. EQ RDEX RETURN
  9502.  
  9503. RDE2 BX7 X1
  9504. SA7 TKY1 REPLACE PREVIOUS KEY VALUE
  9505. SA5 CKY2 DATE/TIME
  9506. ETIME X5 UNPACK TIME
  9507. SA6 PLIN+3
  9508. AX5 18
  9509. EDATE X5 UNPACK DATE
  9510. BX5 X6
  9511. SA2 LSTC DATE/TIME PARAMETER
  9512. ZR X2,RDE3 IF NO DATE/TIME QUALIFICATION
  9513. SA2 DATE DATE FROM INPUT PARAMETER
  9514. IX3 X2-X5 COMPARE DATES
  9515. SX6 4
  9516. NG X3,RDEX IF ENTRY DOES NOT QUALIFY
  9517. NZ X3,RDE3 IF DATES NOT EQUAL
  9518. SA4 PLIN+3 TIME OF DUMP
  9519. SA2 TIME TIME FROM INPUT PARAMETER
  9520. BX7 X4
  9521. IX3 X2-X7 COMPARE TIMES
  9522. NG X3,RDEX IF ENTRY DOES NOT QUALIFY
  9523. RDE3 BX6 X5
  9524. SA6 PLIN+2
  9525. SA1 CKY1 FILE NAME
  9526. MX0 42
  9527. BX1 X0*X1
  9528. RJ SFN SPACE FILL NAME
  9529. SA6 PLIN+1
  9530. SA2 CKY1
  9531. MX0 -12
  9532. BX1 -X0*X2 EXTRACT COPY NUMBER
  9533. SX2 2RBB FILE DUMP ENTRY
  9534. BX2 X1-X2
  9535. ZR X2,RDE4 IF FILE DUMP ENTRY
  9536. BX6 X0*X6
  9537. SA5 RDEA AFTER IMAGE LOG
  9538. MX0 -6
  9539. BX1 -X0*X1 COPY NUMBER
  9540. BX5 X1+X5
  9541. BX6 X5+X6
  9542. SA6 PLIN+1
  9543. SA1 WSAB+2 VSN
  9544. RJ SFN SPACE FILL NAME
  9545. SA6 PLIN+7
  9546. SA1 WSAB+4 NUMBER OF AFTER IMAGE RECORDS
  9547. RJ CDD CONVERT TO DISPLAY CODE
  9548. LX6 41-23
  9549. SA6 PLIN+6
  9550. MX6 0
  9551. SA6 PLIN+8
  9552. EQ RDEX RETURN
  9553.  
  9554. RDE4 MX0 42
  9555. BX6 X0*X6
  9556. SX2 3R D FILE DUMP
  9557. BX2 -X0*X2
  9558. BX6 X2+X6
  9559. SA6 PLIN+1
  9560. SA2 WSAB+2 VSN
  9561. MX0 -18
  9562. BX1 X0*X2
  9563. RJ SFN SPACE FILL NAME
  9564. SA6 PLIN+7
  9565. SA2 WSAB+2 FILE DUMP FORMAT
  9566. SB6 B0
  9567. MX0 -6 GET DUMP MODE
  9568. BX2 -X0*X2
  9569. ZR X2,RDE4.1 IF BLOCK MODE
  9570. SB6 B1+
  9571. RDE4.1 SA5 TFOR+B6
  9572. BX6 X5
  9573. SA6 PLIN+4
  9574. SA1 WSAB+4 FILE POSITION ON DUMP TAPE
  9575. RJ CDD CONVERT TO DISPLAY CODE
  9576. LX6 29-11
  9577. MX0 30
  9578. SA1 PLIN+4
  9579. BX1 X0*X1
  9580. BX6 -X0*X6
  9581. BX6 X1+X6
  9582. SA6 PLIN+4
  9583. SA1 WSAB+3 INDEX FILE
  9584. ZR X1,RDE5 IF NO INDEX FILE NAME
  9585. RJ SFN SPACE FILL NAME
  9586. SA6 PLIN+5
  9587. SA1 WSAB+5 INDEX FILE POSITION
  9588. RJ CDD CONVERT TO DISPLAY CODE
  9589. MX0 42
  9590. SA1 PLIN+5
  9591. BX1 X0*X1
  9592. BX6 -X0*X6
  9593. BX6 X1+X6
  9594. SA6 PLIN+5
  9595. RDE5 MX6 0
  9596. SA6 PLIN+8
  9597. EQ RDEX RETURN
  9598.  
  9599. RDEA VFD 48/0,6/1LA,6/0
  9600. RDF SPACE 4,15
  9601. ** RDF - RETURN DATA FILES.
  9602. *
  9603. * *RDF* RETURNS *CRM* DATA, INDEX AND OWNCODE FILES.
  9604. *
  9605. * ENTRY (XXPFN) = PFN OF DATA FILE.
  9606. * (XXIXN) = PFN OF INDEX FILE.
  9607. * (XXHASH) = PFN OF OWNCODE FILE.
  9608. *
  9609. * EXIT FILES RETURNED.
  9610. *
  9611. * USES X - 1.
  9612. * A - 1.
  9613. * B - NONE.
  9614. *
  9615. * MACROS RETURN.
  9616.  
  9617.  
  9618. RDF SUBR ENTRY/EXIT
  9619. RETURN DF
  9620. SA1 XXIXN
  9621. ZR X1,RDF1 IF NO INDEX FILE PRESENT
  9622. RETURN IF
  9623. RDF1 SA1 XXHASH
  9624. ZR X1,RDFX IF NO OWNCODE FILE PRESENT
  9625. RETURN OF
  9626. EQ RDFX RETURN
  9627. RDT SPACE 4,15
  9628. ** RDT - REFORMAT DATE OR TIME.
  9629. *
  9630. * THIS SUBROUTINE CONVERTS THE DATE OR TIME GIVEN ON
  9631. * THE INPUT DIRECTIVE TO AN (UNPACKED) FORMAT.
  9632. *
  9633. * ENTRY (DATE) = DIRECTIVE DATE.
  9634. * (TIME) = DIRECTIVE TIME.
  9635. * (X1) = 0, IF DATE CONVERSION.
  9636. * .NE. 0, IF TIME CONVERSION.
  9637. *
  9638. * EXIT (X6) = CONVERTED DATE OR TIME.
  9639. *
  9640. * USES A - 1, 2.
  9641. * X - 0, 1, 2, 3, 4, 5, 6.
  9642. * B - NONE.
  9643.  
  9644.  
  9645. RDT SUBR ENTRY/EXIT
  9646. NZ X1,RDT1 IF TIME CONVERSION
  9647. SA2 DATE DIRECTIVE DATE
  9648. SA1 FILLD */*
  9649. EQ RDT2 CONVERT
  9650.  
  9651. RDT1 SA2 TIME DIRECTIVE TIME
  9652. SA1 FILLT *.*
  9653. RDT2 MX0 12
  9654. BX3 X0*X2
  9655. LX3 54-0 LEFT JUSTIFY MONTH
  9656. LX2 12
  9657. BX4 X0*X2
  9658. LX4 36 LEFT JUSTIFY DAY
  9659. LX2 12
  9660. BX5 X0*X2
  9661. LX5 18
  9662. BX5 X5+X4 MONTH AND DAY
  9663. BX5 X5+X3 MONTH, DAY AND YEAR
  9664. BX6 X1+X5 ADD LOGICAL MASK
  9665. EQ RDTX RETURN
  9666. REC SPACE 4,20
  9667. ** REC - RECOVER DATA FILE.
  9668. *
  9669. * *REC* WILL RECOVER THE DATE FILE SPECIFIED, OR IN
  9670. * THE CASE OF A *BRF* RECOVERY, ALL DATA FILES ARE
  9671. * RECOVERED THAT HAVE BEEN FOUND DEFECTIVE.
  9672. *
  9673. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  9674. * (X2) = NEXT WORD IN BUFFER.
  9675. * (X6) = OPERATION FLAG (VALIDATE PARAMETERS).
  9676. *
  9677. * EXIT EXIT TO LOD1 FOR LOAD/UPDATE PROCESSOR.
  9678. *
  9679. * USES X - 1, 2, 3, 4, 6, 7.
  9680. * A - 1, 2, 3, 4, 6, 7.
  9681. * B - 5.
  9682. *
  9683. * CALLS SPR, BRT, RAF.
  9684. *
  9685.  
  9686.  
  9687. REC BSS 0 ENTRY
  9688. RJ SPR GET PARAMETERS
  9689. SB5 B5-2
  9690. NE B5,B0,LOD9 IF MORE THAN ONE FILE
  9691. SA3 TDFN GET FN
  9692. SA1 LMASK MASK
  9693. BX3 X1*X3
  9694. SA2 LWORD
  9695. BX7 X2-X3
  9696. ZR X7,REC1 IF *BRF* RECOVERY
  9697. SX6 B1
  9698. SA6 BRFFLG
  9699. SX7 2
  9700. SA7 TTFLG SET TAF *DB* RECOVERY FLAG
  9701. EQ REC10 CONTINUE
  9702.  
  9703. REC1 SX7 3
  9704. SA7 TTFLG SET TAF *BRF* RECOVERY FLAG
  9705. SA2 DBNAME
  9706. MX6 1
  9707. BX7 X2
  9708. SA6 BRFFLG SET FLAG FOR BRF RECOVERY
  9709. SA2 XXPFN2
  9710. SA7 XXPFN
  9711. RJ BRT BUILD RECOVERY TABLES
  9712. NZ X1,REC11 IF ERROR
  9713. SX6 TTIG
  9714. REC2 SA6 ITIT
  9715. BX7 X7-X7
  9716. SA1 X6
  9717. ZR X1,REC8 IF END OF TABLE
  9718. SA7 TT ZERO OUT TT SO TAF WILL NOT BRING UP DB
  9719. MX0 30
  9720. BX1 X1*X0
  9721. LX1 30
  9722. RJ COD OCTAL TO DISPLAY CONVERSION
  9723. MX2 48
  9724. BX1 X2*X4
  9725. SB2 1RZ REPLACEMENT CHARACTER
  9726. SB5 -RECA
  9727. SB3 RECD
  9728. RJ SNM SET NAME
  9729. SA2 ITIT
  9730. SA1 X2+1
  9731. LX1 30
  9732. MX0 30
  9733. BX1 X0*X1
  9734. SB2 1RX
  9735. SB5 RECD
  9736. RJ SNM
  9737. MESSAGE RECD,3 ISSUE DAYFILE MESSAGE
  9738. SA2 ITIT
  9739. SX6 X2+2 INCREMENT POINTER TO TTIG
  9740. EQ REC2 PROCESS NEXT ENTRY
  9741.  
  9742. REC8 SA1 TT
  9743. NZ X1,REC8.1 IF NO IGNORE TABLE ENTRIES
  9744. SA5 RECB
  9745. SX6 B0
  9746. SA6 RQTREQ
  9747. RJ NOP NOTIFY OPERATOR
  9748. REC8.1 SX6 TTBRF
  9749. SA6 IIBRF INITIALIZE *BRF* TABLE SEARCH
  9750. REC9 SX7 B0
  9751. SA7 LENGTH USE DEFAULT LENGTH
  9752. SA1 IIBRF
  9753. SA2 X1 GET *BRF*
  9754. ZR X2,REC11 IF NO MORE ENTRIES - EXIT
  9755. SX6 X1+1
  9756. SA6 A1 INCREMENT *BRF* POINTER
  9757. BX6 X2
  9758. SA6 TDFN STORE *BRF* NAME
  9759. EQ CRT1 GO ALLOCATE THIS *BRF* AND RETURN
  9760.  
  9761. REC10 SA2 DATE
  9762. SA3 TVSN
  9763. BX6 X2
  9764. SA6 DATE1 STORE AS END DATE
  9765. BX6 X3
  9766. SA6 RECE SAVE VSN FROM DIRECTIVE
  9767. SA3 TIME
  9768. BX6 X3
  9769. SA6 TIME1 STORE AS END TIME
  9770. SX6 B0
  9771. SA6 A2 ZERO BEGIN DATE
  9772. SA6 A3 ZERO BEGIN TIME
  9773. EQ LOD1 GO RECOVER FILE
  9774.  
  9775. REC11 CLOSEM DFIT,U RETURN CRM FILES
  9776. RJ RAF RETURN ALL FILES
  9777. EQ DMR3 RETURN
  9778.  
  9779. RECA DATA C* TRAN. SEQ. ZZZZZZZZB WITH ID XXXXX MIGHT BE BAD.*
  9780. RECB DATA C* INFORM DATA BASE ADMN. OF BRF DISK ERROR.*
  9781. RECD BSS 5
  9782. RECE BSSZ 1 VSN FROM DIRECTIVE
  9783. RQT SPACE 4,25
  9784. ** RQT - REQUEST TAPE FOR DMREC DUMP/LOAD OPERATIONS.
  9785. *
  9786. * *RQT* REQUESTS A TAPE FOR *DMREC* DUMP/LOADS.
  9787. * IF THE FILE NAME IS ALREADY ASSIGNED, THE REQUEST
  9788. * IS IGNORED AND THE RETURNING VSN SET TO SPACES.
  9789. * IF THE FILE IS ASSIGNED TO DISK THE RETURNING VSN
  9790. * IS SET TO *DISK*.
  9791. *
  9792. * ENTRY (B7) = ADDRESS OF FET.
  9793. * (X6) = VSN REQUESTED.
  9794. * 0, IF NEW VSN HAS TO BE ASSIGNED.
  9795. * (X5) = 0, IF READ MODE.
  9796. * .NE. 0 - IF WRITE MODE.
  9797. *
  9798. * EXIT (X6) = VSN OF TAPE LOADED.
  9799. * = 6L - IF LFN PREVIOUSLY ASSIGNED.
  9800. * = 6LDISK - IF ASSIGNED TO DISK.
  9801. *
  9802. * USES X - 0, 1, 2, 6, 7.
  9803. * A - 1, 6, 7.
  9804. * B - 2, 5.
  9805. *
  9806. * CALLS CER, NOP, SFN, SNM.
  9807. *
  9808. * MACROS ERROR, LABEL, OPEN, STATUS.
  9809.  
  9810.  
  9811. RQT SUBR ENTRY/EXIT
  9812. SX7 B1
  9813. SX2 B0+
  9814. LX7 39-0
  9815. ZR X5,RQT1 IF READ MODE
  9816. MX2 1 WRITE
  9817. LX7 40-39 RING IN
  9818. RQT1 BX2 X2+X7
  9819. BX7 X2
  9820. SA7 RQTC SAVE (X2)
  9821. ZR X6,RQT2 IF NO VSN SPECIFIED
  9822. BX1 X6
  9823. RJ SFN SPACE FILL
  9824. MX0 36
  9825. BX6 X0*X6
  9826. EQ RQT2.1 REQUEST TAPE
  9827.  
  9828. RQT2 SA1 TT
  9829. ZR X1,RQT2.1 IF *TT* NOT SPECIFIED
  9830. MX7 1
  9831. SA7 RQTREQ SET FLAG FOR *NOP*
  9832. SA1 DBNAME GET DATA BASE NAME
  9833. SB5 RQTB
  9834. SB2 1RX
  9835. RJ SNM SET DATA BASE NAME IN MESSAGE
  9836. SA5 RQTB ADDRESS OF OPERATOR MESSAGE
  9837. RJ NOP NOTIFY OPERATOR
  9838. RQT2.1 SX7 TDTR
  9839. SA2 RQTC RESTORE (X2)
  9840. LX7 51
  9841. BX7 X7+X2
  9842. SA7 B7+8
  9843. SX2 1RA
  9844. LX2 18
  9845. BX6 X6+X2
  9846. SA6 A7+B1 STORE VSN, FILE ACCESSABILITY
  9847. SA1 LBLAA GET HDR1 LABEL
  9848. BX6 X1
  9849. SA6 A6+B1 STORE FIRST PART OF LABEL
  9850. SA1 A1+B1
  9851. BX6 X1
  9852. SA6 A6+B1 STORE SECOND PART OF LABEL
  9853. MX6 0 CLEAR REST OF FIELDS
  9854. SA6 A6+B1
  9855. SA6 A6+B1
  9856.  
  9857. * CHECK IF FILE IS ASSIGNED.
  9858.  
  9859. STATUS B7
  9860. SA1 B7
  9861. MX0 11
  9862. LX1 59-11
  9863. BX1 X0*X1
  9864. ZR X1,RQT3 IF FILE NOT PRE-ASSIGNED
  9865. SA1 =6L SET VSN TO BLANKS
  9866. BX6 X1
  9867. EQ RQTX RETURN WITH PRE-ASSIGNED FILE
  9868.  
  9869. RQT3 LABEL B7
  9870.  
  9871. * SET UP EXTENDED LABEL BUFFER FOR OPEN PROCESSING.
  9872.  
  9873. SX6 10 LENGTH OF LABEL BUFFER
  9874. SX7 RQTA ADRESS OF LABEL BUFFER
  9875. LX6 18
  9876. BX6 X6+X7
  9877. SA6 B7+9
  9878. SA1 =0LVOL1 SET VOL1 LABEL
  9879. SX7 80
  9880. SA7 RQTA CHARACTER IN LABEL
  9881. SX6 B0
  9882. SA6 A7+9 SET ZERO TERMINATOR
  9883. BX6 X1
  9884. SA6 A7+B1
  9885.  
  9886. OPEN B7,ALTER,R
  9887.  
  9888. SA1 B7+B1
  9889. PL X1,RQT4 IF FILE ASSIGNED TO DISK
  9890. SA1 RQTA+1 GET VSN
  9891. MX6 36
  9892. LX1 24
  9893. BX6 X1*X6
  9894. EQ RQTX RETURN
  9895. RQT4 SA1 =6LDISK SHOW DISK ASSIGNEMENT
  9896. BX6 X1
  9897. EQ RQTX RETURN
  9898.  
  9899. RQTA BSSZ 10 LABEL BUFFER
  9900.  
  9901. RQTB DATA C*$TAF TAPE REQUEST DB=XX DUMP.*
  9902.  
  9903. RQTC BSSZ 1 REGISTER X2 SAVE AREA
  9904. SPACE 4,15
  9905. ** RRE - READ RECORD ERROR.
  9906. *
  9907. * THIS SUBROUTINE IS CALLED WHEN A READ ERROR HAS OCCURRED
  9908. * DURING RECOVER PROCESSING (ARF ONLY). *RRE* CHECKS FOR
  9909. * MULTIPLE DUMPS OF THE ARF VIA THE INSTALLATION PARAMETER
  9910. * *NUMARF*. IF MULTIPLE COPIES EXIST THE DUPLICATE TAPE WILL
  9911. * BE REQUESTED AND CORRECTLY POSITIONED FOR RETURN TO THE
  9912. * CALLER.
  9913. *
  9914. * ENTRY (NUMARF) - NUMBER OF DUPLICATE COPIES OF ARF-S.
  9915. * (TAPERR) - NUMBER OF SAME ERROR TAPES.
  9916. * (IVSN) - POINTER TO NEXT VSN IN TVSN TABLE.
  9917. * (XXPFN) - CURRENT PERMANENT FILE NAME.
  9918. * (EORCNT) - COUNT OF CORRECTLY APPLIED EOR-S.
  9919. * (PREC) - POINTER TO CURRENT FIRST TAPE ARF.
  9920. *
  9921. * EXIT NEW ARF TAPE MOUNTED AND CORRECTLY POSITIONED.
  9922. *
  9923. * USES X - ALL.
  9924. * A - 1, 2, 3, 4, 5, 6, 7.
  9925. * B - 2, 3, 4, 5, 6, 7.
  9926. *
  9927. * CALLS ACF, CDD, FER, RQT, SVK.
  9928. *
  9929. * MACROS ERROR, GETN, FETCH, MOVE, RMGET, RETURN, SKIPF.
  9930.  
  9931.  
  9932. RRE SUBR ENTRY EXIT
  9933. RETURN TP RETURN BAD TAPE
  9934. SX1 NUMARF
  9935. SA2 TAPERR
  9936. IX1 X2-X1
  9937. PL X1,RRE15 IF ANOTHER ARF DUMP TAPE IS NOT AVAILABLE
  9938. SX6 X2+B1
  9939. SA6 A2 INCREMENT TAPE ERROR COUNT
  9940. SA3 EORCNT
  9941. BX6 X3
  9942. SA6 RREB SAVE EOR COUNT
  9943. RJ ACF ATTACH DIRECTORY
  9944. SA1 IVSN
  9945. SX1 X1-1 DECREMENT VSN POINTER
  9946. SA2 X1+ GET VSN OF BAD TAPE FROM TVSN TABLE
  9947. MX0 36
  9948. BX7 X0*X2
  9949. SA1 XXPFN
  9950. SA5 =3R 1
  9951. BX6 X5+X1
  9952. SA6 TEMPO SET KEY
  9953. RRE1 RMGET DIRR,XXBUF,0,,TEMPO GET AFTER IMAGE LOG DUMP ENTRY
  9954. RJ FER CHECK *FIT* ERROR
  9955. NZ X1,RREX IF ERROR
  9956. RRE2 SA1 XXBUF+2 GET VSN OF DUMP TAPE
  9957. SA2 PREC
  9958. SA3 X2
  9959. IX1 X1-X3 COMPARE VSN-S
  9960. ZR X1,RRE3 IF VSN-S MATCH
  9961. GETN DIRR,XXBUF,,SKEY GET NEXT AFTER IMAGE ENTRY
  9962. FETCH DIRR,ES,X2
  9963. SX2 X2-100
  9964. SX1 B1
  9965. ZR X2,RRE15 IF EOF
  9966. SA2 SKEY
  9967. SA3 TEMPO
  9968. BX2 X2-X3
  9969. ZR X2,RRE2 IF MORE ENTRIES
  9970. EQ RRE16 ERROR - NO MORE ENTRIES
  9971.  
  9972. RRE3 SA1 XXBUF+B1 PACKED DATE AND TIME
  9973. BX6 X1
  9974. SA6 TKY2
  9975. SA1 TAPERR
  9976. RJ CDD CONVERT DECIMAL TO DISPLAY
  9977. MX0 -18
  9978. BX6 -X0*X6
  9979. SA2 XXPFN
  9980. BX6 X2+X6
  9981. SA6 TKY1 SET KEY
  9982. RMGET DIRR,XXBUF,0,,TKY1 AFTER IMAGE LOG DUMP ENTRY
  9983. RJ FER CHECK FIT ERROR
  9984. NZ X1,RREX IF ERROR
  9985. SA1 XXBUF+2 GET VSN
  9986. BX7 X1
  9987. SA7 RREA SAVE REPLACEMENT VSN
  9988. SX6 RRED
  9989. SA6 RREF INITIALIZE POINTER
  9990. RRE4 SA2 RREF
  9991. BX7 X1
  9992. SA7 X2 ENTER VSN INTO TABLE
  9993. SX6 X2+B1
  9994. SA6 A2 INCREMENT POINTER
  9995. RJ SVK SET VSN KEY
  9996. RMGET DIRR,WSAB,0,,VKY1 GET VSN ENTRY
  9997. RJ FER CHECK *FIT* ERROR
  9998. NZ X1,RREX IF ERROR
  9999. SA1 WSAB+2 VSN OF MULTI FILE DUMP
  10000. NZ X1,RRE4 IF VSN PRESENT
  10001. REWIND DIRR,R REWIND THE DIRECTORY
  10002.  
  10003. * SEARCH VSN ENTRIES FOR CORRECT TAPE BY CHECKING EOR-S
  10004.  
  10005. SA1 XXBUF+2 GET VSN
  10006. RRE5 RJ SVK SET VSN KEY
  10007. RMGET DIRR,WSAB,0,,VKY1 GET VSN ENTRY
  10008. RJ FER CHECK FIT ERROR
  10009. NZ X1,RREX IF ERROR
  10010. SA3 RREB
  10011. SA2 WSAB+3 EOR-S ON TAPE
  10012. IX6 X3-X2
  10013. NG X6,RRE6 IF CORRECT TAPE COUNT
  10014. SA6 RREB DECREMENT EOR COUNT
  10015. SA1 WSAB+2 VSN OF MULTI FILE DUMP
  10016. NZ X1,RRE5 IF VSN PRESENT
  10017. MX1 1
  10018. EQ RRE17 ERROR INCORRECT EOR COUNT
  10019.  
  10020. RRE6 SB7 TP
  10021. SA1 WSAB GET VSN TO BE REQUESTED
  10022. SX5 B0 READ MODE
  10023. MX0 36
  10024. LX1 59-35
  10025. BX6 X0*X1
  10026. RJ RQT REQUEST TAPE
  10027. SA1 RREB
  10028. SKIPF TP,X1,R SKIP RECORDS FORWARD
  10029. SA2 TP
  10030. MX0 -9
  10031. BX2 -X0*X2
  10032. SX2 X2-271B CHECK STATUS FOR EOF
  10033. ZR X2,RRE17 IF EOF
  10034. READEI A2,R
  10035. MOVE 40,TVSN,RREG MOVE TVSN TABLE TO ALTERNATE WORK AREA
  10036. SA1 PREC POINTER TO TABLE OF FIRST REEL ARF-S
  10037. SA3 X1+ CURRENT ARF DUMP SET
  10038. SA2 X1+B1 NEXT ARF DUMP SET
  10039. BX6 X2
  10040. SA6 RREC SAVE VSN OF NEXT DUMP SET
  10041. SB2 TVSN INITIALIZE TVSN POINTER
  10042. SB5 0 INITIALIZE COUNT OF VSN-S
  10043. RRE7 SA4 B2
  10044. MX0 36
  10045. BX4 X0*X4
  10046. IX5 X4-X3 COMPARE VSN-S
  10047. ZR X5,RRE8 IF FIRST TAPE OF FAULTY DUMP SET
  10048. SB5 B5+B1 INCREMENT COUNT OF VSN-S
  10049. SB2 B2+B1 INCREMENT TVSN POINTER
  10050. EQ RRE7 PROCESS NEXT VSN ENTRY
  10051.  
  10052. RRE8 SB3 B2+ SAVE BEGINNING OF DELETED ENTRIES
  10053. SX7 0
  10054. RRE9 SA7 B2 ZERO OUT TVSN ENTRY
  10055. ZR X2,RRE10 IF LAST ARF DUMP SET
  10056. SB2 B2+B1
  10057. SA4 B2
  10058. IX5 X4-X2 COMPARE VSN-S
  10059. ZR X5,RRE10 IF BEGINNING OF NEXT ARF DUMP SET
  10060. EQ RRE9 PROCESS VSN ENTRY
  10061.  
  10062. RRE10 SB6 RRED INITIALIZE REPLACEMENT POINTER
  10063. RRE11 SA2 B6
  10064. ZR X2,RRE12 IF NO MORE REPLACEMENT VSN-S
  10065. BX6 X2
  10066. SA6 B3 REPLACE VSN IN TVSN TABLE
  10067. SB3 B3+B1 INCREMENT TVSN POINTER
  10068. SB6 B6+B1 INCREMENT REPLACEMENT POINTER
  10069. SB5 B5+B1 INCREMENT VSN COUNT
  10070. EQ RRE11 PROCESS NEXT REPLACEMENT VSN
  10071.  
  10072. RRE12 SB2 RREG INITIALIZE ALTERNATE TVSN TABLE POINTER
  10073. SA1 RREC VSN OF NEXT DUMP SET
  10074. RRE13 SA2 B2+
  10075. BX2 X0*X2
  10076. IX3 X1-X2 COMPARE VSN-S
  10077. ZR X3,RRE14 IF VSN-S MATCH
  10078. SB2 B2+1
  10079. EQ RRE13 PROCESS NEXT VSN
  10080.  
  10081. RRE14 SB7 TVSNL HOW MANY VSN ENTRIES AVAILABLE
  10082. SB7 B7-B5
  10083. MOVE B7,B2,B3 MOVE ALTERNATE TABLE ENTRIES TO TVSN TABLE
  10084. SA3 BVSN BUFFER FOR END OF TVSN TABLE
  10085. NZ X3,RRE18 IF ERROR VSN TABLE OVERFLOW
  10086. SA2 PREC
  10087. SA3 RREA REPLACEMENT VSN
  10088. BX6 X3
  10089. SA6 X2+ REPLACE BAD DUMP SET-S FIRST VSN
  10090. MX1 0
  10091. EQ RREX RETURN NO ERRORS
  10092.  
  10093. RRE15 ERROR RREH,,,RREX,,E PARITY ERROR ON ARF DUMP TAPE
  10094. RRE16 ERROR RTFA,,,RREX,,E END OF VSN TABLE
  10095. RRE17 ERROR RREI,,,RREX,,E RECORD POSITION ERROR
  10096. RRE18 ERROR BVTC,,,RREX,,E TVSN TABLE OVERFLOW
  10097.  
  10098. RREA BSSZ 1 REPLACEMENT VSN
  10099. RREB BSSZ 1 EOR COUNT
  10100. RREC BSSZ 1 VSN OF NEXT DUMP SET
  10101. RRED BSSZ 10 TABLE OF REPLACEMENT VSN-S
  10102. RREF BSSZ 1 POINTER TO REPLACEMENT TABLE OF VSN-S
  10103. RREG BSSZ TVSNL ALTERNATE TABLE OF VSN-S
  10104. RREH DATA 20H *****
  10105. DATA C*PARITY ERROR ON ARF DUMP TAPE.*
  10106. RREHL EQU *-RREH
  10107. RREI DATA 20H *****
  10108. DATA C*TAPE FILE POSITION ERROR.*
  10109. RREIL EQU *-RREI
  10110. RSC SPACE 4,20
  10111. ** RSC - REMOVE EXTRA SPACES AND COMMAS.
  10112. *
  10113. * *RSC* REMOVES EXTRA SPACES AND COMMAS FROM AN
  10114. * INPUT STRING AND CHECKS FOR INCORRECT CHARACTERS.
  10115. * THE INPUT STRING HAS TO BE ONE CHARACTER PER
  10116. * WORD, RIGHT-JUSTIFIED WITH ZERO FILL.
  10117. *
  10118. * ENTRY (B6) = START OF INPUT BUFFER.
  10119. * (B7) = LWA+1 OF INPUT BUFFER.
  10120. *
  10121. * EXIT (B7) = LWA OF DIRECTIVES IN INPUT BUFFER.
  10122. * (B3) = NUMBER OF PARAMETERS ON CARD.
  10123. *
  10124. * ALL DOUBLE SPACE/COMMA COMBINATIONS REMOVED FROM
  10125. * INPUT BUFFER, SPACES WILL BE CHANGED TO COMMAS.
  10126. *
  10127. * USES X - 1, 2, 3, 6.
  10128. * A - 1, 2, 6.
  10129. * B - 3, 4, 6, 7.
  10130.  
  10131.  
  10132. RSC0 SB7 B4+B3 SET LEGAL LWA
  10133.  
  10134. RSC SUBR ENTRY/EXIT
  10135. SB4 B6 SAVE FWA OF BUFFER
  10136. SB3 B0
  10137. RSC1 SA1 B6
  10138. RSC2 SB6 B6+B1
  10139. EQ B6,B7,RSC0 IF END OF BUFFER
  10140. SA2 B6
  10141. SX3 X1-1R
  10142. NZ X3,RSC3 IF (BUFFER) NOT = SPACE
  10143. SX1 1R, CHANGE SPACE TO COMMA
  10144. EQ RSC4 CONTINUE
  10145. RSC3 SX3 X1-1R,
  10146. NZ X3,RSC5 IF (BUFFER) NOT = *,*
  10147. RSC4 ZR B3,RSC1 IF LEADING BLANKS OR COMMAS
  10148. SX3 X2-1R
  10149. ZR X3,RSC2 IF (BUFFER+1)=SPACE
  10150. SX3 X2-1R,
  10151. ZR X3,RSC2 IF (BUFFER+1)=*,*
  10152. SX3 X2-1R=
  10153. ZR X3,RSC2 IF (BUFFER+1) = *=*
  10154. SX3 X2-1R/
  10155. ZR X3,RSC2 IF (BUFFER+1) = */*
  10156. RSC5 BX6 X1
  10157. SA6 B4+B3
  10158. SB3 B3+B1
  10159. EQ RSC1 PROCESS NEXT CHARACTER
  10160. SPACE 4,10
  10161. ** RTE - RETURN TAPE ERROR ON DUMP PROCESSING.
  10162. *
  10163. * THIS SUBROUTINE IS CALLED WHEN A TAPE ERROR OCCURS ON A DUMP.
  10164. * THE FAULTY TAPE IS RETURNED AND ERROR MESSAGES ARE SENT TO
  10165. * THE OPERATOR AND THE JOB-S DAYFILE. THE TABLE, *TVSN*, WILL
  10166. * BE ALTERED TO DELETE THE BAD TAPE AND MOVE ALL REMAINING
  10167. * VSN-S DOWN.
  10168. *
  10169. * ENTRY (B1) = 1.
  10170. * (TP) = FIRST WORD OF TAPE FET.
  10171. * VSN OF NEXT TAPE.
  10172. *
  10173. * EXIT (IVSN) = TABLE TVSN RECONSTRUCTED.
  10174. *
  10175. * USES X - 1, 2, 3, 6, 7.
  10176. * B - 2, 3, 5.
  10177. * A - 1, 2, 3, 5, 6, 7.
  10178. *
  10179. * CALLS NOP, SNM.
  10180. *
  10181. * MACROS MESSAGE, RETURN.
  10182.  
  10183. RTE SUBR ENTRY/EXIT
  10184. RETURN TP
  10185. SA1 IVSN
  10186. SX2 X1-1 DECREMENT POINTER TO CURRENT VSN
  10187. SA3 X2
  10188. BX6 X3
  10189. SA6 RTEA SAVE BAD VSN
  10190. SA6 RQTREQ SET FLAG SO WE DO NOT CLEAR *TT*
  10191. SX6 B0
  10192. SA6 X2 ZERO OUT BAD VSN
  10193. RTE1 SA3 X1
  10194. ZR X3,RTE2 IF NO MORE VSN-S
  10195. BX7 X3
  10196. SA7 X2 REPLACE VSN WITH NEXT VSN
  10197. SX2 X2+B1
  10198. SX1 X1+B1 INCREMENT IVSN
  10199. EQ RTE1 PROCESS NEXT VSN
  10200.  
  10201. RTE2 SA1 RTEA GET BAD VSN
  10202. SA6 X2 ZERO OUT LAST VSN
  10203. SB2 1RX SUBSTITUTE CHARACTER
  10204. SB5 -RTEB
  10205. SB3 RTEB ADDRESS OF ASSEMBLY AREA
  10206. RJ SNM SET NAME
  10207. MESSAGE RTEB,3
  10208. MESSAGE RTEC,3
  10209. SA1 RTEA GET BAD VSN
  10210. SB2 1RX SUBSTITUTE CHARACTER
  10211. SB5 -RTED
  10212. SB3 RTED ADDRESS OF ASSEMBLY AREA
  10213. RJ SNM SET NAME
  10214. SA5 RTED
  10215. RJ NOP NOTIFY OPERATOR
  10216. MX6 0
  10217. SA6 ERROR CLEAR ERROR STATUS BIT
  10218. EQ RTEX RETURN
  10219.  
  10220. RTEA BSSZ 1 CURRENT VSN
  10221.  
  10222. RTEB DATA C*PARITY ERROR IN TAPE WITH VSN = XXXXXX.*
  10223.  
  10224. RTEC DATA C*DUMP WILL START OVER.*
  10225.  
  10226. RTED DATA C*TAPE VSN = XXXXXX IS BAD, PLEASE REPLACE.*
  10227.  
  10228. RTF SPACE 4,30
  10229. ** RTF - REQUEST TAPE FILE.
  10230. *
  10231. * REQUEST THE NEXT TAPE CANDIDATE FOR THE OPERATION
  10232. * SPECIFIED. IF THE REQUEST IS FOR A READ THE NEXT
  10233. * ENTRY IN *TVSN* WILL BE REQUESTED AND *X1* WILL INDICATE
  10234. * THE END OF THE ENTRIES. ON A WRITE, THE NEXT *TVSN*
  10235. * ENTRY IS ALSO REQUESTED BUT IF NO MORE *TVSN* ENTRIES
  10236. * EXIST, A BLANK LABELED TAPE IS REQUESTED AND ADDED TO
  10237. * *TVSN*, ROOM PERMITTING.
  10238. *
  10239. * ENTRY (B7) = FET ADDRESS.
  10240. * (IVSN) = ADDRESS OF CURRENT VSN CANDIDATE.
  10241. * (X5) = 0 - READ.
  10242. * .NE. 0 - WRITE.
  10243. *
  10244. * EXIT (X1) = 0 NO ERROR.
  10245. * (X1) .NE. 0, IF READ (END OF VSN-S).
  10246. * IF WRITE (TVSN OVERFLOW).
  10247. * (IVSN) = ADDRESS OF NEXT CANDIDATE.
  10248. *
  10249. * USES X - 1, 2, 3, 4, 5, 6, 7.
  10250. * A - 1, 2, 3, 4, 5, 6, 7.
  10251. * B - 2, 5, 7.
  10252. *
  10253. * MACROS FETCH, MESSAGE, OPENM, RETURN, RMGET.
  10254. *
  10255. * CALLS ACF, RQT.
  10256.  
  10257.  
  10258. RTF SUBR
  10259. SX7 B7
  10260. SA2 XXPFN
  10261. BX6 X2
  10262. SA6 HOLD6 SAVE XXPFN
  10263. SA7 HOLD4 SAVE (B7)
  10264. BX7 X5
  10265. SA7 HOLD5 SAVE READ/WRITE INDICATOR
  10266. SA3 IVSN CHECK FOR LAST ENTRY
  10267. SA4 X3
  10268. BX6 X4
  10269. SA6 RTFC SET LAST VSN FLAG
  10270. RTF1 SA4 IVSN
  10271. SA3 X4 GET VSN
  10272. BX6 X3
  10273. NZ X5,RTF3 IF WRITE REQUESTED
  10274. NZ X3,RTF2 IF READ VSN GIVEN
  10275. EQ RTF10 ERROR - END OF *TVSN*
  10276.  
  10277. RTF2 RJ RQT REQUEST TAPE
  10278. EQ RTF8 CONTINUE
  10279.  
  10280. RTF3 ZR X6,RTF4 IF END OF TVSN ON WRITE
  10281. RJ RQT REQUEST TAPE
  10282. EQ RTF5 CHECK FOR DUPLICATE VSN
  10283.  
  10284. RTF4 SX4 TVSN+TVSNL
  10285. IX7 X4-X3
  10286. NG X7,RTF9 IF *TVSN* OVERFLOW
  10287. RJ RQT REQUEST TAPE
  10288. SA3 IVSN
  10289. SA6 X3 STORE VSN
  10290. RTF5 SA3 TDFN GET DB
  10291. SA4 DMPFLG
  10292. NZ X4,RTF6 IF DATA BASE FILE
  10293. LX3 12
  10294. RTF6 BX6 X3
  10295. SA6 XXPFN SAVE FOR *ACF*
  10296. RJ ACF ATTACH DIRECTORY
  10297. SA5 IVSN
  10298. SA1 X5
  10299. SB5 RTFB
  10300. SB2 1RX
  10301. RJ SNM SET NAME
  10302. SA3 X5 GET VSN
  10303. LX3 36
  10304. SA1 FILLER
  10305. BX6 X3+X1
  10306. SA6 EVSN KEY
  10307. RMGET DIRR,XXBUF,0,,EVSN
  10308. RJ FER CHECK FIT ERROR
  10309. NZ X1,RTF7 IF ERROR
  10310. SA3 IVSN
  10311. BX6 X1
  10312. SA6 X3 ZERO TVSN ENTRY
  10313. RETURN TP,R
  10314. MESSAGE RTFB,,R
  10315. SA2 HOLD4
  10316. SB7 X2
  10317. SA5 HOLD5
  10318. EQ RTF1 TRY AGAIN
  10319.  
  10320. RTF7 SA1 NUMV
  10321. SX7 X1+1
  10322. SA7 A1 INCREMENT VSN COUNT
  10323. SA3 RTFC
  10324. NZ X3,RTF7.1 IF NOT LAST VSN ENTRY IN TVSN
  10325. SA3 IVSN ZERO NEXT ENTRY
  10326. SX7 B0
  10327. SA7 X3+1
  10328. RTF7.1 SA1 HOLD6 RESTORE XXPFN
  10329. BX6 X1
  10330. SA6 XXPFN
  10331. RTF8 SA3 IVSN ADVANCE IVSN POINTER
  10332. SX7 X3+1
  10333. SA7 A3
  10334. CLOSEM DIRR,U
  10335. SX1 B0
  10336. EQ RTFX RETURN
  10337.  
  10338. RTF9 ERROR BVTC,,,RTFX,,E VSN TABLE OVERFLOW
  10339.  
  10340. RTF10 ERROR RTFA,,,RTFX,,E END OF VSN TABLE
  10341.  
  10342. RTFA DATA 20H0 *****
  10343. DATA C*END OF VSN TABLE.*
  10344. RTFAL EQU *-RTFA
  10345.  
  10346. RTFB DATA C* VSN - XXXXXX ALREADY IN DIRECTORY.*
  10347.  
  10348. RTFC BSSZ 1 LAST VSN FLAG
  10349. RVE SPACE 4,15
  10350. ** RVE - READ VSN ENTRY.
  10351. *
  10352. * ENTRY (DIRR) = FWA OF BACKUP DIRECTORY FIT.
  10353. *
  10354. * EXIT (X1) = 0, IF NO ERRORS.
  10355. * 1, IF END OF FILE.
  10356. * (PLIN) = FWA OF FORMATTED LINE.
  10357. *
  10358. * USES X - 0, 1, 2, 6, 7.
  10359. * A - 1, 2, 6, 7.
  10360. * B - NONE.
  10361. *
  10362. * CALLS BFL, CDD, FER, SFN.
  10363. *
  10364. * MACROS ERROR, GETN.
  10365.  
  10366.  
  10367. RVE SUBR ENTRY/EXIT
  10368. GETN DIRR,WSAB READ NEXT VSN ENTRY
  10369. RJ FER FIT ERROR STATUS
  10370. SX6 X1-3 END OF FILE
  10371. SX1 B1
  10372. ZR X6,RVEX IF END OF FILE
  10373. RJ BFL BLANK FILL LINE
  10374. SA1 WSAB+1 SECOND WORD OF VSN KEY
  10375. SA2 VSNK ALL ASTERISKS
  10376. BX6 X1-X2
  10377. NZ X6,RVE4 IF NOT VSN TYPE
  10378. MX0 -36
  10379. SA1 WSAB VSN NUMBER
  10380. BX1 -X0*X1
  10381. LX1 59-35
  10382. RJ SFN SPACE FILL
  10383. LX6 35-59
  10384. SA6 PLIN+2
  10385. SA1 WSAB+2 CONTINUATION VSN
  10386. ZR X1,RVE1 IF NO CONTINUATION VSN
  10387. MX0 36
  10388. BX1 X0*X1
  10389. RJ SFN SPACE FILL
  10390. LX6 47-59
  10391. SA6 PLIN+3
  10392. RVE1 SA1 WSAB+3 NUMBER OF FILES
  10393. SA2 VSNK CHECK FOR ALL ASTRICKS
  10394. BX2 X1-X2
  10395. NZ X2,RVE2 IF NOT LOG FILE VSN ENTRY
  10396. SA1 RVEB
  10397. BX6 X1
  10398. EQ RVE3 STORE *ARF*
  10399.  
  10400. RVE2 RJ CDD CONVERT TO DISPLAY CODE
  10401. LX6 24
  10402. RVE3 SA6 PLIN+4
  10403. SA1 WSAB+4 NUMBER OF ACTIVE FILES
  10404. RJ CDD CONVERT TO DISPLAY CODE
  10405. LX6 24
  10406. SA6 PLIN+5
  10407. SA1 WSAB+5 NEXT *ARF* VSN
  10408. MX0 36
  10409. BX1 X0*X1
  10410. RJ SFN SET FILE NAME
  10411. LX6 47-59
  10412. SA6 PLIN+6
  10413. MX1 0
  10414. MX7 0
  10415. SA7 PLIN+8
  10416. EQ RVEX RETURN
  10417.  
  10418. RVE4 ERROR RVEA,,,RVEX,,E NOT VSN TYPE ENTRY
  10419.  
  10420. RVEA DATA 20H0 *****
  10421. DATA C*WRONG ENTRY WHILE READING VSN ENTRIES.*
  10422. RVEAL EQU *-RVEA
  10423.  
  10424. RVEB VFD 60/10L *ARF*
  10425. RXJ SPACE 4,55
  10426. ** RXJ - READ *XXJ* FILE ENTRIES (XX=DATA BASE).
  10427. *
  10428. * *RXJ* PROCESSES *CRM* AND *IXN* CARDS ON THE *XXJ* FILE
  10429. * THE FOLLOWING FIELDS ARE PROCESSED:
  10430. *
  10431. * *CRM* STATEMENT -
  10432. *
  10433. * XXPF PERMANENT FILE NAME.
  10434. * TY FILE TYPE.
  10435. * KL PRIMARY KEY LENGTH.
  10436. * MRL MAXIMUM RECORD LENGTH.
  10437. * HASH HASHING ROUTINE NAME.
  10438. * PACKNAM PACK NAME.
  10439. * DEV DEVICE FILE IS RESIDING ON.
  10440. *
  10441. * *IXN* STATEMENT -
  10442. *
  10443. * XXPF PERMANENT FILE NAME.
  10444. * NAKY NUMBER OF ALTERNATE KEYS.
  10445. * PACKNAME PACK NAME.
  10446. * DEV DEVICE FILE IS RESIDING ON.
  10447. *
  10448. * ENTRY (X5) = PERMANENT FILE NAME.
  10449. * (X5) = 1, IF INITIAL CALL.
  10450. * (X5) = 0, IF NOT INITIAL CALL.
  10451. *
  10452. * EXIT (X1) = 0, IF NO ERRORS.
  10453. * (X1) = 1, IF ERRORS ENCOUNTERED.
  10454. * (X1) = NEGATIVE, IF ALL FILES PROCESSED.
  10455. * (X2) = 0, IF NO MORE FILES
  10456. * (X2) = 1, IF *XXPFN* CONTAINS LAST ENTRY.
  10457. * (XXPFN) = FILE NAME OF DATA FILE.
  10458. * (XXTY) = FILE TYPE.
  10459. * (XXACC) = ACCESS MODE
  10460. * (XXRL) = RECORD LENGTH.
  10461. * (XXKL) = KEY LENGTH.
  10462. * (XXHASH) = HASHING ROUTINE.
  10463. * (XXREC) = RECOVERY INDICATOR.
  10464. * (XXFWI) = FORCE WRITE INDICATOR.
  10465. * (XXPACK) = PACK NAME.
  10466. * (XXDEV) = DEVICE.
  10467. * (XXIXN) = INDEX FILE NAME.
  10468. * (XXNAKY) = NUMBER OF ALTERNATE KEYS.
  10469. * (XXIXP) = INDEX PACK NAME.
  10470. * (XXIDEV) = INDEX DEVICE.
  10471. *
  10472. * USES X - ALL.
  10473. * A - 1, 2, 3, 5, 6, 7.
  10474. * B - 6, 7.
  10475. *
  10476. * CALLS DXB, UPC, SNM.
  10477. *
  10478. * MACROS ERROR, READ, READC, REWIND, WRITEW.
  10479.  
  10480.  
  10481. RXJ SUBR ENTRY/EXIT
  10482. BX6 X5
  10483. SA6 XXPFN STORE (X5)
  10484. MX7 0 CLEAR PREVIOUS ENTRIES
  10485. SX6 B0+ CLEAR PREVIOUS ENTRIES
  10486. SA7 XXTY
  10487. SA6 XXRL
  10488. SA7 XXKL
  10489. SA6 XXHASH
  10490. SA7 XXFWI
  10491. SA6 XXREC
  10492. SA7 XXPACK
  10493. SA6 XXDEV
  10494. SA7 XXIXN
  10495. SA6 XXNAKY
  10496. SA7 XXIXP
  10497. SA6 XXIDEV
  10498. ZR X5,RXJ2 IF NOT INITIAL CALL
  10499. REWIND XXJ,R
  10500. READ XXJ SET READ FUNCTION
  10501. RXJ1 READC XXJ,GXJA,8
  10502. ZR X1,RXJ2 IF MORE CARDS TO CHECK
  10503. SA5 XXPFN
  10504. ZR X5,RXJ10 IF NOT SINGLE FILE SEARCH
  10505. SX5 X5-1
  10506. NZ X5,RXJ11.1 IF SINGLE FILE NOT FOUND
  10507. EQ RXJ10 IF NOT SINGLE FILE SEARCH
  10508.  
  10509. RXJ2 SA5 GXJA
  10510. SX3 3RCRM SEARCH FOR CRM CARD
  10511. MX0 18
  10512. LX3 59-17
  10513. BX3 X3-X5
  10514. BX3 X0*X3
  10515. ZR X3,RXJ3 IF CRM CARD
  10516. EQ RXJ1 LOOP
  10517.  
  10518. * PROCESS CRM STATEMENT.
  10519.  
  10520. RXJ3 SB7 GXJP FIRST WORD TO UNPACK
  10521. RJ UPC UNPACK CARD
  10522. MX0 42
  10523. SA2 B7+1 GET FILE NAME FROM CRM CARD
  10524. BX2 X0*X2
  10525. SA3 XXPFN
  10526. ZR X3,RXJ4 IF ALL FILES TO PROCESS
  10527. SX4 X3-1
  10528. ZR X4,RXJ4 IF ALL FILES TO PROCESS
  10529. BX3 X0*X3
  10530. IX4 X2-X3
  10531. NZ X4,RXJ1 IF FILE NAME NOT FOUND
  10532.  
  10533. * FILE NAME FOUND.
  10534.  
  10535. RXJ4 BX6 X2
  10536. SA6 A3 STORE FILE NAME
  10537. SA2 A2+B1 PROCESS FILE TYPE
  10538. LX2 11-59 RIGHT JUSTIFY FILE TYPE
  10539. SX3 X2-2RIS
  10540. ZR X3,RXJ5 IF *IS*
  10541. SX3 X2-2RDA
  10542. ZR X3,RXJ5 IF *DA*
  10543. SX3 X2-2RAK
  10544. NZ X3,RXJ13 IF NOT *AK*
  10545. RXJ5 BX6 X2
  10546. SA6 XXTY STORE FILE TYPE
  10547. SB6 B6-7
  10548. SA5 A2+B1
  10549. BX6 X5
  10550. SA6 XXACC
  10551. SA5 A5+3
  10552. RJ DXB DISPLAY TO BINARY
  10553. SA6 XXRL STORE MAXIMUM RECORD LENGTH
  10554. SB6 B6-B1
  10555. SA5 A5+B1 KEY LENGTH
  10556. RJ DXB CONVERT TO BINARY
  10557. SA6 XXKL STORE KEY LENGTH
  10558. SB6 B6-B1
  10559. SA5 A5+B1 PROCESS HASHING ROUTINE
  10560. LT B6,RXJ6 IF NO MORE PARAMETERS
  10561. BX6 X5
  10562. SB6 B6-B1
  10563. SA6 XXHASH STORE HASHING ROUTINE
  10564. LT B6,RXJ6 IF NO MORE PARAMETERS
  10565. SA5 A5+B1 PROCESS RECOVERY INDECATOR
  10566. BX6 X5
  10567. SA6 XXREC STORE RECOVERY INDECATOR
  10568. SB6 B6-B1
  10569. LT B6,RXJ6 IF NO MORE PARAMETERS
  10570. SA5 A5+B1 PROCESS FORCE WRITE INDECATOR
  10571. BX6 X5
  10572. SA6 XXFWI STORE FORCE WRITE INDECATOR
  10573. SB6 B6-B1
  10574. LT B6,RXJ6 IF NO MORE PARAMETERS
  10575. SA5 A5+B1 PROCESS PACKNAME
  10576. BX6 X5
  10577. SA6 XXPACK STORE PACKNAME
  10578. SB6 B6-B1
  10579. BX6 X5
  10580. LT B6,RXJ6 IF NO MORE PARAMETERS
  10581. SA6 XXDEV STORE DEVICE
  10582.  
  10583. * CHECK FOR MIPPED FILE
  10584.  
  10585. RXJ6 READC XXJ,GXJA,8
  10586. ZR X1,RXJ7 IF MORE XXJ ENTRIES
  10587. SX2 B1 ONE LAST ENTRY
  10588. EQ RXJ11 RETURN
  10589.  
  10590. RXJ7 SX3 3RIXN
  10591. SA5 GXJA
  10592. LX3 59-17
  10593. BX3 X3-X5
  10594. MX0 18
  10595. BX3 X0*X3
  10596. ZR X3,RXJ8 IF GOT IXN CARD
  10597. EQ RXJ9 CATCH EOF ON NEXT TURN
  10598.  
  10599. * PROCESS IXN STATEMENT.
  10600.  
  10601. RXJ8 SB7 GXJP FWA TO UNPACK CARD
  10602. RJ UPC UNPACK CARD
  10603. SA2 B7+B1 GET FILE NAME
  10604. SB6 B6-2
  10605. NZ X6,RXJ14 IF ERRORS IN ARGUMENTS
  10606. LT B6,RXJ15 IF NO FILE NAME ON IXN CARD
  10607. SA1 XXJ
  10608. MX6 12 MASK FOR DATA BASE
  10609. BX1 X6*X1 DATA BASE
  10610. BX3 X6*X2 DATA BASE OF IXN CARD
  10611. IX3 X3-X1
  10612. NZ X3,RXJ11.2 IF INCORRECT DATA BASE
  10613. BX6 X2
  10614. SA5 A2+B1 PROCESS NUMBER OF ALTERNATE KEYS
  10615. SA6 XXIXN STORE INDEX FILE NAME
  10616. SB6 B6-1
  10617. LT B6,RXJ17 IF NO ALTERNATE KEYS
  10618. RJ DXB CONVERT TO BINARY
  10619. NZ X4,RXJ18 IF INCORRECT NUMBER
  10620. ZR X6,RXJ18 IF ZERO ALTERNATE KEYS
  10621. SA6 XXNAKY STORE NUMBER OF ALTERNATE KEYS
  10622. SA5 A5+B1 PROCESS PACKNAME
  10623. SB6 B6-B1
  10624. LT B6,RXJ9 IF NO MORE PARAMETERS
  10625. BX6 X5
  10626. SA6 XXIXP STORE PACKNAME
  10627. SA5 A5+B1 PROCESS DEVICE
  10628. SB6 B6-B1
  10629. LT B6,RXJ9 IF NO MORE PARAMETERS
  10630. BX6 X5
  10631. SA6 XXIDEV STORE DEVICE
  10632. RXJ9 MX1 0 SET NO ERRORS
  10633. EQ RXJX RETURN
  10634.  
  10635. RXJ10 MX2 0
  10636. RXJ11 MX1 1 SET EOF ENCOUNTERED
  10637. EQ RXJX RETURN
  10638.  
  10639. RXJ11.1 SA1 XXJ GET NAME OF *XXJ* FILE
  10640. MX0 18
  10641. BX1 X1*X0
  10642. SB2 1RZ SUBSTITUTE CHARACTER
  10643. SB5 -RXJAH
  10644. SB3 RXJAH ADDRESS OF ASSEMBLY AREA
  10645. RJ SNM SET NAME IN MESSAGE
  10646. SA1 XXPFN
  10647. MX0 -18
  10648. BX1 X1*X0
  10649. SB2 1RX SUBSTITUTE CHARACTER
  10650. SB5 -RXJAH
  10651. SB3 RXJAH ADDRESS OF ASSEMBLY AREA
  10652. RJ SNM SET NAME
  10653. EQ RXJ12 JUMP TO ERROR PROCESSING
  10654.  
  10655. RXJ11.2 SA1 XXJ GET NAME OF *XXJ* FILE
  10656. MX0 18
  10657. BX1 X1*X0
  10658. SB2 1RZ SUBSTITUTE CHARACTER
  10659. SB5 -RXJEH
  10660. SB3 RXJEH ADDRESS OF ASSEMBLY AREA
  10661. RJ SNM SET NAME
  10662. EQ RXJ16 JUMP TO ERROR PROCESSING
  10663.  
  10664. * ERROR PROCESSING.
  10665.  
  10666. RXJ12 ERROR RXJA,XXPFN,,RXJX,,E *PF XXXXXXX - NOT ON ZZJ FILE*
  10667.  
  10668. RXJ13 ERROR RXJB,,GXJA,RXJX,,E *FILE ORGANIZATION IS NOT IS DA AK
  10669.  
  10670. RXJ14 ERROR RXJC,,GXJA,RXJX,,E *ERROR IN IXN STATEMENT ARGUMENTS*
  10671.  
  10672. RXJ15 ERROR RXJD,,GXJA,RXJX,,E *NO FILE NAME SPECIFIED ON IXN*
  10673.  
  10674. RXJ16 ERROR RXJE,,GXJA,RXJX,,E *DATA BASE NAME IN IXN FILE NAME*
  10675.  
  10676. RXJ17 ERROR RXJF,,GXJA,RXJX,,E *NO ALTERNATE KEY SPECIFIED ON IXN
  10677.  
  10678. RXJ18 ERROR RXJG,,GXJA,RXJX,,E *NAKY PARAMETER NOT ON IXN CARD*
  10679.  
  10680. * ERROR MESSAGES.
  10681.  
  10682. RXJA DATA 20H0 *****
  10683. RXJAH DATA C*PF XXXXXXX - NOT ON ZZZ FILE.*
  10684. RXJAL EQU *-RXJA
  10685. RXJB DATA 20H0 *****
  10686. DATA C*FILE ORGANIZATION IS NOT IS, DA OR AK.*
  10687. RXJBL EQU *-RXJB
  10688. RXJC DATA 20H0 *****
  10689. DATA C*ERROR IN IXN STATEMENT ARGUMENTS.*
  10690. RXJCL EQU *-RXJC
  10691. RXJD DATA 20H0 *****
  10692. DATA C*NO FILE NAME SPECIFIED ON IXN CARD.*
  10693. RXJDL EQU *-RXJD
  10694. RXJE DATA 20H0 *****
  10695. RXJEH DATA C*DATA BASE NAME IN IXN FILE NAME DOES NOT MATCH ZZZ.*
  10696. RXJEL EQU *-RXJE
  10697. RXJF DATA 20H0 *****
  10698. DATA C*NO ALTERNATE KEY SPECIFIED ON IXN CARD.*
  10699. RXJFL EQU *-RXJF
  10700. RXJG DATA 20H0 *****
  10701. DATA C*NAKY PARAMETER ON IXN STATEMENT NOT SPECIFIED PROPERL
  10702. ,Y.*
  10703. RXJGL EQU *-RXJG
  10704. SDT SPACE 4,20
  10705. ** SDT - SET DATE AND TIME.
  10706. *
  10707. * CHECK AND PRESET DATE/TIME INTO CORRECT FORMATS.
  10708. *
  10709. * ENTRY (DATE) = YYMMDD OR 0.
  10710. * (TIME) = HHMMSS OR 0.
  10711. *
  10712. * EXIT (DATE) = YY/MM/DD.
  10713. * (TIME) = HH.MM.SS.
  10714. * (LSTC) = 0, LIST ALL ENTRIES.
  10715. * 1, LIST BEFORE DATE/TIME.
  10716. *
  10717. * USES X - 1, 2, 3, 7.
  10718. * A - 2, 3, 6, 7.
  10719. * B - NONE.
  10720. *
  10721. * MACROS DATE.
  10722.  
  10723.  
  10724. SDT SUBR ENTRY/EXIT
  10725. SA2 DATE
  10726. ZR X2,SDT1 IF NO DATE - USE TODAYS DATE
  10727. SX1 B0 SET DATE REFORMAT
  10728. RJ RDT REFORMAT DATE/TIME
  10729. SA6 DATE
  10730. SA3 TIME
  10731. NZ X3,SDT3 IF TIME SPECIFIED
  10732. SA2 MTIM MIDNIGHT TIME
  10733. BX7 X2
  10734. SA7 TIME SET TIME
  10735. EQ SDT4 SET LIST CONTROL
  10736.  
  10737. SDT1 SA3 TIME
  10738. NZ X3,SDT2 IF TIME SPECIFIED
  10739. SX7 B0
  10740. SA7 LSTC LIST ALL ENTRIES
  10741. EQ SDTX RETURN
  10742.  
  10743. SDT2 DATE DATE SET TODAYS DATE
  10744. SDT3 SX1 B1 SET TIME REFORMAT
  10745. RJ RDT REFORMAT DATE/TIME
  10746. SA6 TIME UNPACKED TIME
  10747. SDT4 SX7 B1
  10748. SA7 LSTC LIST BEFORE DATE/TIME
  10749. EQ SDTX RETURN
  10750. SHT SPACE 4,15
  10751. ** SHT - SET HEADER TYPE.
  10752. *
  10753. * ENTRY (X3) = HEADER TYPE CODE.
  10754. *
  10755. * EXIT (X1) = 0, IF NO ERRORS.
  10756. * 1, IF UNRECOGNIZABLE CODE.
  10757. * HEADER TYPE INSERTED INTO LINE BUFFER.
  10758. *
  10759. * USES X - 0, 1, 2, 4, 5, 6.
  10760. * A - 4, 5, 6.
  10761. * B - 2.
  10762. *
  10763. * MACROS ERROR.
  10764.  
  10765.  
  10766. SHT SUBR ENTRY/EXIT
  10767. MX0 -12
  10768. SB2 THTYL HEADER TABLE LENGTH
  10769. SA5 THTY FWA OF HEADER TABLE
  10770. SHT1 BX2 -X0*X5 HEADER CODE
  10771. BX5 X0*X5 HEADER TYPE
  10772. IX4 X2-X3 COMPARE CODES
  10773. NZ X4,SHT2 IF CODES DO NOT MATCH
  10774. SA4 PLIN+4 BEGIN INDICATOR
  10775. BX4 -X0*X4
  10776. BX6 X4+X5 HEADER TYPE AND BEGIN INDICATOR
  10777. SA6 A4
  10778. MX1 0
  10779. EQ SHTX RETURN
  10780.  
  10781. SHT2 SA5 A5+B1 NEXT HEADER TABLE ENTRY
  10782. SB2 B2-B1
  10783. NE B2,B0,SHT1 IF NOT END OF TABLE
  10784. SX1 B1
  10785.  
  10786. ERROR SHTA,,,SHTX,,E UNRECOGNIZABLE CODE
  10787.  
  10788. SHTA DATA 20H0 *****
  10789. DATA C*UNRECOGNIZABLE HEADER TYPE.*
  10790. SHTAL EQU *-SHTA
  10791.  
  10792.  
  10793. ** THTY - TABLE OF HEADER TYPES.
  10794. *
  10795. *T, THTY 48/TYPE,12/CODE.
  10796. *
  10797. * TYPE - HEADER TYPE.
  10798. * CODE - HEADER CODE.
  10799.  
  10800.  
  10801. THTY BSS 0
  10802. VFD 48/8L COMMIT,12/0
  10803. VFD 48/8L DELETE,12/TRDE
  10804. VFD 48/8L WRITE,12/TRWR
  10805. VFD 48/8LBRF DOWN,12/XLQD
  10806. VFD 48/8L REWRITE,12/TRRW
  10807. VFD 48/8L FREE,12/TRDF
  10808. VFD 48/8L CEASE,12/DMCC
  10809. THTYL EQU *-THTY
  10810. SPR SPACE 4,35
  10811. ** SPR - STORE PARAMETERS FROM DIRECTIVES.
  10812. *
  10813. * *SPR* STORES PARAMETERS FROM A *DMREC* DIRECTIVE CARD.
  10814. * CAUTION - *SPR* READS AHEAD IN THE DIRECTIVE CARDS.
  10815. *
  10816. * ENTRY (A2) = ADRESS OF NEXT WORD IN STRING BUFFER.
  10817. * (X2) = NEXT WORD IN STRING BUFFER.
  10818. * (B7) = LWA+1 OF STRING BUFFER.
  10819. * (X6) = OPERATION FLAG - VALIDATES PARAMETERS.
  10820. *
  10821. * EXIT (X1) = 0 IF NO ERRORS.
  10822. * (X1) = 1 IF ERRORS ENCOUNTERED.
  10823. * (B5) = NUMBER OF ENTRIES IN *TDFN* TABLE.
  10824. * (NUMV) = NUMBER OF ENTRIES IN *TVSN* TABLE.
  10825. * (TVSN) = TABLE OF VSN S FROM DIRECTIVE.
  10826. * (DATE) = CURRENT DATE FROM DIRECTIVE CARD.
  10827. * (TIME) = CURRENT TIME FROM DIRECTIVE CARD.
  10828. * (TDFN) = TABLE OF FILE NAMES FROM DIRECTIVE CARD.
  10829. * (TVSN) = VSN OF FIRST VSN PARAMETER STRING.
  10830. * (TN) = TASK NAME.
  10831. * (TS) = TASK SEQUENCE NUMBER.
  10832. * (LENGTH) = LENGTH OF FILE.
  10833. * (PERCENT) = EXPANSION PERCENTAGE.
  10834. * (CYCL) = CYCLE NUMBER.
  10835. * (DBNAME) = DATA BASE NAME.
  10836. *
  10837. * SCANNING STOPS IF EITHER THE BUFFER IS EXHAUSTED OR A
  10838. * TERMINATOR ENCOUNTERED.
  10839. *
  10840. * USES X - ALL.
  10841. * A - 1, 2, 3, 4, 5, 6, 7.
  10842. * B - 2, 4, 5, 6.
  10843. *
  10844. * CALLS CTD, GPR, RDD.
  10845. *
  10846. * MACROS ERROR.
  10847.  
  10848.  
  10849. SPR SUBR ENTRY/EXIT
  10850. SA6 OPFLG SAVE OPERATION FLAG
  10851. SB5 B0
  10852. MX6 0
  10853. BX7 X7-X7
  10854. SA6 NUMV
  10855. SA7 TVSN CLEAR PREVIOUS ENTRIES
  10856. SA6 DATE
  10857. SA7 TIME
  10858. SA6 DATE1
  10859. SA7 TIME1
  10860. SA6 TN
  10861. SA7 TS
  10862. SA6 LENGTH
  10863. SA7 PERCENT
  10864. SA7 CYCL
  10865. SA6 BRFFLG ASSUME NOT *BRF* DUMP
  10866. MX7 1
  10867. SA7 DMPFLG ASSUME NOT *ARF* DUMP
  10868. SX7 2
  10869. SA7 ALCB INITIAL PAGE COUNT
  10870. SX7 3
  10871. SA7 ALCA INITIAL LINE COUNT
  10872. SPR1 RJ GPR GET NEXT PARAMETER
  10873. GT B2,SPR38 IF ERROR
  10874. NZ B2,SPR31 IF END OF BUFFER
  10875. SX3 X5-1R/
  10876. NZ X3,SPR9 IF NO */* DELIMITER
  10877. SA3 OPFLG
  10878. LX3 59-TDMFS
  10879. PL X3,SPR44 IF PARAMETER NOT VALID
  10880. MX0 42
  10881. BX6 X5*X0
  10882. RJ GPR GET PARAMETER
  10883. GT B2,SPR38 IF ERROR
  10884. MX0 42
  10885. BX3 -X0*X5
  10886. NZ X3,SPR39 IF BAD DELIMITER
  10887. BX5 X0*X5
  10888. SA3 SPRA BLOCK
  10889. SA4 SPRB RECORD
  10890. BX3 X5-X3
  10891. BX4 X5-X4
  10892. NZ X3,SPR4 IF NOT *BLOCK*
  10893. SX3 1RB
  10894. LX3 12
  10895. BX6 X6+X3
  10896. EQ SPR5 GO STORE VALUE
  10897.  
  10898. SPR4 NZ X4,SPR36 IF NOT *RECORD*
  10899. SX4 1RR
  10900. LX4 12
  10901. BX6 X6+X4
  10902.  
  10903. * JUST SAVED FILE NAME.
  10904.  
  10905. SPR5 MX0 12 GET DATA BASE NAME
  10906. SX4 2RZZ
  10907. BX7 X0*X6
  10908. LX4 48
  10909. IX4 X7-X4
  10910. NZ X4,SPR5.1 IF NOT *ARF* OR *BRF*
  10911. LX0 -12
  10912. BX7 X0*X6
  10913. LX7 12
  10914. SPR5.1 SA7 DBNAME SAVE DATA BASE NAME FOR *TT* OPTION
  10915. MX0 42
  10916. SB6 B0-2
  10917. SB4 B5-2
  10918. SPR6 SB6 B6+2
  10919. EQ B5,B0,SPR7 IF FIRST FILE NAME
  10920. SA3 TDFN+B6
  10921. BX4 X0*X3
  10922. BX3 X0*X6
  10923. BX3 X4-X3
  10924. ZR X3,SPR42 IF DUPLICATE FILE NAME
  10925. NE B6,B4,SPR6 IF MORE ENTRIES TO CHECK
  10926. SPR7 SA6 TDFN+B5
  10927. MX6 0
  10928. SA6 A6+B1 ZERO INDEX NAME
  10929. SB5 B5+2 INCREASE TABLE ENTRY
  10930. SB6 TDFNL
  10931. GT B5,B6,SPR37 IF TOO MANY FILES
  10932. NG X1,SPR34 IF ANOTHER ENTRY
  10933. EQ SPR1 LOOP FOR NEXT PARAMETER
  10934.  
  10935. SPR9 SX3 X5-1R=
  10936. ZR X3,SPR10 IF *=* DELIMITER
  10937. BX6 X5
  10938. EQ SPR5 GO STORE VALUE
  10939.  
  10940. SPR10 BX6 X5 SAVE DIRECTIVE
  10941. RJ GPR GET PARAMETER
  10942. GT B2,SPR38 IF ERROR
  10943. MX0 42
  10944. BX6 X0*X6
  10945. SA1 SPRC
  10946. SA3 SPRD TIME
  10947. SA4 SPRE VSN
  10948. BX1 X6-X1
  10949. BX3 X6-X3
  10950. BX4 X6-X4
  10951. NZ X1,SPR14 IF NOT *DATE*
  10952. SA3 OPFLG
  10953. LX3 59-TDMDS
  10954. PL X3,SPR44 IF PARAMETER NOT VALID
  10955. SA3 DATE
  10956. NZ X3,SPR42 IF *DATE* ALREADY SET
  10957. SA3 DATE1
  10958. NZ X3,SPR42 IF *DATE1* ALREADY SET
  10959. BX6 X0*X5
  10960. SA6 DATE STORE DATE PARAMETER
  10961. SX1 X5-1R/
  10962. NZ X1,SPR16 IF NO END DATE
  10963. RJ GPR GET PARAMETER
  10964. GT B2,SPR43 IF ERROR
  10965. BX6 X0*X5
  10966. SA6 DATE1 SAVE END DATE
  10967. EQ SPR16 CONTINUE
  10968.  
  10969. SPR14 NZ X3,SPR17 IF NOT *TIME*
  10970. SA3 OPFLG
  10971. LX3 59-TDMCS
  10972. PL X3,SPR44 IF PARAMETER NOT VALID
  10973. SA3 TIME
  10974. NZ X3,SPR42 IF *TIME* ALREADY SET
  10975. SA3 TIME1
  10976. NZ X3,SPR42 IF *TIME1* ALREADY SET
  10977. BX6 X0*X5
  10978. SA6 TIME STORE TIME
  10979. SX1 X5-1R/
  10980. NZ X1,SPR16 IF NO END TIME
  10981. RJ GPR GET PARAMETER
  10982. GT B2,SPR43 IF ERROR
  10983. BX6 X0*X5
  10984. SA6 TIME1
  10985. SPR16 NG B2,SPR34 IF END OF DIRECTIVE
  10986. EQ SPR1 LOOP FOR NEXT PARAMETER
  10987.  
  10988. SPR17 NZ X4,SPR23 IF NOT *VSN*
  10989. SA3 OPFLG
  10990. LX3 59-TDMES
  10991. PL X3,SPR44 IF PARAMETER NOT VALID
  10992. SA3 TVSN
  10993. NZ X3,SPR42 IF *VSN* ALREADY SET
  10994. MX1 6
  10995. LX1 24 MASK FOR 7TH CHARACTER
  10996. BX1 X1*X5
  10997. NZ X1,SPR38 IF TOO MANY CHARACTERS
  10998. SPR18 BX1 X0*X5
  10999. RJ SFN SPACE FILL
  11000. MX1 36
  11001. BX6 X1*X6
  11002. SA1 NUMV INDEX TO TVSN
  11003. ZR X1,SPR20 IF FIRST VSN - NO CONFLICTING FN
  11004. SB6 B0-B1
  11005. SB2 X1-1
  11006. SPR19 SB6 B6+B1
  11007. SA3 TVSN+B6 CHECK THIS FN
  11008. BX4 X0*X3
  11009. BX3 X4-X6
  11010. ZR X3,SPR42 IF DUPLICATE VSN
  11011. NE B6,B2,SPR19 IF MORE TO CHECK
  11012. SPR20 SB6 TVSNL-1
  11013. SX1 X5-1R/
  11014. ZR X1,SPR21 IF */*
  11015. SX3 B2
  11016. LX3 59
  11017. EQ SPR22 GET LAST VSN
  11018.  
  11019. SPR21 SA5 NUMV
  11020. SB4 X5
  11021. GE B4,B6,SPR37 IF ERROR
  11022. SA6 TVSN+B4
  11023. SX6 X5+1
  11024. SA6 A5
  11025. RJ GPR GET PARAMETER
  11026. GT B2,SPR43 IF ERROR
  11027. EQ SPR18 LOOP
  11028.  
  11029. SPR22 SA5 NUMV
  11030. SB4 X5
  11031. SA6 TVSN+B4
  11032. SX6 X5+1
  11033. SA6 A5
  11034. EQ SPR1 CONTINUE
  11035.  
  11036. SPR23 SA1 SPRN TN
  11037. SA3 SPRO TS
  11038. SA4 SPRP LENGTH
  11039. BX1 X6-X1
  11040. BX3 X6-X3
  11041. BX4 X6-X4
  11042. NZ X1,SPR27 IF NOT *TN*
  11043. SA3 OPFLG
  11044. LX3 59-TDMGS
  11045. PL X3,SPR44 IF PARAMETER NOT VALID
  11046. SA3 TN
  11047. NZ X3,SPR42 IF TN ALREADY SET
  11048. SX7 TN SAVE ADDRESS FOR TN REPEAT CHECK
  11049. SX6 2RTN
  11050. SA6 TEMPP SAVE TYPE - TN/TS
  11051. SPR24 SA4 TEMPP GET TYPE
  11052. MX1 48
  11053. BX6 X1*X5
  11054. ZR X6,SPR39 IF ERROR
  11055. SX1 X5-1R/
  11056. ZR X1,SPR25 IF MORE PARAMETERS
  11057. SA3 ITIT
  11058. BX6 X6+X4 INCLUDE ID
  11059. SA6 X3 STORE ENTRY
  11060. SA6 X7 SET TN/TS NON ZERO FOR REPEAT CHECK
  11061. SX6 B0
  11062. SA6 X3+1 ZERO BID
  11063. SA6 X3+2 END LIST
  11064. SX6 X3+2
  11065. SA6 A3 INCREMENT ITIT
  11066. EQ SPR16 CHECK EOB
  11067.  
  11068. SPR25 SX1 TTIG+TTIGL-1
  11069. SA3 ITIT
  11070. IX1 X1-X3
  11071. ZR X1,SPR40 IF ERROR ( EXCEEDED LIMIT )
  11072. BX6 X6+X4 INCLUDE ID
  11073. SA6 X3
  11074. SX6 B0
  11075. SA6 A6+B1 ZERO BID
  11076. SX6 X3+2
  11077. SA6 A3 INCREMENT ITIT
  11078. RJ GPR GET PARAMETER
  11079. GT B2,SPR38 IF ERROR
  11080. EQ SPR24 SAVE LAST ENTRY
  11081.  
  11082.  
  11083. SPR27 NZ X3,SPR28 IF NOT *TS*
  11084. SA3 OPFLG
  11085. LX3 59-TDMHS
  11086. PL X3,SPR44 IF PARAMETER NOT VALID
  11087. SA3 TS
  11088. NZ X3,SPR42 IF TS ALREADY SET
  11089. SX7 TS ADDRESS FOR TS REPEAT CHECK
  11090. SX6 2RTS
  11091. SA6 TEMPP SAVE TYPE - TN/TS
  11092. EQ SPR24 STORE TS PARAMETERS
  11093.  
  11094. SPR28 NZ X4,SPR29 IF NOT *LENGTH*
  11095. SA3 OPFLG
  11096. LX3 59-TDMIS
  11097. PL X3,SPR44 IF PARAMETER NOT VALID
  11098. SA3 LENGTH
  11099. NZ X3,SPR42 IF LENGTH ALREADY SET
  11100. BX6 X5
  11101. SA6 LENGTH
  11102. EQ SPR16 LOOP
  11103.  
  11104. SPR29 SA1 SPRQ
  11105. BX1 X6-X1
  11106. NZ X1,SPR30 IF NOT *PERCENT*
  11107. SA3 OPFLG
  11108. LX3 59-TDMJS
  11109. PL X3,SPR44 IF PARAMETER NOT VALID
  11110. SA3 PERCENT
  11111. NZ X3,SPR42 IF ALREADY SET
  11112. BX6 X5
  11113. SA6 PERCENT
  11114. EQ SPR16 LOOP
  11115.  
  11116. SPR30 SA1 SPRR
  11117. BX1 X6-X1
  11118. NZ X1,SPR41 IF INCORRECT KEYWORD
  11119. SA3 OPFLG
  11120. LX3 59-TDMKS
  11121. PL X3,SPR44 IF PARAMETER NOT VALID
  11122. SA3 CYCL
  11123. NZ X3,SPR42 IF ALREADY SET
  11124. BX6 X5
  11125. SA6 A3 SET CYCLE
  11126. EQ SPR16 LOOP
  11127.  
  11128.  
  11129. * END OF BUFFER DETECTED.
  11130.  
  11131. SPR31 MX0 42
  11132. BX1 X0*X5
  11133. ZR X1,SPR34 IF EOB
  11134. SB6 B0-2
  11135. SB4 B5-2
  11136. SPR32 SB6 B6+2
  11137. EQ B5,B0,SPR33 IF NONE
  11138. SA3 TDFN+B6
  11139. BX4 X0*X3
  11140. BX3 X4-X1
  11141. ZR X3,SPR42 IF DUPLICATE FN
  11142. NE B6,B4,SPR32 IF MORE ENTRIES
  11143. SPR33 MX0 12
  11144. SX6 2RZZ
  11145. BX7 X0*X5
  11146. LX6 48
  11147. IX6 X7-X6
  11148. NZ X6,SPR33.1 IF NOT *ARF* OR *BRF*
  11149. LX0 -12
  11150. BX7 X0*X5
  11151. LX7 12
  11152. SPR33.1 SA7 DBNAME SAVE DATA BASE NAME FOR *TT* OPTION
  11153. BX6 X1
  11154. SA6 TDFN+B5
  11155. MX6 0
  11156. SA6 A6+B1 ZERO INDEX NAME
  11157. SB5 B5+2
  11158. SPR34 SX6 B5
  11159. SA6 TEMPP
  11160. RJ CTD CHECK TIME/DATE
  11161. NZ X1,SPR45 IF ERROR
  11162. RJ RDD READ DIRECTIVE
  11163. SA3 TEMPP
  11164. SB5 X3
  11165. NZ X1,SPR35 IF EOF ENCOUNTERED
  11166. SA2 DIR
  11167. SX3 X2-1R*
  11168. NZ X3,SPR1 IF NOT CONTINUATION CARD
  11169. SPR35 MX1 0 SET NO ERRORS
  11170. BX6 X1 SET END OF BUFFER
  11171. SA6 TDFN+B5
  11172. SA3 NUMV
  11173. SB6 X3
  11174. SA6 TVSN+B6
  11175. EQ SPRX RETURN
  11176.  
  11177. SPR36 ERROR SPRG,,,DMR3,R,E ONLY *BLOCK* OR *RECORD* MODE ALLOWED
  11178.  
  11179. SPR37 ERROR SPRH,,,DMR3,R,E TOO MANY FILE NAMES OR VSN-S
  11180.  
  11181. SPR38 ERROR SPRF,,,DMR3,R,E PARAMETER FORMAT ERROR
  11182.  
  11183. SPR39 ERROR SPRI,,,DMR3,R,E DELIMITER WAS NOT RECOGNIZED
  11184.  
  11185. SPR40 ERROR BRTF,,,DMR3,R,E IGNORE TABLE OVERFLOW
  11186.  
  11187. SPR41 ERROR SPRJ,,,DMR3,R,E DIRECTIVE KEYWORD NOT VALID
  11188.  
  11189. SPR42 ERROR SPRK,,,DMR3,R,E DUPLICATE PARAMETER
  11190.  
  11191. SPR43 ERROR SPRL,,,DMR3,R,E INCOMPLETE PARAMETER
  11192.  
  11193. SPR44 ERROR SPRM,,,DMR3,R,E KEYWORD IS INCORRECT FOR FUNCTION
  11194.  
  11195. SPR45 ERROR SPRS,,,DMR3,R,E DIRECTIVE CONTAINS AN INCORRECT DATE
  11196.  
  11197.  
  11198. SPRA DATA 0LBLOCK
  11199. SPRB DATA 0LRECORD
  11200. SPRC DATA 0LDATE
  11201. SPRD DATA 0LTIME
  11202. SPRE DATA 0LVSN
  11203. SPRN DATA 0LTN
  11204. SPRO DATA 0LTS
  11205. SPRP DATA 0LLENGTH
  11206. SPRQ DATA 0LPERCENT
  11207. SPRR DATA 0LCYCL
  11208.  
  11209. * ERROR MESSAGES.
  11210.  
  11211. SPRF DATA 20H0 *****
  11212. DATA C*PARAMETER FORMAT ERROR.*
  11213. SPRFL EQU *-SPRF
  11214. SPRG DATA 20H0 *****
  11215. DATA C/ONLY *BLOCK* OR *RECORD* CAN FOLLOW FILE NAME./
  11216. SPRGL EQU *-SPRG
  11217. SPRH DATA 20H0 *****
  11218. DATA C*TOO MANY FILE NAMES OR VSN-S SPECIFIED.*
  11219. SPRHL EQU *-SPRH
  11220. SPRI DATA 20H0 *****
  11221. DATA C*DELIMITER WAS NOT RECOGNIZED.*
  11222. SPRIL EQU *-SPRI
  11223. SPRJ DATA 20H0 *****
  11224. DATA C*DIRECTIVE KEYWORD NOT VALID.*
  11225. SPRJL EQU *-SPRJ
  11226. SPRK DATA 20H0 *****
  11227. DATA C*DUPLICATE PARAMETER.*
  11228. SPRKL EQU *-SPRK
  11229. SPRL DATA 20H0 *****
  11230. DATA C*INCOMPLETE PARAMETER.*
  11231. SPRLL EQU *-SPRL
  11232. SPRM DATA 20H0 *****
  11233. DATA C*KEYWORD IS INCORRECT FOR THIS FUNCTION.*
  11234. SPRML EQU *-SPRM
  11235. SPRS DATA 20H0 *****
  11236. DATA C*DIRECTIVE CONTAINS AN INCORRECT DATE/TIME.*
  11237. SPRSL EQU *-SPRS
  11238. STL SPACE 4,20
  11239. ** STL - SET TITLE LINE FOR OUTPUT PAGE.
  11240. *
  11241. * *STL* WRITES THE TITLE LINE ONTO THE OUTPUT FILE, AND ADJUSTS
  11242. * THE LINE COUNT ACCORDINGLY.
  11243. *
  11244. * ENTRY - JOBORG = 0 IF INTERACTIVE ORIGIN.
  11245. *
  11246. * EXIT - TITLE LINE WRITTEN TO OUTPUT.
  11247. *
  11248. * USES X - 1, 2, 3, 6, 7.
  11249. * A - 1, 2, 6, 7.
  11250. * B - NONE.
  11251. *
  11252. * MACROS WRITEW.
  11253. *
  11254. * CALLS LPH.
  11255.  
  11256.  
  11257. STL SUBR ENTRY/EXIT
  11258. SX3 STLAL
  11259. SA1 JOBORG
  11260. SA2 STLB BATCH
  11261. NZ X1,STL1 IF NOT INTERACTIVE ORIGIN
  11262. SA2 STLC INTERACTIVE
  11263. SA1 BLINE
  11264. BX6 X1
  11265. SA6 STLAB
  11266. SX3 STLAL-7
  11267. STL1 BX6 X2
  11268. SA6 STLA
  11269. WRITEW O,STLA,X3
  11270. SX7 3
  11271. SA7 ALCA SET LINE COUNT
  11272. SA1 LHDR LAST HEADER
  11273. ZR X1,STLX IF NONE REQUIRED
  11274. SX6 X1
  11275. RJ LPH LIST PAGE HEADER
  11276. EQ STLX RETURN
  11277.  
  11278. STLA CON 10H1 DMREC
  11279. CON 10H- TAF/CRM
  11280. CON 10HBATCH RECO
  11281. CON 10HVERY PROGR
  11282. CON 10HAM.
  11283. STLAB DATA 20H
  11284. STLAT DATA 10H
  11285. STDATE DATA 10H BEGIN DATE
  11286. STTIME DATA 10H BEGIN TIME
  11287. STLAP CON 10H PAGE 1
  11288. BLINE CON 8L
  11289. CON 8L
  11290. STLAL EQU *-STLA
  11291.  
  11292. STLB CON 10H1 DMREC
  11293. STLC CON 10H DMREC
  11294. SVK SPACE 4,10
  11295. ** SVK - SET VSN KEY.
  11296. *
  11297. * ENTRY (X1) = VSN NUMBER.
  11298. *
  11299. * EXIT (VKY1) = FIRST WORD OF KEY.
  11300. * (VKY2) = SECOND WORD OF KEY.
  11301. *
  11302. * USES X - 0, 1, 2, 3, 6, 7.
  11303. * A - 2, 6, 7.
  11304. * B - NONE.
  11305.  
  11306.  
  11307. SVK SUBR ENTRY/EXIT
  11308. MX0 36
  11309. BX1 X0*X1
  11310. LX1 35-59
  11311. SA2 VSNK ALL ASTERISKS
  11312. MX0 24
  11313. BX3 X0*X2
  11314. BX6 X1+X3
  11315. SA6 VKY1 WORD ONE OF KEY
  11316. BX7 X2
  11317. SA7 VKY2 WORD TWO OF KEY
  11318. EQ SVKX RETURN
  11319. THDR SPACE 4,10
  11320. ** THDR - TABLE OF LISTING HEADERS.
  11321. *
  11322. *T, THDR 6/LB,6/LA,12/ALC,18/HDRL,18/HDRA
  11323. *
  11324. * LB - SPACE LINES BEFORE PRINT.
  11325. * LA - SPACE LINES AFTER PRINT.
  11326. * ALC - ADVANCE LINE COUNT.
  11327. * HDRL - HEADER LENGTH.
  11328. * HDRA - HEADER ADDRESS.
  11329.  
  11330.  
  11331. THDR BSS 0
  11332. VFD 6/1,6/0,12/3,18/HDR1L,18/HDR1 LISTING HEADER
  11333. VFD 6/1,6/0,12/3,18/HDR2L,18/HDR2 DIRECTORY HDR - FIRST
  11334. VFD 6/0,6/1,12/2,18/HDR3L,18/HDR3 DIRECTORY HDR - SECOND
  11335. VFD 6/1,6/1,12/4,18/HDR4L,18/HDR4 FILE HEADER
  11336. VFD 6/1,6/1,12/4,18/HDR5L,18/HDR5 FILE ENTRY HEADER
  11337. VFD 6/1,6/1,12/4,18/HDR6L,18/HDR6 VSN ENTRY HEADER
  11338. VFD 6/1,6/0,12/3,18/HDR7L,18/HDR7 SORTED LIST HEADER
  11339. VFD 6/1,6/1,12/4,18/HDR8L,18/HDR8 SORTED ENTRY HEADER
  11340. VFD 6/1,6/0,12/3,18/HDR9L,18/HDR9 A-I LISTING HEADER
  11341. VFD 6/1,6/1,12/4,18/HDR10L,18/HDR10 A-I ENTRY HEADER
  11342.  
  11343. HDR1 DATA C*0 PARTIAL LIST OF THE BACKUP DIRECTORY FOR TH
  11344. ,E DATA BASE - XX*
  11345. HDR1L EQU *-HDR1
  11346. HDR2 DATA C/0 CREATION BRF UNUSABLE BRF
  11347. ,-S PREA. BACKUP FIRST ARF /
  11348. HDR2L EQU *-HDR2
  11349. HDR3 DATA C* DATE TIME DATE TIME DOW
  11350. ,N PERC. DUMPS VSN *
  11351. HDR3L EQU *-HDR3
  11352. HDR4 DATA C*0 FILE HEADER : FILE PREALLOCATION BACKUP
  11353. , DUMPS*
  11354. HDR4L EQU *-HDR4
  11355. HDR5 DATA C*0 FILE TYPE DATE TIME FMT ORD IND
  11356. ,EX ORD AI RECS VSN *
  11357. HDR5L EQU *-HDR5
  11358. HDR6 DATA C*0 VSN ENTRIES : VSN NEXT VSN FILES ACT
  11359. ,.FILES NEXT ARF *
  11360. HDR6L EQU *-HDR6
  11361. HDR7 DATA C*0 CHRONOLOGICAL LIST OF THE DUMPS TAKEN*
  11362. HDR7L EQU *-HDR7
  11363. HDR8 DATA C*0 DATE TIME FILE TYPE
  11364. ,VSN FMT *
  11365. HDR8L EQU *-HDR8
  11366. HDR9 DATA C*0 LIST OF AFTER IMAGE LOG HEADERS*
  11367. HDR9L EQU *-HDR9
  11368. HDR10 DATA C*0 REC FILE TSN TASK TYPE
  11369. ,DATE TIME RL KL*
  11370. HDR10L EQU *-HDR10
  11371. TKL SPACE 4,15
  11372. ** TKL - TERMINATE KEY LIST.
  11373. *
  11374. * ENTRY (A0) = NUMBER OF WORDS IN BUFFER.
  11375. *
  11376. * EXIT (X1) = 0 IF NO LIMITS EXCEEDED.
  11377. *
  11378. * USES X - 0, 1, 2, 4, 6.
  11379. * A - 0, 1, 2, 4, 6.
  11380. * B - NONE.
  11381. *
  11382. * CALLS ALC, FML, WBL.
  11383.  
  11384.  
  11385. TKL SUBR ENTRY/EXIT
  11386. SA1 RPCT
  11387. SX2 X1-3
  11388. AX1 1
  11389. BX6 X6-X6
  11390. SA6 A1 CLEAR REPEAT
  11391. ZR X1,TKL3 IF NOT REPEAT (SUPPRESSING)
  11392. PL X2,TKL1 IF MORE THAN TWO LINES
  11393. SX6 A0
  11394. ZR X6,TKL2 IF NO WORDS
  11395. TKL1 WRITEC O,MALR WRITE REPEAT MESSAGE
  11396. SX2 B1
  11397. RJ ALC ADVANCE LINE COUNT
  11398. RJ WBL WRITE BLANK LINE
  11399. SX6 A0
  11400. NZ X6,TKL3 IF WORDS IN BUFFER
  11401. TKL2 SA4 JOBORG SET WORDS/LINE FOR FILE TYPE
  11402. SA2 X4+WPLT
  11403. SA1 WCBL
  11404. IX6 X1-X2
  11405. SA6 A1
  11406. SA0 X2
  11407. TKL3 RJ FML FORMAT PRINT LINES
  11408. BX6 X6-X6
  11409. SA6 WCBL ZERO BEGIN LINE WORD COUNT
  11410. EQ TKLX RETURN
  11411. UDT SPACE 4,20
  11412. ** UDT - UNPACK DATE AND TIME.
  11413. *
  11414. * *UDT* WILL CONVERT A PACKED DATE/TIME INTO A FORMAT
  11415. * COMPATIBLE TO DIRECTIVE PARAMETERS.
  11416. *
  11417. * ENTRY (A5) = ADDRESS OF PACKED DATE/TIME
  11418. * (X5) = PACKED DATE/TIME
  11419. *
  11420. * EXIT (X6) = DATE - 10LYYMMDD
  11421. * (X7) = TIME - 10LHHMMSS
  11422. *
  11423. * USES X - 0, 3, 4, 5, 6.
  11424. * A - 3.
  11425. * B - NONE
  11426. *
  11427. * MACROS EDATE, ETIME.
  11428.  
  11429.  
  11430. UDT SUBR ENTRY/EXIT
  11431. AX5 18
  11432. MX0 42
  11433. BX3 -X0*X5
  11434. EDATE X3
  11435. SA3 UDTA
  11436. BX6 X3*X6 REMOVE */* AND *.* AND BLANKS
  11437. LX6 6
  11438. MX0 12
  11439. BX4 X0*X6 YEAR
  11440. LX0 48
  11441. LX6 6
  11442. BX3 X0*X6 MONTH
  11443. BX4 X4+X3 ADD MONTH
  11444. LX0 48
  11445. LX6 6
  11446. BX3 X0*X6 DAY
  11447. BX5 X4+X3 ADD DAY
  11448. SA3 A5 EXTRACT PACKED TIME
  11449. MX0 42
  11450. BX3 -X0*X3
  11451. ETIME X3
  11452. SA3 UDTA MASK
  11453. BX6 X3*X6 REMOVE */* AND *.* AND BLANKS
  11454. LX6 6
  11455. MX0 12
  11456. BX4 X0*X6 HOURS
  11457. LX0 48
  11458. LX6 6
  11459. BX3 X0*X6 MINUTES
  11460. BX4 X4+X3 ADD MINUTES
  11461. LX0 48
  11462. LX6 6
  11463. BX3 X0*X6 SECONDS
  11464. BX7 X4+X3 ADD SECONDS
  11465. BX6 X5
  11466. EQ UDTX RETURN NORMAL
  11467.  
  11468. UDTA VFD 6/0,12/7777B,6/0,12/7777B,6/0,12/7777B,6/0
  11469. UPD SPACE 4,25
  11470. ** UPD - UPDATE DATA FILE.
  11471. *
  11472. * *UPD* APPLIES *AFTER IMAGE* ENTRIES AGAINST AN EXISTING
  11473. * DATA BASE FILE. ALL *AFTER IMAGES* ARE APPLIED THAT FIT
  11474. * THE VSN, TIME AND/OR DATE CRITERIA ON THE DIRECTIVE CARD.
  11475. *
  11476. * ENTRY (A2) = ADDRESS OF NEXT WORD IN BUFFER.
  11477. * (X2) = NEXT WORD IN BUFFER.
  11478. * (X6) = OPERATION FLAG.
  11479. *
  11480. * EXIT SPECIFIED FILE UPDATED WITH APPROPRIATE *AFTER
  11481. * IMAGES*.
  11482. *
  11483. * USES X - 0, 1, 2, 4, 5, 6.
  11484. * A - 1, 2, 5, 6.
  11485. * B - 5, 6, 7.
  11486. *
  11487. * CALLS ACF, ADF, BVT, CND, CWM, DXB, GNR, GXJ,
  11488. * RAF, RTF, RXJ, SPR.
  11489. *
  11490. * MACROS CLOSEM, ERROR, OPENM, READ, READW, RETURN,
  11491. * REWIND, STORE.
  11492.  
  11493.  
  11494. UPD RJ SPR SET PARAMETERS
  11495. SB5 B5-2
  11496. NZ B5,UPD18 IF OTHER THAN ONE FILE SPECIFIED
  11497.  
  11498. * DATA FILE RECOVERY ENTRY POINT.
  11499.  
  11500. UPD1 SX6 B0
  11501. SA6 TTIG NO *TTIG* TABLE SEARCH NECESSARY
  11502. SX4 3RGI*
  11503. RJ CND CHECK NEXT DIRECTIVE
  11504. NZ X1,UPD2 IF NEXT DIRECTIVE IS NOT IGNORE
  11505. SA2 DATE
  11506. BX6 X2
  11507. SA6 SDATE SAVE DATE
  11508. SA2 TIME
  11509. BX6 X2
  11510. SA6 STIME SAVE TIME
  11511. SA2 DATE1
  11512. BX6 X2
  11513. SA6 SDATE1 SAVE DATE1
  11514. SA2 TIME1
  11515. BX6 X2
  11516. SA6 STIME1 SAVE TIME1
  11517. SA2 TVSN
  11518. BX6 X2
  11519. SA6 SVSN SAVE VSN
  11520. SA2 TDFN
  11521. BX6 X2
  11522. SA6 STDFN SAVE PFN
  11523. SX6 TTIG
  11524. SA6 ITIT INITIALIZE *TTIG* TABLE POINTER
  11525. EQ DMR3 EXIT FOR IGNORE PROCESSOR
  11526.  
  11527. UPD2 SA2 TDFN
  11528. MX0 42
  11529. BX6 X0*X2
  11530. SA6 XXPFN SAVE PFN
  11531. MX0 12
  11532. BX5 X0*X6
  11533. BX6 X5
  11534. SA6 UPDE SAVE DATA BASE NAME
  11535. RJ GXJ GET *XXJ* FILE
  11536. NZ X1,UPD14 IF ERROR
  11537. SA5 XXPFN
  11538. RJ RXJ READ *XXJ* FILE
  11539. ZR X1,UPD3 IF FILE FOUND
  11540. PL X1,DMR3 IF NO FILE FOUND
  11541. ZR X2,DMR3 IF NO FILE FOUND
  11542. UPD3 SX6 PTWR WRITE MODE
  11543. SA6 XXMODE ATTACH IN WRITE MODE
  11544. RJ CWM CHECK WRITE MODE
  11545. NZ X1,DMR3 IF ERROR
  11546. RJ ADF ATTACH FILES
  11547. NZ X1,UPD14 IF ERROR
  11548. SA2 XXIXN
  11549. ZR X2,UPD3.0 IF NO INDEX FILE
  11550. SA5 PROCCFO
  11551. BX6 X1+X5
  11552. SA6 A5 STORE FILE TYPE IN PROC FILE
  11553. WRITEW ZZZZSUB,PROCD,PROCDL
  11554. WRITER ZZZZSUB,R
  11555. RJ EXC EXECUTE CONTROL CARD
  11556. UPD3.0 RJ ACF ATTACH DIRECTORY FILE
  11557. RJ BVT BUILD VSN TABLE
  11558. NZ X1,UPD14 IF ERROR, RELEASE FILES
  11559. CLOSEM DIRR,U
  11560. SA2 UPDE
  11561. BX7 X2
  11562. RJ BRT BUILD RECOVERY TABLE
  11563. NZ X1,UPD14 IF ERROR
  11564. BX6 X1
  11565. SA6 HOLD3 INITIALIZE FIRST THROUGH FLAG
  11566. SA1 XXTY GET TYPE
  11567. SX2 X1-2RIS
  11568. NZ X2,UPD4 IF NOT *IS*
  11569. SX1 #IS#
  11570. EQ UPD6 SET FO
  11571.  
  11572. UPD4 SX2 X1-2RDA
  11573. NZ X2,UPD5 IF NOT *DA*
  11574. SX1 #DA#
  11575. EQ UPD6 SET FO
  11576.  
  11577. UPD5 SX1 #AK#
  11578. UPD6 STORE DFIT,FO=X1
  11579. UPD7 OPENM DFIT,I-O OPEN DATA FILE
  11580. SX6 TVSN
  11581. SA6 IVSN INITIALIZE IVSN
  11582. SX7 TREC
  11583. SA7 PREC INITIALIZE RECOVERY VSN POINTER
  11584. SX6 B1+
  11585. SA6 TAPERR INITIALIZE TAPE ERROR COUNT
  11586. UPD8 SA2 IVSN GET NEXT TAPE
  11587. SA2 X2
  11588. ZR X2,UPD13.0 IF NO MORE AFTER IMAGE TAPES
  11589. MX0 36
  11590. BX6 X0*X2
  11591. SA6 A2 STRIP COUNT FROM TVSN ENTRY
  11592. SA3 PREC
  11593. SA1 X3+B1
  11594. SA4 HOLD3
  11595. ZR X4,UPD9 IF FIRST TIME THROUGH
  11596. IX5 X1-X6 COMPARE VSN-S
  11597. NZ X5,UPD10.10 IF VSN-S DO NOT MATCH
  11598. SX7 X3+B1
  11599. MX6 0
  11600. SA7 PREC INCREMENT RECOVERY VSN POINTER
  11601. SX7 B1
  11602. SA6 EORCNT ZERO OUT EOR COUNT
  11603. SA7 TAPERR INITIALIZE TAPE ERROR COUNT
  11604. UPD9 SX6 B1
  11605. SA6 HOLD3 RESET FIRST THROUGH FLAG
  11606. SB7 TP
  11607. MX5 0 READ MODE REQUEST
  11608. BX6 X5
  11609. SA6 HOLD SET FOR INITIAL CALL TO *GNR*
  11610. SA6 TPMODE SAVE MODE
  11611. RJ RTF REQUEST TAPE
  11612. NZ X1,UPD14 IF END OF VSN-S
  11613.  
  11614. * READ AFTER IMAGE RECORDS AND APPLY THEM TO THE FILE
  11615. * WHEN NECESSARY.
  11616.  
  11617. UPD10 REWIND TP,R
  11618. READ TP READ DMREC-S TAPE LABEL
  11619. READW TP,WBUF,WBUFL
  11620. ZR X1,UPD10.1 IF ERROR
  11621. PL X1,UPD10.2 IF NO ERROR
  11622. UPD10.1 RJ RRE READ RECOVERY ERROR
  11623. NZ X1,UPD14 IF ERROR
  11624. EQ UPD10 CONTINUE PROCESSING
  11625.  
  11626. UPD10.10 MX5 0 READ MODE
  11627. SB7 TP
  11628. RJ RTF REQUEST TAPE
  11629. NZ X1,UPD14 IF ERROR
  11630. READEI TP INITIAL READ ON NEW TAPE
  11631. UPD10.2 SA2 EORCNT
  11632. SX6 X2+B1 INCREMENT EOR COUNT
  11633. SA6 A2
  11634. UPD10.3 SX4 TP SET FET ADDRESS
  11635. RJ GNR GET NEXT RECORD - HEADER
  11636. ZR X1,UPD11 IF NO ERROR
  11637. RJ RRE READ RECOVERY ERROR
  11638. NZ X1,UPD14 IF ERROR
  11639. EQ UPD10.3 CONTINUE PROCESSING
  11640.  
  11641. UPD11 SA2 EORCNT
  11642. SX6 X2+B1
  11643. SA6 A2 INCREMENT EOR COUNT
  11644. UPD11.1 SX4 TP
  11645. RJ GNR GET NEXT RECORD
  11646. ZR X1,UPD11.2 IF NO ERROR
  11647. PL X1,UPD11.11 IF ERROR
  11648. MX0 -2
  11649. BX1 -X0-X1
  11650. NZ X1,UPD12 IF *EOF*
  11651. UPD11.11 RJ RRE READ RECOVERY ERROR
  11652. NZ X1,UPD14 IF ERROR
  11653. EQ UPD11.1 CONTINUE PROCESSING
  11654.  
  11655. UPD11.2 SA2 EORCNT
  11656. SX6 X2+B1
  11657. SA6 A2 INCREMENT EOR COUNT
  11658. RJ AAI APPLY AFTER IMAGES
  11659. NZ X1,UPD14 IF ERROR
  11660. EQ UPD11.1 GET NEXT RECORD
  11661.  
  11662. UPD12 RETURN TP
  11663. EQ UPD8 GET NEXT TAPE
  11664.  
  11665. UPD13 ERROR UPDB,,,UPD14,,E RECORD NUMBER ERROR
  11666.  
  11667. UPD13.0 SA2 XXIXN
  11668. ZR X2,UPD14 IF NO INDEX FILE
  11669. RJ BIF BUILD INDEX FILE
  11670. RJ RAF RETURN ALL FILES
  11671. EQ DMR3 RETURN NORMAL
  11672.  
  11673. UPD14 CLOSEM DFIT,U
  11674. RJ RAF RETURN DATA FILES
  11675. EQ DMR3 NORMAL RETURN
  11676.  
  11677. UPD16 ERROR UPDC,,,UPD14,,E DMREC TAPE LABEL ERROR
  11678.  
  11679. UPD17 ERROR UPDD,,,UPD14,,E DXB CONVERSION ERROR
  11680.  
  11681. UPD18 ERROR DMRA,,,UPD14,,E DIRECTIVE FORMAT ERROR
  11682.  
  11683. UPDB DATA 20H0 *****
  11684. DATA C*RECORD NUMBER ERROR.*
  11685. UPDBL EQU *-UPDB
  11686.  
  11687. UPDC DATA 20H0 *****
  11688. DATA C*DMREC TAPE LABEL ERROR.*
  11689. UPDCL EQU *-UPDC
  11690. UPDD DATA 20H0 *****
  11691. DATA C*DXB CONVERSION ERROR - TRANSACTION SEQUENCE NUMBER.*
  11692. UPDDL EQU *-UPDD
  11693. UPDE BSSZ 1 DATA BASE NAME
  11694. WBL SPACE 4,15
  11695. ** WBL - WRITE BLANK LINE.
  11696. *
  11697. * ENTRY NONE.
  11698. *
  11699. * EXIT BLANK LINE WRITTEN.
  11700. *
  11701. * USES X - 2.
  11702. * A - NONE.
  11703. * B - NONE.
  11704. *
  11705. * CALLS ALC, WTC.
  11706. *
  11707. * MACROS WRITES.
  11708.  
  11709.  
  11710. WBL SUBR ENTRY/EXIT
  11711. WRITEC O,WBLA WRITE BLANK LINE
  11712. SX2 B1
  11713. RJ ALC ADVANCE LINE COUNT
  11714. EQ WBLX RETURN
  11715.  
  11716. WBLA DATA 2C
  11717. WEM SPACE 4,25
  11718. ** WEM - WRITE ERROR MESSAGE.
  11719. *
  11720. * *WEM* WRITES AND ERROR MESSAGE TO THE DESIGNATED OUTPUT FILE.
  11721. *
  11722. * ENTRY (B4) = FWA OF ERROR MESSAGE.
  11723. * (X5) = LENGTH OF ERROR MESSAGE.
  11724. * (X1) = REPLACEMENT WORD IN MESSAGE
  11725. * (UP TO 7 CHARACTERS, LEFT JUSTIFIED).
  11726. * (X1) = 0 IF NO REPLACEMENT WORD.
  11727. * (A2) = FWA OF CARD-IMAGE CONTAINING ERROR.
  11728. * (X2) = 0 IF NO CARD-IMAGE TO PRINT.
  11729. * (JOBORG) = 0 IF INTERACTIVE ORIGIN.
  11730. *
  11731. * EXIT (X1) = 1.
  11732. *
  11733. * USES X - 0, 1, 2, 5, 6.
  11734. * A - 1, 2, 6.
  11735. * B - 2, 3, 4, 5.
  11736. *
  11737. * CALLS ALC, SNM.
  11738. *
  11739. * MACROS WRITEC, WRITEW, WRITER.
  11740.  
  11741.  
  11742. WEM SUBR ENTRY/EXIT
  11743. SX6 B4
  11744. SA6 WEMD SAVE (B4)
  11745. ZR X1,WEM1 IF NO REPLACEMENT WORD
  11746. MX0 42 FORM MASK
  11747. BX1 X0*X1 MASK UPPER 7 CHARACTERS
  11748. BX0 X2 SAVE (X2)
  11749. SB5 -B4
  11750. SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
  11751. SB3 WEMA
  11752. RJ SNM SET NAME
  11753. SX6 WEMA
  11754. SA6 WEMD RESET FWA FOR MESSAGE
  11755. BX2 X0 RESTORE (X2)
  11756. WEM1 MX0 0
  11757. ZR X2,WEM4 IF NO CARD-IMAGE TO LIST
  11758. SA1 JOBORG
  11759. NZ X1,WEM2 IF NOT INTERACTIVE ORIGIN
  11760. SX2 A2
  11761. WRITEC O,X2
  11762. SX0 B1
  11763. EQ WEM4 PROCESS ERROR MESSAGE WRITE
  11764.  
  11765. WEM2 SB3 7
  11766. SA2 A2+8 MOVE DATA
  11767. WEM3 SA2 A2-B1
  11768. BX6 X2
  11769. SA6 WEMC+B3
  11770. SB3 B3-B1
  11771. GE B3,WEM3 IF MORE
  11772. SX0 2 INCREASE LINE COUNTER
  11773. WRITEC O,WEMB
  11774. WEM4 SA2 JOBORG
  11775. SA1 WEMD
  11776. SB4 X1 RESTORE (B4)
  11777. NZ X2,WEM5 IF NOT INTERACTIVE ORIRGIN
  11778. SB4 B4+2
  11779. SX5 X5-2
  11780. SX0 X0+B1
  11781. EQ WEM6 WRITE ERROR MESSAGE
  11782.  
  11783. WEM5 SA1 WEMB
  11784. SX0 X0+B1
  11785. SA2 B4
  11786. MX6 6
  11787. BX2 X2*X6
  11788. BX1 X1*X6
  11789. IX2 X1-X2
  11790. NZ X2,WEM6 IF SINGLE SPACE
  11791. SX0 X0+B1
  11792. WEM6 SX1 B4 WRITE ERROR MESSAGE
  11793. WRITEW O,X1,X5
  11794. WRITER O FLUSH BUFFER
  11795. BX2 X0
  11796. RJ ALC ADVANCE LINE COUNT
  11797. SX1 B1 SET ERROR INDICATOR
  11798. EQ WEMX RETURN
  11799.  
  11800. * MISCELLANEOUS FIELDS.
  11801.  
  11802. WEMA BSS 8
  11803. WEMB DATA 20H0 -----
  11804. WEMC BSSZ 9
  11805. WEMD BSS 1 STORAGE FOR (B4)
  11806. WFH SPACE 4,20
  11807. ** WFH - WRITE FILE HEADER.
  11808. *
  11809. * *WFH* WRITES A HEADER FOR FILES WRITTEN TO TAPE. THIS
  11810. * HEADER IS TEN OCTAL WORDS LONG AND CONSISTS OF THE
  11811. * FILE NAME AND FORMAT.
  11812. *
  11813. * ENTRY (X2) = FILE NAME.
  11814. * (X4) = DUMP MODE INDECATOR.
  11815. * (ACFA) = DIRECTORY FILE NAME.
  11816. *
  11817. * EXIT (X1) = 0 - IF NO ERROR.
  11818. *
  11819. * USES X - 0, 1, 2, 6, 7.
  11820. * A - 1, 6, 7.
  11821. * B - NONE.
  11822. *
  11823. * MACROS WRITER.
  11824. *
  11825. * CALLS DER.
  11826.  
  11827.  
  11828. WFH SUBR ENTRY/EXIT
  11829. MX0 42
  11830. SA1 TP+B1
  11831. SX7 X1
  11832. SA7 A1+2 OUT
  11833. SX7 X7+8
  11834. SA7 A7-B1 IN
  11835. SA1 ACFA
  11836. BX1 X1-X2
  11837. BX1 X0*X1
  11838. ZR X1,WFH1 IF DIRECTORY FILE
  11839. SA1 DMPFLG GET DUMP FLAG
  11840. NZ X1,WFH1 IF NOT *ARF*
  11841. LX2 48-0 POSITION *ARF*
  11842. WFH1 BX7 X2
  11843. SA7 TBUF FN IN HEADER+0
  11844. BX6 X4
  11845. SA6 A7+B1 MODE IN HEADER+1
  11846. WRITER TP,R
  11847. RJ DER DETECT END OF TAPE
  11848. NG X1,WFH2 IF END OF TAPE
  11849. NZ X1,WFHX IF ERROR
  11850. WFH2 SX1 B0
  11851. EQ WFHX NORMAL RETURN
  11852. WSB SPACE 4,15
  11853. ** WSB - WRITE STRING BUFFER.
  11854. *
  11855. * ENTRY NONE.
  11856. *
  11857. * EXIT STRING BUFFER WRITTEN TO OUTPUT FILE.
  11858. *
  11859. * CALLS ALC, WTS.
  11860. *
  11861. * USES X - 2, 6.
  11862. * A - 6.
  11863. * B - NONE.
  11864.  
  11865.  
  11866. WSB SUBR ENTRY/EXIT
  11867. WRITES O,OLWS,OLWSL
  11868. SX2 B1
  11869. RJ ALC ADVANCE LINE COUNT
  11870. BX6 X6-X6
  11871. SA6 SCPC SET LINE EMPTY
  11872. EQ WSBX RETURN
  11873. UPD SPACE 4,10
  11874. TITLE BUFFERS.
  11875. BUFFERS SPACE 4,10
  11876. ** BUFFERS.
  11877.  
  11878. IBUF BSS IBUFL INPUT FILE BUFFER
  11879.  
  11880. OBUF BSS OBUFL OUTPUT FILE BUFFER
  11881.  
  11882. PBUF BSS PBUFL PROCEDURE FILE BUFFER
  11883.  
  11884. TBUF BSS TBUFL TAPE FILE BUFFER
  11885.  
  11886. DBUF BSS DBUFL DATA FILE BUFFER
  11887.  
  11888. HBUF BSS HBUFL HASH FILE BUFFER
  11889.  
  11890. OLWS EQU FTAB PRINT LINE BUFFER - CHARACTER MODE
  11891.  
  11892. DIR EQU * INPUT CHARACTER BUFFER
  11893. LRDBUF BSS LRDBUFL HASH LOAD BUFFER
  11894.  
  11895. CBUF BSS CBUFL RECORD DECOMPRESSION BUFFER
  11896.  
  11897. FWAB BSS 0 FWA OF BUFFER
  11898. WBUF BSS WBUFL WORKING STORAGE BUFFER
  11899. LWAB EQU * LWA OF BUFFER
  11900. COMMON SPACE 4,10
  11901.  
  11902. END DMREC