Table of Contents

DMSZAP Source

References

Source Listing

DMSZAP.ASSEMBLE.txt
  1. ZAP TITLE 'DMSZAP (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * 00005000
  6. * MODULE NAME: 00006000
  7. * 00007000
  8. * DMSZAP (ZAP) 00008000
  9. * 00009000
  10. * FUNCTION: 00010000
  11. * 00011000
  12. * TO PROVIDE A SUPERZAP LIKE FACILITY TO MAINTAIN CMS 00012000
  13. * LOADLIB, TXTLIB, AND MODULE FILES. 00013000
  14. * 00014000
  15. * ATTRIBUTES: 00015000
  16. * 00016000
  17. * DISK RESIDENT. 00017000
  18. * 00018000
  19. * ENTRY POINTS: 00019000
  20. * 00020000
  21. * DMSZAP - VIA THE COMMAND ZAP 00021000
  22. * 00022000
  23. * ENTRY CONDITIONS: 00023000
  24. * 00024000
  25. * R15 - ADDRESSABILITY 00025000
  26. * R1 - PLIST 00026000
  27. * 00027000
  28. * PLIST: 00028000
  29. * CL8'ZAP' 00029000
  30. * CL8'LOADLIB', 'TXTLIB', OR 'MODULE' 00030000
  31. * CL8'LIBRARY-NAME' FOR TXTLIB OR LOADLIB 00031000
  32. * CL8'LIBRARY-NAME' OPTIONAL 00032000
  33. * CL8'LIBRARY-NAME' OPTIONAL 00033000
  34. * CL8'(' IF OPTIONS DESIRED 00034000
  35. * CL8'TERM' OR 'INPUT FILE-NAME' 00035000
  36. * CL8'PRINT' OR 'NOPRINT' 00036000
  37. * CL8'FFFFFFFF' 00037000
  38. * 00038000
  39. * LIBRARY-NAME - FILENAME(S) OF THE LOADLIB(S) 00039000
  40. * OR TXTLIB(S) CONTAINING THE MEMBER(S) BEING 00040000
  41. * REFERENCED IN THE ZAP CONTROL RECORDS. 00041000
  42. * 00042000
  43. * INPUT - SPECIFIES THE ZAP CONTROL RECORDS ARE 00043000
  44. * TO BE READ FROM 'FILE-NAME' WITH A FILE TYPE 00044000
  45. * OF 'ZAP'. 00045000
  46. * 00046000
  47. * TERM - DEFINES THE ZAP CONTROL RECORDS AS BEING 00047000
  48. * READ FROM THE USERS CONSOLE, THIS IS THE DEFAULT. 00048000
  49. * 00049000
  50. * PRINT - SPECIFIES THAT ZAP CONTROL RECORDS AND 00050000
  51. * MESSAGES ARE TO BE PRINTED ON THE SYSPRINT DEVICE. 00051000
  52. * THIS IS THE DEFAULT. 00052000
  53. * 00053000
  54. * NOPRINT - NO OUTPUT IS TO GO TO THE SYSPRINT 00054000
  55. * DEVICE. 00055000
  56. * 00056000
  57. * EXIT CONDITIONS: 00057000
  58. * 00058000
  59. * NORMAL - RETURN TO CMS VIA R14, R15 = ZERO 00059000
  60. * ERROR - RETURN TO CMS VIA R14, R15= NON-ZERO 00060000
  61. * 00061000
  62. * CALLS TO OTHER ROUTINES: 00062000
  63. * 00063000
  64. * DMSSVT,DMSSMN, DMSFNS, DMSSTT, DMSBWR, DMSBRD, 00064000
  65. * DMSPRT, DMSERR 00065000
  66. * 00066000
  67. * EXTERNAL REFERENCES: 00067000
  68. * 00068000
  69. * NONE 00069000
  70. * 00070000
  71. * TABLES/WORKAREAS: 00071000
  72. * 00072000
  73. * NONE 00073000
  74. * 00074000
  75. * REGISTER USAGE: 00075000
  76. * 00076000
  77. * R1 - INPUT PLIST 00077000
  78. * R2-R8 - WORK 00078000
  79. * R9 - BASE 00079000
  80. * R10 - LINK 00080000
  81. * R11-R12 - BASE 00081000
  82. * R13 - SAVE AREA 00082000
  83. * R14 - RETURN 00083000
  84. * R15 - ERROR RETURN 00084000
  85. * 00085000
  86. * OPREATION: 00086000
  87. * 00087000
  88. * THE INPUT REGISTERS ARE SAVED AND BASE REGISTERS ARE 00088000
  89. * SET. 00089000
  90. * 00090000
  91. * THE COMMAND LINE IS THEN CHECKED FOR ACCURACY AND 00091000
  92. * OPTIONS ARE SET. 00092000
  93. * 00093000
  94. * IF INPUT WAS ONE OF THE OPTIONS, THE INPUT FILE IS 00094000
  95. * LOCATED AND CHECKED FOR PROPER ATTRIBUTES. 00095000
  96. * 00096000
  97. * A CONTROL RECORD IS READ. IF THE PRINT OPTION IS IN 00097000
  98. * EFFECT, THE RECORD IS WRITTEN ON THE SYSPRINT FILE. 00098000
  99. * IF THE NOPRINT AND INPUT OPTIONS HAVE BEEN SPECIFIED, 00099000
  100. * THE INPUT RECORDS ARE DISPLAYED ON THE CONSOLE. THE 00100000
  101. * TYPE OF CONTROL RECORD IS THEN DETERMINED AND CONTROL 00101000
  102. * PASSES TO THE PROPER SUBROUTINE. 00102000
  103. * 00103000
  104. * DUMP CONTROL RECORD: 00104000
  105. * 00105000
  106. * THE MEMBER OR MODULE NAME IS RETRIEVED FROM THE 00106000
  107. * CONTROL RECORD AND A SEARCH IS MADE FOR THE CSECT 00107000
  108. * NAME. IF NO CSECT IS SPECIFIED, THE FIRST CSECT 00108000
  109. * WILL BE DUMPED. IF 'ALL' IS SPECIFIED, THE COMPLETE 00109000
  110. * MEMBER OR MODULE WILL BE DUMPED. IF A CSECT IS 00110000
  111. * SPECIFIED, A SEARCH IS MADE FOR STARTING AND ENDING 00111000
  112. * ADDRESSES. IF THE STARTING ADDRESS IS LOCATED, THE 00112000
  113. * DUMP WILL COMMENCE AT THAT LOCATION. IF NO ENDING 00113000
  114. * ADDRESS IS SPECIFIED, THE COMMAND WILL DUMP THE REST 00114000
  115. * OF THE CSECT. IF NEITHER ADDRESS IS SPECIFIED, THE 00115000
  116. * COMPLETE CSECT WILL BE DUMPED. THE SPECIFIED CSECT 00116000
  117. * IS THEN LOCATED (SEE OPEN ROUTINE) AND THE FILE 00117000
  118. * RECORDS ARE READ AND PRINTED (SEE READ TEXT ROUTINE). 00118000
  119. * 00119000
  120. * NAME CONTROL RECORD: 00120000
  121. * 00121000
  122. * THE MEMBER OR MODULE NAME IS RETRIEVED FROM THE 00122000
  123. * CONTROL RECORD AND A SEARCH IS MADE FOR THE CSECT 00123000
  124. * NAME. IF NO CSECT IS SPECIFIED, THE FIRST CSECT 00124000
  125. * IS ASSUMED THE DESIRED CSECT. THE LIBRARY OR 00125000
  126. * MODULE IS THEN LOCATED AND THE SPECIFIED NAMES ARE 00126000
  127. * FOUND (SEE OPEN ROUTINE). 00127000
  128. * 00128000
  129. * BASE CONTROL RECORD: 00129000
  130. * 00130000
  131. * THE BASE ADDRESS IS RETRIEVED AND A CHECK IS MADE TO 00131000
  132. * DETERMINE THAT THE BASE ADDRESS AGREES WITH A CSECT 00132000
  133. * ADDRESS. IF THE BASE CONTROL RECORD IS BEING USED 00133000
  134. * WITH A MODULE GENERATED WITH THE NOMAP OPTINE, NO 00134000
  135. * CHECK IS MADE. 00135000
  136. * 00136000
  137. * VER AND REP CONTROL RECORDS: 00137000
  138. * 00138000
  139. * CHECKS ARE MADE THAT A NAME CONTROL RECORD HAS BEEN 00139000
  140. * ENTERED AND, IF REP, THE NOGO SWITCH IS OFF. THE 00140000
  141. * DISPLACEMENT AND DATA FIELDS ARE OBTAINED AND COMMAS, 00141000
  142. * IF ANY, ARE REMOVED FROM THE DATA FIELD. THE CSECT 00142000
  143. * STARTING AND ENDING ADDRESSES ARE COMPARED WITH THE 00143000
  144. * DISPLACEMENT ADDRESS AND DATA LENGTH TO VERIFY THE 00144000
  145. * OPERATION IS WHOLLY WITHIN THE CSECT. THE SPECIFIED 00145000
  146. * MEMBER IS THEN READ AND THE OPERATION PERFORMED (SEE 00146000
  147. * READ TEXT ROUTINE). 00147000
  148. * 00148000
  149. * LOG CONTROL RECORD: 00149000
  150. * 00150000
  151. * CHECKS THAT THE REP FUNCTION WAS COMPLETED AS 00151000
  152. * SPECIFIED. IF SO, THE FIX NUMBER IS LOGGED TO 00152000
  153. * A FILE OF 'FILENAME' EQUAL MEMBER NAME AND 00153000
  154. * 'FILETYPE' EQUAL TO THE DEFAULT OF 'ZAPLOG', OR 00154000
  155. * OPTIONALLY SPECIFIED AS THE LOG CONTROL RECORD. 00155000
  156. * IF THE FILE ALREADY EXISTS, THE RECORD IS WRITTEN 00156000
  157. * AS THE FIRST RECORD IN THE FILE. 00157000
  158. * 00158000
  159. * END CONTROL RECORDS: 00159000
  160. * 00160000
  161. * ALL FILES ARE CLOSED, A COMPLETE MESSAGE IS PRINTED, 00161000
  162. * AND CONTROL RETURNS TO CMS. 00162000
  163. * 00163000
  164. * THE OPEN ROUTINE: 00164000
  165. * 00165000
  166. * THE MODULE OR FIRST LIBRARY NAME IS OBTAINED AND A 00166000
  167. * SEARCH IS MADE FOR THE FILE. IF ALL THE SPECIFIED 00167000
  168. * LIBRARIES CANNOT BE LOCATED, PROCESSING TERMINATES. 00168000
  169. * ONCE A LIBRARY HAS BEEN LOCATED, A SEARCH IS MADE 00169000
  170. * FOR THE MEMBER OR, FOR TXTLIBS, THE CSECT NAME 00170000
  171. * SPECIFIED. IF THE NAME CANNOT BE LOCATED, AN ATTEMPT 00171000
  172. * IS MADE TO LOCATE ANOTHER LIBRARY AND REPEAT THE 00172000
  173. * OPERATION. IF THE MEMBER CANNOT BE FOUND OR A MODULE 00173000
  174. * CANNOT BE LOCATED, AN ERROR MESSAGE IS ISSUED AND 00174000
  175. * CONTROL RETURNS TO READ ANOTHER INPUT CONTROL RECORD. 00175000
  176. * ONCE THE MEMBER OR MODULE HAS BEEN LOCATED, A SEARCH 00176000
  177. * IS MADE FOR THE CSECT, IF ONE IS SPECIFIED. IF NO 00177000
  178. * CSECT IS SPECIFIED, THE FIRST CSECT IS ASSUMED. FOR 00178000
  179. * MODULES WITH NO LOADER TABLES, THE COMPLETE MODULE 00179000
  180. * IS TREATED AS ONE CSECT. WHEN THE CSECT IS FOUND, 00180000
  181. * ITS STARTING AND ENDING ADDRESSES ARE SAVED AND 00181000
  182. * CONTROL RETURNS TO THE CALLING ROUTINE. 00182000
  183. * 00183000
  184. * THE READ TEXT ROUTINE: 00184000
  185. * 00185000
  186. * THE FIRST RECORD OF THE MEMBER OR MODULE IS READ AND, 00186000
  187. * IF TXTLIB OR LOADLIB, CHECKED FOR THE PROPER CSECT. 00187000
  188. * IF NOT THE CORRECT CSECT, THE MEMBER'S RECORDS ARE 00188000
  189. * READ UNTIL THE PROPER CSECT IS LOCATED. THE ENDING 00189000
  190. * ADDRESS OF EACH TEXT RECORD IS COMPARED WITH THE 00190000
  191. * DESIRED STARTING POINT OF THE OPERATION AND, IF NOT 00191000
  192. * GREATER THEN THE DESIRED START, THE NEW TEXT RECORD 00192000
  193. * IS READ. WHEN THE PROPER TEXT RECORD IS LOCATED, A 00193000
  194. * TEST IS MADE TO DETERMINE IF THIS IS STARTING OR 00194000
  195. * CONTINUING AN OPERATION. IF CONTINUING AN OPERATION, 00195000
  196. * A FURTHER CHECK IS MADE TO DETERMINE IF THE FIRST 00196000
  197. * BYTE OF THE CURRENT RECORD IMMEDIATELY FOLLOWS THE 00197000
  198. * LAST BYTE OF THE PREVIOUS RECORD. IF NOT, AND THE 00198000
  199. * OPERATION IS VER OR REP, THE OPERATION STOPS. THE 00199000
  200. * DISPLACEMENT WITHIN THE RECORD IS DETERMINED AND THE 00200000
  201. * DESIRED OPERATION IS PERFORMED. 00201000
  202. * 00202000
  203. * FOR VER AND REP OPERATIONS, THE LENGTH OF THE DATA 00203000
  204. * FIELD IS OBTAINED AND THE DATA IS EITHER COMPARED 00204000
  205. * WITH THE RECORD OR MOVED INTO THE RECORD. WHEN THE 00205000
  206. * RECORD OR DATA IS EXHAUSTED AND THE OPERATION IS 00206000
  207. * REP, THE RECORD IS WRITTEN BACK TO THE FILE. THEN 00207000
  208. * THE CONTINUING FLAG IS SET AND ANOTHER RECORD IS READ; 00208000
  209. * OTHERWISE, CONTROL RETURNS TO READ ANOTHER INPUT 00209000
  210. * CONTROL RECORD. 00210000
  211. * 00211000
  212. * FOR DUMP OPERATIONS, A CHECK IS MADE FOR 'ALL'. IF 00212000
  213. * SO, A LINE IS PRINTED WITH THE CSECT NAME BEFORE 00213000
  214. * EACH CSECT IS PRINTED. THE OUTPUT LINE IS THEN SET 00214000
  215. * UP DEPENDING ON WHETHER THE LINE GOES TO THE USER'S 00215000
  216. * CONSOLE OR TO THE PRINTER. THE ADDRESS OF THE 00216000
  217. * CURRENT RECORD IS INSERTED INTO THE LINE AND THE 00217000
  218. * RECORD DATA ARE FORMATTED AND MOVED INTO THE LINE. 00218000
  219. * IF THE LINE IS COMPLETED, THE DATA ARE CONVERTED 00219000
  220. * INTO CHARACTERS AND THE LINE IS PRINTED. IF ANOTHER 00220000
  221. * INPUT RECORD IS REQUIRED TO COMPLETE THE LINE, THE 00221000
  222. * CURRENT LINE POINTERS ARE SAVED AND A NEW RECORD IS 00222000
  223. * READ. IF THE AREA TO BE PRINTED CONTAINS UNDEFINED 00223000
  224. * AREAS (SUCH AS DEFINE STORAGE INSTRUCTIONS), 00224000
  225. * BLANKS ARE INSERTED INTO THE HEXADECIMAL PORTION 00225000
  226. * OF THE DUMP LINE. THE LINE IS THEN PRINTED OR TYPED 00226000
  227. * DEPENDING ON THE PRINT OR NOPRINT OPTION SPECIFIED. 00227000
  228. * WHEN THE SPECIFIED LINES HAVE BEEN PRINTED, 00228000
  229. * CONTROL RETURNS TO READ ANOTHER ZAP CONTROL RECORD. 00229000
  230. *. 00230000
  231. EJECT 00231000
  232. DMSZAP START 0 @V200809 00232000
  233. * 00233000
  234. * SAVE INPUT REGISTERS AND SET ADDRESSABILITY. 00234000
  235. * 00235000
  236. SAVE (14,12) @V200809 00236000
  237. LR R12,R15 SET BASE REG @V200809 00237000
  238. LA R11,4095(,R12) SET SECOND BASE REG @V200809 00238000
  239. LA R11,1(R11) @V200809 00239000
  240. LA R9,4095(,R11) SET THIRD BASE REGISTER @V2A3765 00240000
  241. LA R9,1(,R9) @V2A3765 00241000
  242. * R13 WILL BE SET LATER 00241700
  243. USING DMSZAP,R12,R11,R9,R13 @VA09155 00242400
  244. USING NUCON,R0 @V200809 00243000
  245. ST R13,REGSAVE+4 SET BACKWARD SAVE CHAIN @V200809 00244000
  246. LR R10,R13 @V200809 00245000
  247. LA R13,REGSAVE @V200809 00246000
  248. ST R13,8(,R10) SET FORWARD SAVE CHAIN @V200809 00247000
  249. LA R1,8(R1) INCREMENT TO PLIST @V200809 00248000
  250. DMSKEY NUCLEUS @V305066 00249000
  251. MVC DOSF,DOSFLAGS SAVE FLAGS TEMPORARILY @V305066 00250000
  252. NI DOSFLAGS,255-DOSSVC DISABLE DOSSVC FOR AWHILE @V305066 00251000
  253. DMSKEY RESET @V305066 00252000
  254. * 00253000
  255. * VERIFY COMMAND LINE 00254000
  256. * 00255000
  257. LA R13,4095(,R9) INITIALIZE R13 AS @VA09155 00255300
  258. LA R13,1(,R13) FOURTH BASE REG @VA09155 00255600
  259. BAL R10,SCANLINE @V2A3765 00256000
  260. B INITOPEN @V2A3765 00257000
  261. B NOMORE @V2A3765 00258000
  262. * 00259000
  263. * OPEN INPUT (IF SPECIFIED) AND OUTPUT (PRINTER) FILES 00260000
  264. * 00261000
  265. INITOPEN EQU * @V2A3765 00262000
  266. BAL R10,FDEFINP @V2A3765 00263000
  267. B CONTROL @V2A3765 00264000
  268. B NOMORE @V2A3765 00265000
  269. * 00266000
  270. * READ INPUT CONTROL RECORDS AND PERFORM OPERATIONS 00267000
  271. * 00268000
  272. CONTROL EQU * @V2A3765 00269000
  273. B READINP @V2A3765 00270000
  274. * 00271000
  275. * FINISH UP AND RETURN 00272000
  276. * 00273000
  277. NOMORE EQU * @V2A3765 00274000
  278. SR R15,R15 @V2A3765 00275000
  279. IC R15,ERCODE GET ERROR CODE @V2A3765 00276000
  280. L R13,REGSAVE+4 GET PRIOR SAVE AREA ADDRESS @V2A3765 00277000
  281. DMSEXS MVC,DOSFLAGS,DOSF RESTORE DOSFLAGS @V305066 00278000
  282. RETURN (14,12),RC=(15) @V2A3765 00279000
  283. EJECT 1 00280000
  284. SCANLINE EQU * @V2A3765 00281000
  285. * 00282000
  286. * SCAN INPUT LINE 00283000
  287. * 00284000
  288. ST R10,SCANSAVE SAVE LINK REGISTER @V2A3765 00285000
  289. CLI 0(R1),X'FF' END OF INPUT PLIST? @V200809 00286000
  290. BNE FUNCOK BRANCH IF NOT @V2A3765 00287000
  291. BAL R10,NOFUNC ELSE ILLEGAL FUNCTION @V2A3765 00288000
  292. L R10,SCANSAVE GET LINK REGISTER @V2A3765 00289000
  293. LA R10,4(,R10) INDICATE ERROR @V2A3765 00290000
  294. B ENDSCAN1 @V2A3765 00291000
  295. FUNCOK EQU * @V2A3765 00292000
  296. ST R1,INPLIST SAVE PLIST ADDR @V200809 00293000
  297. LR R2,R1 PLIST IN R2 @V200809 00294000
  298. CLC 0(8,R2),STNAME+8 LOADLIB SPECIFIED? @V2A3765 00295000
  299. BE CHKLIB BRANCH IF YES @V2A3765 00296000
  300. CLC 0(8,R2),MODULE MODULE SPAECIFIED? @V2A3765 00297000
  301. BE YESMOD BRANCH IF YES @V2A3765 00298000
  302. CLC 0(8,R2),TXTLIB TXTLIB SPECIFIED? @V2A3765 00299000
  303. BE GOODFUNC BRANCH IF YES @V2A3765 00300000
  304. BAL R10,INVFUNC ELSE INVALID FUNCTION @V2A3765 00301000
  305. L R10,SCANSAVE GET LINK REGISTER @V2A3765 00302000
  306. LA R10,4(,R10) INDICATE ERROR @V2A3765 00303000
  307. B ENDSCAN1 @V2A3765 00304000
  308. YESMOD EQU * @V2A3765 00305000
  309. OI SWT,ZAPM INDICATE MODULE @V2A3765 00306000
  310. MVC STNAME+8(8),MODULE MOVE IN FILETYPE @V2A3765 00307000
  311. LA R2,8(,R2) POINT TO NEXT PARAMETER @V2A3765 00308000
  312. B CHKPRN @V2A3765 00309000
  313. GOODFUNC EQU * @V2A3765 00310000
  314. OI SWT,ZAPT INDICATE TXTLIB @V2A3765 00311000
  315. MVC STNAME+8(8),TXTLIB MOVE IN TILETYPE @V2A3765 00312000
  316. CHKLIB EQU * @V2A3765 00313000
  317. LA R2,8(R2) INCREMENT TO NEXT PARM @V200809 00314000
  318. CLI 0(R2),X'FF' END OF PLIST? @V2A3765 00315000
  319. BE NOLIB BRANCH IF YES, ERROR @V2A3765 00316000
  320. CLI 0(R2),LFTPRN IS THIS LEFT PARN? @V2A3765 00317000
  321. BNE ONELIB BRANCH IF NOT @V2A3765 00318000
  322. NOLIB EQU * @V2A3765 00319000
  323. BAL R10,MISSLIB ELSE MISSING LIBRARY @V2A3765 00320000
  324. L R10,SCANSAVE GET LINK REGISTER @V2A3765 00321000
  325. LA R10,4(,R10) INDICATE ERROR @V2A3765 00322000
  326. B ENDSCAN1 @V2A3765 00323000
  327. ONELIB EQU * @V200809 00324000
  328. LA R15,LIBNAME1 POINT TO FIRST LIBNAME @V2A3765 00325000
  329. LA R14,3 MAXIMUM OF 3 LIBRARYS @V2A3765 00326000
  330. STLIB EQU * @V2A3765 00327000
  331. ST R2,0(,R15) SAVE LIBRARY ADDRESS @V2A3765 00328000
  332. LA R15,4(,R15) POINT TO NEXT LIBRARY @V2A3765 00329000
  333. LA R2,8(R2) YES, INCREMENT TO NEXT PARM @V200809 00330000
  334. CLI 0(R2),LFTPRN IS THIS LEFT PARN? @V2A3765 00331000
  335. BE CHKOPT YES, CHECK OPTIONS @V2A3765 00332000
  336. CLI 0(R2),X'FF' END OF PLIST? @V2A3765 00333000
  337. BE ENDSCAN BRANCH IF YES @V2A3765 00334000
  338. OI SWT2,MULTLIB NO, INDICATE MULTIPLE LIBS @VM03228 00335000
  339. BCT R14,STLIB DO NEXT LIBRARY @V2A3765 00336000
  340. CHKPRN EQU * @V2A3765 00337000
  341. CLI 0(R2),X'FF' END OF PLIST? @V200809 00338000
  342. BE ENDSCAN BRANCH IF YES @V2A3765 00339000
  343. CLI 0(R2),LFTPRN IS THIS LEFT PARN? @V2A3765 00340000
  344. BE CHKOPT BRANCH IF YES @V2A3765 00341000
  345. BAL R10,INVPARM ELSE INVALID PARAMETER @V2A3765 00342000
  346. L R10,SCANSAVE GET LINK REGISTER @V2A3765 00343000
  347. LA R10,4(,R10) INDICATE ERROR @V2A3765 00344000
  348. B ENDSCAN1 @V2A3765 00345000
  349. CHKOPT EQU * @V2A3765 00346000
  350. LA R15,OPTNUM GET NUMBER OF OPTIONS @V2A3765 00347000
  351. LA R14,OPTTAB POINT TO TABLE @V2A3765 00348000
  352. LA R2,8(,R2) POINT TO OPTION @V2A3765 00349000
  353. CHKOPT1 EQU * @V2A3765 00350000
  354. CLC 0(8,R14),0(R2) IS THIS THE OPTION? @V2A3765 00351000
  355. BE OPTFND BRANCH IF SO @V2A3765 00352000
  356. LA R14,TABENT(,R14) GET NEXT OPTION @V2A3765 00353000
  357. BCT R15,CHKOPT1 AND CHECK IT @V2A3765 00354000
  358. B OPTBAD NO MATCH, ERROR @V2A3765 00355000
  359. OPTFND EQU * @V2A3765 00356000
  360. L R15,TABADDR(,R14) GET ROUTINE ADDRESS @V2A3765 00357000
  361. BALR R10,R15 GO TO ROUTINE @V2A3765 00358000
  362. B OPTBAD BAD OPTION @V2A3765 00359000
  363. B CHKOPT @V2A3765 00360000
  364. OPTEND EQU * @V2A3765 00361000
  365. MVI LIBSWT,INITLIB INITIALIZE LIBSWT @V2A3765 00362000
  366. B ENDSCAN @V2A3765 00363000
  367. OPTBAD EQU * @V2A3765 00364000
  368. BAL R10,INVOPT ELSE INVALID OPTION @V2A3765 00365000
  369. L R10,SCANSAVE GET LINK REGISTER @V2A3765 00366000
  370. LA R10,4(,R10) INDICATE ERROR @V2A3765 00367000
  371. B ENDSCAN1 @V2A3765 00368000
  372. ENDSCAN EQU * @V2A3765 00369000
  373. L R10,SCANSAVE GET LINK REGISTER @V2A3765 00370000
  374. ENDSCAN1 EQU * @V2A3765 00371000
  375. BR R10 @V2A3765 00372000
  376. SPACE 3 00373000
  377. SCANSAVE DS F @V2A3765 00374000
  378. EJECT 1 00375000
  379. * 00376000
  380. * SET INPUT OPTION 00377000
  381. * 00378000
  382. INPTOPT EQU * @V2A3765 00379000
  383. TM LIBSWT,INPUT+CONS SPEC. CONS OR INPUT BEFORE? @V2A3765 00380000
  384. BNZ INPTRT BRANCH IF YES, ERROR @V2A3765 00381000
  385. OI LIBSWT,INPUT INDICATE INPUT @V2A3765 00382000
  386. LA R2,8(,R2) POINT TO INPUT NAME @V2A3765 00383000
  387. CLI 0(R2),X'FF' IS THERE A NAME? @V2A3765 00384000
  388. BE INPTRT BRANCH IF NOT @V2A3765 00385000
  389. ST R2,DDNAME SAVE ADDRESS @V2A3765 00386000
  390. NI SWT,255-CONSOLE REMOVE CONSOLE @V2A3765 00387000
  391. LA R10,4(,R10) GOOD RETURN @V2A3765 00388000
  392. INPTRT EQU * @V2A3765 00389000
  393. BR R10 @V2A3765 00390000
  394. EJECT 1 00391000
  395. * 00392000
  396. * SET CONSOLE OPTION 00393000
  397. * 00394000
  398. CONSOPT EQU * @V2A3765 00395000
  399. TM LIBSWT,INPUT+CONS SPEC. CONS OR INPUT BEFORE? @V2A3765 00396000
  400. BNZ CONSRT BRANCH IF YES, ERROR @V2A3765 00397000
  401. OI LIBSWT,CONS INDICATE CONSOLE @V2A3765 00398000
  402. LA R10,4(,R10) GOOD RETURN @V2A3765 00399000
  403. CONSRT EQU * @V2A3765 00400000
  404. BR R10 @V2A3765 00401000
  405. EJECT 1 00402000
  406. * 00403000
  407. * SET PRINT OPTION 00404000
  408. * 00405000
  409. PRINTOPT EQU * @V2A3765 00406000
  410. TM LIBSWT,PT+NOPT SPEC. PRT OR NOPRT BEFORE? @V2A3765 00407000
  411. BNZ PRINTRT BRANCH IF YES, ERROR @V2A3765 00408000
  412. OI LIBSWT,PT INDICATE PRINT @V2A3765 00409000
  413. LA R10,4(,R10) GOOD RETURN @V2A3765 00410000
  414. PRINTRT EQU * @V2A3765 00411000
  415. BR R10 @V2A3765 00412000
  416. EJECT 1 00413000
  417. * 00414000
  418. * SET NOPRINT OPTION 00415000
  419. * 00416000
  420. NOPRTOPT EQU * @V2A3765 00417000
  421. TM LIBSWT,PT+NOPT SPEC. PRT OR NOPRT BEFORE? @V2A3765 00418000
  422. BNZ NOPRTRT BRANCH IF YES, ERROR @V2A3765 00419000
  423. OI LIBSWT,NOPT INDICATE NOPRINT @V2A3765 00420000
  424. NI SWT,255-PRINT REMOVE PRINT @V2A3765 00421000
  425. LA R10,4(,R10) GOOD RETURN @V2A3765 00422000
  426. NOPRTRT EQU * @V2A3765 00423000
  427. BR R10 @V2A3765 00424000
  428. EJECT 00425000
  429. * 00426000
  430. * FILEDEF INPUT DCB AND OPEN IT 00427000
  431. * 00428000
  432. FDEFINP EQU * @V2A3765 00429000
  433. TM SWT,CONSOLE CONSOLE BEEN SPECIFIED? @V2A3765 00430000
  434. BO FDEFEND BRANCH IF YES @V2A3765 00431000
  435. L R3,DDNAME GET FILENAME @V2A3765 00432000
  436. MVC INFILEN,0(R3) AND INSERT INTO PLIST @V2A3765 00433000
  437. LA R8,INFILEN POINT TO FILENAME @V2A3765 00434000
  438. LA R1,INFUNC POINT TO PLIST @V2A3765 00435000
  439. SVC 202 @V2A3765 00436000
  440. DC AL4(*+4) @V2A3765 00437000
  441. LTR R15,R15 ARE THERE ERRORS? @V2A3765 00438000
  442. BZ INPFND BRANCH IF NOT @V2A3765 00439000
  443. LR R2,R10 SAVE RETURN REGISTER @V2A3765 00440000
  444. BAL R10,LIBNTFD1 GO PRINT MESSAGE @V2A3765 00441000
  445. LA R10,4(,R2) SET ERROR RETURN @V2A3765 00442000
  446. B FDEFEND @V2A3765 00443000
  447. INPFND EQU * @V2A3765 00444000
  448. L R1,INBUF POINT TO FST @V2A3765 00445000
  449. USING FSTSECT,R1 @V2A3765 00446000
  450. MVC INFLGS(1),FSTFV MOVE IN F/V INDICATOR @V2A3765 00447000
  451. CLI INFLGS,C'F' IS FILE FIXED? @V2A3765 00448000
  452. BNE FILENTF ERROR IF NOT @V2A3765 00449000
  453. MVI INFLGS+1,C' ' @V2A3765 00450000
  454. MVC INMODE,FSTM MOVE IN MODE @V2A3765 00451000
  455. MVC INBFSZ(4),FSTIL MOVE IN RECORD SIZE @V2A3765 00452000
  456. DROP R1 @V2A3765 00453000
  457. CLC INBFSZ+2(2),EIGHTY IS RECORD 80 BYTES? @V2A3765 00454000
  458. BNE FILENTF BRANCH IF NOT, ERROR @V2A3765 00455000
  459. LA R15,1 INDICATE 1 ITEM @V2A3765 00456000
  460. STH R15,INNUMR @V2A3765 00457000
  461. LA R15,CDBUF GET INPUT BUFFER @V2A3765 00458000
  462. ST R15,INBUF AND STORE IT @V2A3765 00459000
  463. FDEFEND EQU * @V2A3765 00460000
  464. BR R10 @V2A3765 00461000
  465. EJECT 00462000
  466. * 00463000
  467. * READ CONTROL RECORD FROM INPUT FILE 00464000
  468. * WRITE CONTROL RECORD TO OUTPUT (SYSPRINT) FILE 00465000
  469. * SCAN FIRST KEYWORD FROM CONTROL RECORD 00466000
  470. * 00467000
  471. READINP EQU * @V200809 00468000
  472. MVI LINESWT,X'00' CLEAR LINESWT @V2A3765 00469000
  473. BAL R10,RDCARD GO READ INPUT RECORD @V200809 00470000
  474. BAL R10,WRCARD GO WRITE INPUT RECORD TO SYSPRINT @V200809 00471000
  475. TM SWT,CONSOLE+PRINT INPUT AND NOPRINT? @V2A3765 00472000
  476. BNZ PREPINP BRANCH IF NOT @V2A3765 00473000
  477. BAL R10,PRTCARD GO PRINT CARD @V2A3765 00474000
  478. PREPINP EQU * @V2A3765 00475000
  479. MVI PRTBUF,SPCNTRL SET CARR. CONTROL TO SPACE @V2A3765 00476000
  480. MVI SCANSWT,KEYSCAN INDICATE KEYWORD SCAN @V2A3765 00477000
  481. LA R2,CDBUF POINT TO BUFFER @V2A3765 00478000
  482. LA R3,80 MAXIMUM CARD LENGTH @V2A3765 00479000
  483. BAL R10,SCANKEY1 GO SCAN FOR KEYWORD @V2A3765 00480000
  484. SPACE 1 00481000
  485. LA R10,READINP ERROR MSGS RETURN TO READINP @V2A3765 00482000
  486. TM SCANSWT,RETBLNKS CARD BLANK? @V2A3765 00483000
  487. BCR 1,R10 YES, READ NEXT CARD @V2A3765 00484000
  488. CKLEN EQU * @V200809 00485000
  489. CH R5,SIX LENGTH > 6 ? @V200809 00486000
  490. BH INVEREP YES, ERROR @V200809 00487000
  491. LR R6,R5 LENGTH IN R6 ALSO @V200809 00488000
  492. LA R15,TABNUM LOAD NUMBER OF ENTRIES @V2A3765 00489000
  493. LA R14,TABSTRT AND START OF TABLE @V2A3765 00490000
  494. TABLOOK EQU * @V2A3765 00491000
  495. EX R6,COMNAME COMPARE NAME TO TABLE @V2A3765 00492000
  496. BE NAMFOUND BRANCH IF MATCH @V2A3765 00493000
  497. LA R14,TABENT(,R14) GET NEXT ENTRY @V2A3765 00494000
  498. BCT R15,TABLOOK AND CHECK IT @V2A3765 00495000
  499. B INVEREP NO MORE ENTRIES, ERROR @V2A3765 00496000
  500. NAMFOUND EQU * @V2A3765 00497000
  501. L R10,TABADDR(,R14) GET ADDRESS OF ROUTINE @V2A3765 00498000
  502. BR R10 BRANCH TO ROUTINE @V2A3765 00499000
  503. SPACE 3 00500000
  504. COMNAME CLC 0(0,R14),0(R4) @V2A3765 00501000
  505. EJECT 00502000
  506. * 00503000
  507. * IF KEYWORD IS AN '*' GO READ THE NEXT CONTROL RECORD 00504000
  508. * 00505000
  509. CKAST EQU READINP @V2A3765 00506000
  510. EJECT @V60CE91 00507000
  511. * 00508000
  512. * LOG INFORMATION VERIFICATION ROUTINE 00509000
  513. * 00510000
  514. LOGNOTF TM OPSWT,NOGO ERROR CONDITION ? @V60CE91 00511000
  515. BOR R10 YES...SKIP MESSAGE @V60CE91 00512000
  516. STM R0,R15,AUXSAVE SAVE R10 @V60CE91 00513000
  517. OI SWT2,LOGNHIT+LOGHIT PROCESSING DUMMY LOG @V60CE91 00514000
  518. LA R2,CLOG CARD IN ERROR @VMI0082 00515000
  519. BAL R10,DUMMYLOG LOG MESSAGE @VA10327 00516000
  520. MVC HOLDLINE,CDBUF SAVE CURRENT CARD @VMI0082 00517000
  521. LOGNOTF1 MVC CDBUF(10),=CL10'NONAME' INDICATE DUMMY RECORD @VMI0082 00518000
  522. MVC CDBUF+10(L'CDBUF-10),CDBUF+9 BLANK OUT REC @V60CE91 00519000
  523. LA R1,AUXFSCB @VMI0082 00520000
  524. USING FSCBD,R1 SET UP DSECT @VMI0082 00521000
  525. MVC FSCBBUFF,=A(CDBUF) POINT AT DUMMY CARD @VMI0082 00522000
  526. B NOAUX PUT OUT DUMMY RECORD @V60CE91 00523000
  527. SPACE 2 00524000
  528. LOGRTN EQU * @V60CE91 00525000
  529. OI SWT2,LOGHIT LOG RECORD FOUND @V60CE91 00526000
  530. TM OPSWT,NOGO ERROR CONDITION ? @VMI0082 00527000
  531. BNO LOGRTN1 NO...OK @VMI0082 00528000
  532. LA R8,FLUSHMGL FLUSH CARD @VMI0082 00529000
  533. BAL R10,INVEREP2 PRINT MESSAGE @VMI0082 00530000
  534. B LOGDONE SKIP LOG PROCESSING @VMI0082 00531000
  535. LOGRTN1 TM OPSWT,NAMEHIT+REPOP NAME AND REP DONE? @VMI0082 00532000
  536. BNO LOGERR INDICATE ERROR @VMI0082 00533000
  537. SPACE 2 @VMI0082 00534000
  538. MVI SCANSWT,KEYSCAN INDICATE KEYWORD SCAN @VMI0082 00535000
  539. LTR R3,R3 ANY DATA LEFT @V60CE91 00536000
  540. BZ LOGERRC INDICATE ERROR @VMI0082 00537000
  541. BAL R10,SCANKEY1 GO SCAN FOR NEXT PARM @V60CE91 00538000
  542. TM SCANSWT,RETBLNKS ANY DATA ? @V60CE91 00539000
  543. BO LOGERRC NO, BAD CARD @VMI0082 00540000
  544. CL R5,=A(AUXNUML) PROPER FIX NUMBER ? @V60CE91 00541000
  545. BH LOGERRC NO...ERROR @VMI0082 00542000
  546. LA R1,WORKFSCB POINT AT FSCB @V60CE91 00543000
  547. ST R4,FSCBBUFF POINT PAST 'LOG' @V60CE91 00544000
  548. LTR R3,R3 ANY DATA LEFT @V60CE91 00545000
  549. BZ NOAUX IND NO FT SPECIFIED @V60CE91 00546000
  550. BAL R10,SCANKEY1 GO SCAN FOR NEXT PARM @V60CE91 00547000
  551. TM SCANSWT,RETBLNKS ANY DATA ? @V60CE91 00548000
  552. BO NOAUX IND NO FT SPECIFIED @V60CE91 00549000
  553. CH R5,EIGHT LENGTH GT 8 @V60CE91 00550000
  554. BH LOGERRC YES, TOO BAD @VMI0082 00551000
  555. LA R1,AUXFSCB @V60CE91 00552000
  556. MVC FSCBFT,BLANKS CLEAR OUT DEFAULT NAME @V60CE91 00553000
  557. BCTR R5,0 DECREMENT FOR MOVE @V60CE91 00554000
  558. EX R5,MOVEAUX MOVE IN AUX ID @V60CE91 00555000
  559. SPACE 1 00556000
  560. NOAUX LA R1,AUXFSCB @V60CE91 00557000
  561. MVC FSCBFN,MEMNAME MOVE IN FILENAME @V60CE91 00558000
  562. MVC FSCBFM(1),RDMODE ALSO, GET FILEMODE @VA10327 00558300
  563. MVC WORKFSCB+24(1),RDMODE SAME MODE FOR WORKFILE @VA10327 00558600
  564. MVC AUXFNFT,FSCBFN SAVE FN FT FOR RENAME @V60CE91 00559000
  565. FSERASE FSCB=WORKFSCB ERASE WORK FILE @V60CE91 00560000
  566. FSOPEN FSCB=WORKFSCB,ERROR=WRKOPEN GO OPEN WORK FILE @V60CE91 00561000
  567. SPACE 1 00562000
  568. AUXWRITE EQU * @V60CE91 00563000
  569. LA R1,DTTMBUF PREPARE TO READ CP CLOCK @VA11269 00563300
  570. DC X'8310000C' 'DIAGNOSE' TO READ CLOCK @VA11269 00563600
  571. LA R1,WORKFSCB @VMI0082 00564000
  572. L R4,FSCBBUFF POINT AT RECORD @VMI0082 00565000
  573. MVC AUXDATE(L'CURRDATE+L'CURRTIME,R4),DTTMBUF X00566000
  574. GET DATE AND TIME FOR LOG ENTRY @VA11269 00566100
  575. FSWRITE FSCB=WORKFSCB,ERROR=LOGERR GO WRITE DATA @V60CE91 00567000
  576. MVC FSCBBUFF,=A(CDBUF) @V60CE91 00568000
  577. FSOPEN FSCB=AUXFSCB,ERROR=LOGOPEN GO OPEN FILE @V60CE91 00569000
  578. SPACE 1 00570000
  579. LOGFILL EQU * @V60CE91 00571000
  580. FSREAD FSCB=AUXFSCB,ERROR=AUXRDER READ OLD DATA @V60CE91 00572000
  581. FSWRITE FSCB=WORKFSCB,ERROR=LOGERR GO WRITE DATA @V60CE91 00573000
  582. B LOGFILL GO WRITE RECORD @V60CE91 00574000
  583. SPACE 1 00575000
  584. AUXRDER EQU * @V60CE91 00576000
  585. CH R15,TWELVE END OF FILE ? @VMI0082 00577000
  586. BNE LOGERR INDICATE ERROR @V60CE91 00578000
  587. FSCLOSE FSCB=AUXFSCB,ERROR=LOGERR CLOSE OUTPUT FILE @V60CE91 00579000
  588. SPACE 1 00580000
  589. LOGWRITE EQU * @V60CE91 00581000
  590. FSCLOSE FSCB=WORKFSCB,ERROR=LOGERR CLOSE WORK FILE @V60CE91 00582000
  591. FSERASE FSCB=AUXFSCB @V60CE91 00583000
  592. SPACE 1 00584000
  593. LA R1,AUXFUNC GET ADDRESS OF FUNCTION @V60CE91 00585000
  594. SVC 202 @V60CE91 00586000
  595. DC AL4(LOGERR) @V60CE91 00587000
  596. LOGDONE LA R1,AUXFSCB @V60CE91 00588000
  597. MVC FSCBFT,=CL8'ZAPLOG' DEFAULT NAME @V60CE91 00589000
  598. TM SWT2,LOGNHIT DUMMY LOG ? @V60CE91 00590000
  599. BNO READINP NO...PROCEED @V60CE91 00591000
  600. NI SWT2,X'FF'-LOGNHIT TURN OFF SWITCH @V60CE91 00592000
  601. MVC CDBUF,HOLDLINE RETRIEVE RECORD @VMI0082 00593000
  602. LM R0,R15,AUXSAVE @V60CE91 00594000
  603. BR R10 RETURN TO ROUTINE @V60CE91 00595000
  604. SPACE 1 00596000
  605. WRKOPEN EQU * @V60CE91 00597000
  606. CH R15,AUXNOTF IS IT NOT FOUND ? @V60CE91 00598000
  607. BE AUXWRITE YES, GO WRITE FIRST RECORD @V60CE91 00599000
  608. B LOGERR INDICATE ERROR @V60CE91 00600000
  609. SPACE 1 00601000
  610. LOGOPEN EQU * @V60CE91 00602000
  611. CH R15,AUXNOTF IS IT NOT FOUND ? @V60CE91 00603000
  612. BE LOGWRITE YES, GO DO WRITE ANYWAY @V60CE91 00604000
  613. B LOGERR INDICATE ERROR @V60CE91 00605000
  614. SPACE 1 00606000
  615. LOGERR EQU * @V60CE91 00607000
  616. BAL R10,INVEREP GO PRINT MESSAGE @V60CE91 00608000
  617. B LOGDONE AND CHECK FOR MORE INPUT @V60CE91 00609000
  618. SPACE 1 00610000
  619. LOGERRC BAL R10,INVEREP GO PRINT MESSAGE @VMI0082 00611000
  620. B LOGNOTF1 CREATE DUMMY LINE @VMI0082 00612000
  621. SPACE 1 @VMI0082 00613000
  622. MOVEAUX MVC FSCBFT(*-*),0(R4) EXECUTED FROM ABOVE @V60CE91 00614000
  623. AUXSAVE DC 16F'00' SAVE AREA @V60CE91 00615000
  624. DROP R1 @V60CE91 00616000
  625. EJECT 1 00617000
  626. * 00618000
  627. * GET LOCATION OF DUMP AND PRINT IT 00619000
  628. * 00620000
  629. DUMPREC EQU * @VMI0082 00621000
  630. TM OPSWT,REPOP REP ALREADY PROCESSED? @VA10327 00622000
  631. BNO DUMPREC1 NO...OK @V60CE91 00623000
  632. TM SWT2,LOGHIT FOUND LOG TOO ? @V60CE91 00624000
  633. BO DUMPREC1 YES...OK @V60CE91 00625000
  634. BAL R10,LOGNOTF OTHERWISE WRITE DUMMY RECORD @VA10327 00626000
  635. DUMPREC1 NI SWT2,X'FF'-LOGHIT TURN OFF LOG SWITCH @V60CE91 00627000
  636. MVI OPSWT,DUMPHIT INDICATE DUMP FOUND @V2A3765 00628000
  637. MVI SCANSWT,KEYSCAN INDICATE KEYWORD SCAN @V2A3765 00629000
  638. MVI DUPSWT,X'00' CLEAR DUPSWT @V2A3765 00630000
  639. NI SWT,255-FSTCSECT REMOVE FIRST CSECT @V2A3765 00631000
  640. XC PACKADDS,PACKADDS CLEAR ADDRESS FIELDS @V2A3765 00632000
  641. XC PACKADDE,PACKADDE @V2A3765 00633000
  642. MVC MEMNAME,BLANKS AND CLEAR NAME FIELDS @V2A3765 00634000
  643. MVC CSECTNAM,BLANKS @V2A3765 00635000
  644. LTR R3,R3 END OF CARD? @V2A3765 00636000
  645. BZ DUMPERR BRANCH IF YES @V2A3765 00637000
  646. BAL R10,SCANKEY1 GO SCAN MEMBER NAME @V2A3765 00638000
  647. TM SCANSWT,RETBLNKS WAS REST OF CARD BLANK? @V2A3765 00639000
  648. BO DUMPERR @V2A3765 00640000
  649. CH R5,EIGHT LENGTH > 8? @V2A3765 00641000
  650. BH DUMPERR BRANCH IF YES, ERROR @V2A3765 00642000
  651. BCTR R5,0 @V2A3765 00643000
  652. EX R5,MVEMEM MOVE MEMBER NAME @V2A3765 00644000
  653. LTR R3,R3 END OF CARD @V2A3765 00645000
  654. BZ DMPFSCST BRANCH IF YES, DUMP FIRST @V2A3765 00646000
  655. BAL R10,SCANKEY1 GO SCAN CSECT NAME @V2A3765 00647000
  656. TM SCANSWT,RETBLNKS WAS REST OF CARD BLANK? @V2A3765 00648000
  657. BO DMPFSCST BRANCH IF YES, DUMP FIRST @V2A3765 00649000
  658. CH R5,EIGHT LENGTH > 8? @V2A3765 00650000
  659. BH DUMPERR BRANCH IF YES, ERROR @V2A3765 00651000
  660. CH R5,THREE IS IT 3 CHARACTERS? @V2A3765 00652000
  661. BNE DMPNTALL BRANCH IF NOT @V2A3765 00653000
  662. CLC 0(3,R4),=C'ALL' ALL CSECTS REQUESTED? @V2A3765 00654000
  663. BNE DMPNTALL BRANCH IF NOT @V2A3765 00655000
  664. OI SWT,ALLCSECT+FSTCSECT INDICATE YES @V2A3765 00656000
  665. B DMPCSECT BRANCH IF YES @V2A3765 00657000
  666. DMPNTALL EQU * @V2A3765 00658000
  667. BCTR R5,0 @V2A3765 00659000
  668. EX R5,MVECSECT MOVE CSECT NAME @V2A3765 00660000
  669. LTR R3,R3 END OF CARD? @V2A3765 00661000
  670. BZ DMPCSECT BRANCH IF YES, DUMP CSECT @V2A3765 00662000
  671. MVI SCANSWT,DISPSCAN INDICATE DISPLACEMENT SCAN @V2A3765 00663000
  672. BAL R10,SCANKEY1 GO SCAN START ADDRESS @V2A3765 00664000
  673. TM SCANSWT,RETBLNKS WAS REST OF CARD BLANK? @V2A3765 00665000
  674. BO DMPCSECT JUST DUMP CSECT @V2A3765 00666000
  675. OI DUPSWT,DUPSTRTA INDICATE START ADDRESS @V2A3765 00667000
  676. BAL R10,DECODE1 GO CHECK ADDRESS VALIDITY @V2A3765 00668000
  677. B DUMPEND BAD ADDRESS @V2A3765 00669000
  678. LA R7,ADDRSEND GET END OF ADDRESS FIELD @V2A3765 00670000
  679. LA R14,ADDRS AND ITS START @V2A3765 00671000
  680. LA R15,PACKADDS GET PACK ADDRESS @V2A3765 00672000
  681. BAL R10,PACKVAL GO PACK START ADDRESS @V2A3765 00673000
  682. LTR R3,R3 END OF CARD? @V2A3765 00674000
  683. BZ DMPCSECT BRANCH IF YES, DUMP TO END @V2A3765 00675000
  684. BAL R10,SCANKEY1 GO SCAN END ADDRESS @V2A3765 00676000
  685. TM SCANSWT,RETBLNKS WAS REST OF CARD BLANK? @V2A3765 00677000
  686. BO DMPCSECT BRANCH IF YES, DUMP CSECT @V2A3765 00678000
  687. OI DUPSWT,DUPENDA INDICATE END ADDRESS @V2A3765 00679000
  688. BAL R10,DECODE1 GO CHECK ADDRESS VALIDITY @V2A3765 00680000
  689. B DUMPEND BAD ADDRESS @V2A3765 00681000
  690. LA R7,ADDREEND GET END OF ADDRESS FIELD @V2A3765 00682000
  691. LA R14,ADDREND AND ITS START @V2A3765 00683000
  692. LA R15,PACKADDE GET PACK ADDRESS @V2A3765 00684000
  693. BAL R10,PACKVAL GO PACK END ADDRESS @V2A3765 00685000
  694. L R15,PACKADDE GET END ADDRESS @V2A3765 00686000
  695. LA R15,1(,R15) ADD ONE @V2A3765 00687000
  696. ST R15,PACKADDE AND STORE IT @V2A3765 00688000
  697. C R15,PACKADDS END LOWER THAN START? @V2A3765 00689000
  698. BL DUMPOVLP BRANCH IF YES @V2A3765 00690000
  699. B DMPCSECT @V2A3765 00691000
  700. DUMPERR EQU * @V2A3765 00692000
  701. BAL R10,INVEREP GO PRINT ERROR MESSAGE @V2A3765 00693000
  702. B DUMPEND @V2A3765 00694000
  703. DMPFSCST EQU * @V2A3765 00695000
  704. OI SWT,FSTCSECT INDICATE FIRST CSECT @V2A3765 00696000
  705. DMPCSECT EQU * @V2A3765 00697000
  706. BAL R10,PREOPLIB GO OPEN FILE @V2A3765 00698000
  707. TM LINESWT,FINCSECT CSECTS FINISHED? @V2A3765 00699000
  708. BO DUMPEND BRANCH IF YES @V2A3765 00700000
  709. TM OPSWT,NOGO FILE OPEN OK? @V2A3765 00701000
  710. BO DUMPEND BRANCH IF NOT @V2A3765 00702000
  711. L R15,PACKADDS GET START ADDRESS @V2A3765 00703000
  712. L R14,ESDADD GET CSECT START ADDRESS @V2A3765 00704000
  713. AR R15,R14 ADD STARTS @V2A3765 00705000
  714. TM SWT,ALLCSECT DUMP ALL CSECTS? @V2A3765 00706000
  715. BO STSTART BRANCH IF YES @V2A3765 00707000
  716. TM DUPSWT,DUPSTRTA WAS START ADDRESS SPECIFIED? @V2A3765 00708000
  717. BO CKCSTEND BRANCH IF YES @V2A3765 00709000
  718. STSTART EQU * @V2A3765 00710000
  719. LTR R14,R14 LOAD POINT GREATER THAN ORIGIN? @VA07429 00711000
  720. BM ADCSLEN YES, ADJUST END ADDRESS @VA07429 00712000
  721. ST R14,PACKADDS SAVE CSECT START @V2A3765 00713000
  722. ADCSLEN EQU * @VA07429 00714000
  723. A R14,ESDLEN ADD CSECT LENGTH @V2A3765 00715000
  724. B SETEND GO SET END ADDRESS @V2A3765 00716000
  725. CKCSTEND EQU * @V2A3765 00717000
  726. LTR R14,R14 LOADPOINT GREATER THAN ORIGIN? @VA07429 00718000
  727. BNM COMPEND NO, CHECK CSECT LENGTH @VA07429 00719000
  728. LTR R15,R15 STARTING BELOW LOAD POINT? @VA07429 00720000
  729. BM DUMPOVLP BRANCH IF LOW @VA07429 00721000
  730. COMPEND EQU * @VA07429 00723000
  731. CR R14,R15 IS START WITHIN CSECT? @V2A3765 00724000
  732. BH DUMPOVLP BRANCH IF NOT @V2A3765 00725000
  733. A R14,ESDLEN ADD CSECT LENGTH @V2A3765 00726000
  734. CR R14,R15 CHECK OTHER WAY @V2A3765 00727000
  735. BL DUMPOVLP BRANCH IF OVER @V2A3765 00728000
  736. ST R15,PACKADDS SAVE ADJUSTED START ADDRESS @VA10372 00728500
  737. SETEND EQU * @V2A3765 00729000
  738. TM SWT,ALLCSECT DUMP ALL CSECTS? @V2A3765 00730000
  739. BO SETEND1 BRANCH IF YES @V2A3765 00731000
  740. TM DUPSWT,DUPENDA WAS END ADDRESS SPECIFIED? @V2A3765 00732000
  741. BZ SETEND1 BRANCH IF NOT @V2A3765 00733000
  742. L R15,PACKADDE GET REQUESTED END @V2A3765 00741000
  743. A R15,ESDADD ADD CSECT START @V2A3765 00742000
  744. CR R14,R15 IS END WITHIN CSECT? @V2A3765 00744000
  745. BL DUMPOVLP BRANCH IF NOT @V2A3765 00745000
  746. ST R15,PACKADDE SAVE ADJUSTED END ADDRESS @VA10372 00745500
  747. B GORDTXT @V2A3765 00746000
  748. SETEND1 EQU * @V2A3765 00747000
  749. ST R14,PACKADDE SET END ADDRESS @V2A3765 00748000
  750. GORDTXT EQU * @V2A3765 00749000
  751. MVC PACKDISP(4),PACKADDS SET DISPLACEMENT @V2A3765 00750000
  752. BAL R10,RDTXT GO READ TEXT AND PRINT IT @V2A3765 00751000
  753. TM SWT,ALLCSECT ALL CSECTS? @V2A3765 00752000
  754. BZ DUMPEND BRANCH IF NOT @V2A3765 00753000
  755. B DMPCSECT @V2A3765 00754000
  756. DUMPOVLP EQU * @V2A3765 00755000
  757. LA R8,OVLPMSGL POINT TO ERROR MESSAGE @V2A3765 00756000
  758. BAL R10,INVEREP2 GO PRINT IT @V2A3765 00757000
  759. DUMPEND EQU * @V2A3765 00758000
  760. XC ENDMET,ENDMET CLEAR FIELD FOR DUMPS @VA07318 00759000
  761. NI OPSWT,255-DUMPHIT REMOVE DUMP INDICATOR @V2A3765 00760000
  762. NI SWT,255-ALLCSECT-FSTCSECT REMOVE SETTINGS @V2A3765 00761000
  763. B READINP @V2A3765 00762000
  764. EJECT 00763000
  765. * 00764000
  766. * DETERMAIN IF THIS IS A VER OR REP RECORD AND SCAN THE 00765000
  767. * REST OF THE RECORD. CHECK VALIDITY OF RECORD AND SAVE 00766000
  768. * THE NECESSARY DATA. 00767000
  769. * 00768000
  770. GOODTHRE EQU * @V200809 00769000
  771. TM OPSWT,NAMEHIT HAS A NAME RECORD BEEN FOUND?@V2A3765 00770000
  772. BZ NONAME BRANCH IF NOT @V2A3765 00771000
  773. TM OPSWT,REPOP REP ALREADY PROCESSED? @VA10327 00771100
  774. BNO GOODTHR1 NO @VA10327 00771200
  775. TM OPSWT,NOGO WAS ERROR ENCOUNTERED? @VA10327 00771300
  776. BO GOODTHR1 YES, BYPASS LOG @VA10327 00771400
  777. TM SWT2,LOGHIT WAS IT LOGGED? @VA10327 00771500
  778. BO GOODTHR1 YES @VA10327 00771600
  779. OI SWT2,REPNOLOG INDICATE UNLOGGED REP @VA10327 00771700
  780. GOODTHR1 EQU * @VA10327 00771800
  781. NI OPSWT,255-VEROP-REPOP TURN OFF VER AND REP @V200809 00772000
  782. OI OPSWT,VEROP INDICATE VERIFY OPERATION @V200809 00773000
  783. CLC 0(3,R4),VER IS THIS 'VER' OR 'REP' @V200809 00774000
  784. BE DOVER VERIFY @V200809 00775000
  785. XI OPSWT,VEROP+REPOP REP,TURN OFF VEROP , ON REPOP @V200809 00776000
  786. DOVER EQU * @V200809 00777000
  787. TM OPSWT,VEROP IS THIS VERIFY? @V2A3765 00778000
  788. BO GOOK BRANCH IF YES @V2A3765 00779000
  789. TM OPSWT,NOGO NOGO CONDITION? @V2A3765 00780000
  790. BZ GOOK BRANCH IF NOT @V2A3765 00781000
  791. NONAME EQU * @V2A3765 00782000
  792. LA R8,FLUSHMGL GET MESSAGE ADDRESS @V2A3765 00783000
  793. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 00784000
  794. B ENDVER @V2A3765 00785000
  795. GOOK EQU * @V2A3765 00786000
  796. LTR R3,R3 END OF CARD? @V2A3765 00787000
  797. BZ NODISP BRANCH IF YES @V2A3765 00788000
  798. MVI SCANSWT,DISPSCAN INDICATE DISPLACEMENT SCAN @V2A3765 00789000
  799. BAL R10,SCANKEY1 GO SCAN VER RECORD @V200809 00790000
  800. TM SCANSWT,RETBLNKS REST OF CARD BLANK? @V2A3765 00791000
  801. BZ DECODE BRANCH IF NOT @V2A3765 00792000
  802. NODISP EQU * @V2A3765 00793000
  803. BAL R10,INVEREP GO PRINT MESSAGE @V2A3765 00794000
  804. B ENDVER @V2A3765 00795000
  805. DECODE EQU * @V2A3765 00796000
  806. BAL R10,DECODE1 @V2A3765 00797000
  807. B ENDVER ERROR RETURN @V2A3765 00798000
  808. LA R14,DISP GET DISPLACEMENT ADDRESS @V2A3765 00799000
  809. LA R7,DISPEND @V200809 00800000
  810. LA R15,PACKDISP GET PACKED DISP. ADDRESS @V2A3765 00801000
  811. BAL R10,PACKVAL GO PACK DISPLACEMENT @V2A3765 00802000
  812. LTR R3,R3 END OF CARD? @V2A3765 00803000
  813. BZ NODATA BRANCH IF YES @V2A3765 00804000
  814. MVI SCANSWT,DATASCAN INDICATE DATA SCAN @V2A3765 00805000
  815. BAL R10,SCANKEY1 GO SCAN REST OF RECORD @V200809 00806000
  816. TM SCANSWT,RETBLNKS RECORD BLANK? @V2A3765 00807000
  817. BNO CKCOMMA1 BRANCH IF NOT @V2A3765 00808000
  818. NODATA EQU * @V2A3765 00809000
  819. BAL R10,INVEREP GO PRINT MESSAGE @V2A3765 00810000
  820. B ENDVER @V2A3765 00811000
  821. CKCOMMA1 EQU * @V200809 00812000
  822. CH R5,SEVNTHRE DATA LENGTH > 73? @V200809 00813000
  823. BNH LESS74 BRANCH IF NOT @V2A3765 00814000
  824. BAL R10,INVEREP GO PRINT MESSAGE @V2A3765 00815000
  825. B ENDVER @V2A3765 00816000
  826. LESS74 EQU * @V2A3765 00817000
  827. LA R6,DATA @V200809 00818000
  828. XC DATA(73),DATA CLEAR DATA FIELD @V200809 00819000
  829. CKCOMMA2 EQU * @V200809 00820000
  830. CLI 0(R4),COMMA IS THIS A COMMA? @V200809 00821000
  831. BE CKCOMMA3 YES @V200809 00822000
  832. MVC 0(1,R6),0(R4) MOVE DATA TO DATA SAVE AREA @V200809 00823000
  833. LA R6,1(R6) INCREMENT SAVE AREA ADDR @V200809 00824000
  834. CKCOMMA3 EQU * @V200809 00825000
  835. LA R4,1(R4) INCREMENT DATA ADDR @V200809 00826000
  836. BCT R5,CKCOMMA2 LOOP @V200809 00827000
  837. SPACE 1 00828000
  838. LA R4,DATA @V200809 00829000
  839. SR R6,R4 GET TRUE DATA LENGTH @V200809 00830000
  840. LR R5,R6 PUT IT INTO R5 TOO @V200809 00831000
  841. SRL R6,1 @V200809 00832000
  842. SLL R6,1 IS LENGTH AN EVEN NUMBER? @V200809 00833000
  843. CR R6,R5 IF NOT ERROR @V200809 00834000
  844. BE EQLNTH BRANCH IF EQUAL @V2A3765 00835000
  845. LA R8,ODDIGITL POINT TO MESSAGE @V2A3765 00836000
  846. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 00837000
  847. B ENDVER @V2A3765 00838000
  848. EQLNTH EQU * @V2A3765 00839000
  849. BAL R10,PACKDAT GET DATA PACKED @V2A3765 00840000
  850. LTR R4,R4 FIRST CSECT? @VA07429 00841000
  851. BP VALIDESD NO, VALIDATE ESD @VA07429 00842000
  852. LTR R7,R7 NON-ZERO BASE SPECIFIED? @VA07429 00843000
  853. BNZ BADBASE ERROR IF NON-ZERO @VA07429 00844000
  854. B ADDLEN VERIFY LENGTH @VA07429 00845000
  855. VALIDESD EQU * @VA07429 00846000
  856. SR R4,R7 ESD ADDR= ESD ADDR-BASE @V2A3765 00847000
  857. BM BADBASE BAD IF NEGATIVE @V2A3765 00848000
  858. CR R4,R6 VER DISP WITHIN CSECT? @V2A3765 00849000
  859. BH BADBASE BRANCH IF NOT @V2A3765 00850000
  860. ADDLEN EQU * @VA07429 00851000
  861. A R4,ESDLEN ADD CSECT LENGTH @V2A3765 00852000
  862. LA R5,1(,R5) RESTORE LENGTH @V2A3765 00853000
  863. SRL R5,1 DIVIDE BY 2 @V2A3765 00854000
  864. AR R6,R5 R6 = DISP + VER DATA LENGTH @V2A3765 00855000
  865. CR R4,R6 CHECK FOR OVERLAP OF CSECT @V2A3765 00856000
  866. BNL GOVER BRANCH IF NOT @V2A3765 00857000
  867. BADBASE EQU * @V2A3765 00858000
  868. LA R8,OVLPMSGL GET MESSAGE ADDRESS @V2A3765 00859000
  869. BAL R10,INVEREP2 AND PRINT ERROR @V2A3765 00860000
  870. B ENDVER @V2A3765 00861000
  871. GOVER EQU * @V2A3765 00862000
  872. BAL R10,FINDMEM REPOSITION TO FRONT @V2A3765 00863000
  873. BAL R10,RDTXT GO READ TEXT @V2A3765 00864000
  874. TM SWT2,REPNOLOG REP NOT YET LOGGED? @VA10327 00864250
  875. BNO ENDVER NO @VA10327 00864500
  876. OI OPSWT,REPOP YES, SET REP INDICATOR ON @VA10327 00864750
  877. ENDVER EQU * @V2A3765 00865000
  878. NI SWT2,X'FF'-REPNOLOG RESET INDICATOR @VA10327 00865500
  879. B READINP @V2A3765 00866000
  880. EJECT 1 00867000
  881. PACKDAT EQU * @V2A3765 00868000
  882. BCTR R5,0 @V200809 00869000
  883. EX R5,NORMDATA NORMALIZE DATA @V200809 00870000
  884. TR DATA(73),TRANTBL TRANSLATE DATA @V200809 00871000
  885. XC PACKDATA(37),PACKDATA CLEAR PACK DATA FIELD @V200809 00872000
  886. LA R7,PACKDAED @V200809 00873000
  887. SRL R6,1 DIVIDE BY TWO @V200809 00874000
  888. STC R6,DATALEN SAVE PACKED LENGTH @V200809 00875000
  889. SR R7,R6 @V200809 00876000
  890. PACK2 EQU * @V200809 00877000
  891. PACK 0(2,R7),0(3,R4) PACK VER DATA @V200809 00878000
  892. LA R7,1(R7) INCREMENT @V200809 00879000
  893. LA R4,2(R4) @V200809 00880000
  894. BCT R6,PACK2 LOOP @V200809 00881000
  895. SPACE 1 00882000
  896. L R4,ESDADD LOAD ESD ADDR. @VM08551 00883000
  897. L R6,PACKDISP AND DISP @VM08551 00884000
  898. L R7,PACKBASE AND BASE VALUE @VM08551 00885000
  899. TM OPSWT,BASEHIT IS THERE A BASE RECORD? @VM08551 00886000
  900. BO CALCBASE YES @VM08551 00887000
  901. AR R6,R4 NO, DISP=DISP+ESD ADDR. @VM08551 00888000
  902. SR R7,R7 REMOVE BASE @V2A3765 00889000
  903. ST R6,PACKDISP SAVE REAL DISP @VM08551 00890000
  904. B CALCESD @VM08551 00891000
  905. CALCBASE EQU * @VM08551 00892000
  906. TM SWT,ZAPM+ZAPFM IS THIS MODULE? @VM03228 00893000
  907. BZ LESSBASE BRANCH IF NOT @V2A3765 00894000
  908. TM SWT,ZAPFM PERCHANCE A FIXED MODULE ? @VM03228 00895000
  909. BO ADDBASE BRANCH IF YES @VM03228 00896000
  910. LA R15,DICTHDR POINT TO HEADER RECORD @V2A3765 00897000
  911. USING MDREC,R15 @V2A3765 00898000
  912. CLC MDLDRENT,=H'0' IS THERE A LOADER TABLE? @V2A3765 00899000
  913. BNE LESSBASE BRANCH IF YES @V2A3765 00900000
  914. DROP R15 @V2A3765 00901000
  915. ADDBASE AR R6,R7 DISP = DISP + BASE @VM03228 00902000
  916. ST R6,PACKDISP SAVE REAL DISPLACEMENT @V2A3765 00903000
  917. AR R4,R7 FOR SUBTRACT ON RETURN @V2A3765 00904000
  918. B CALCESD @V2A3765 00905000
  919. LESSBASE EQU * @V2A3765 00906000
  920. SR R6,R7 DISP=DISP-BASE @V2A3765 00907000
  921. CALCESD EQU * @V2A3765 00908000
  922. BR R10 @V2A3765 00909000
  923. SPACE 3 00910000
  924. NORMDATA NC DATA(1),NORMCON @V200809 00911000
  925. EJECT 1 00912000
  926. * 00913000
  927. * PACK SUBMITTED ADDRESSES 00914000
  928. * 00915000
  929. PACKVAL EQU * @V2A3765 00916000
  930. XC 0(6,R14),0(R14) CLEAR NORMALIZED FIELD @V2A3765 00917000
  931. SR R7,R6 GET BEGINNING @V2A3765 00918000
  932. EX R5,DISPMOVE MOVE IN ADDRESS @V2A3765 00919000
  933. EX R5,NORMDISP NORMALIZE IT @V2A3765 00920000
  934. TR 0(6,R14),TRANTBL TRANSLATE @V2A3765 00921000
  935. XC 0(3,R15),0(R15) CLEAR PACK FIELD @V2A3765 00922000
  936. PACK 1(4,R15),0(7,R14) PACK ADDRESS @V2A3765 00923000
  937. BR R10 @V2A3765 00924000
  938. SPACE 3 00925000
  939. DISPMOVE MVC 0(1,R7),0(R4) @V2A3765 00926000
  940. NORMDISP NC 0(1,R7),NORMCON @V2A3765 00927000
  941. EJECT 00928000
  942. * 00929000
  943. * FOR NAME RECORD SCAN RECORD FOR MEMBER-NAME AND CSECT-NAME 00930000
  944. * 00931000
  945. NAMEREC EQU * @V2A3765 00932000
  946. TM OPSWT,REPOP REP ALREADY PROCESSED? @VA10327 00933000
  947. BNO NAMEREC1 NO...OK @V60CE91 00934000
  948. TM SWT2,LOGHIT FOUND LOG TOO ? @V60CE91 00935000
  949. BO NAMEREC1 YES...OK @V60CE91 00936000
  950. BAL R10,LOGNOTF OTHERWISE WRITE DUMMY RECORD @VA10327 00937000
  951. NAMEREC1 NI SWT2,X'FF'-LOGHIT TURN OFF LOG SWITCH @V60CE91 00938000
  952. MVI OPSWT,NAMEHIT INDICATE NAME FOUND @V2A3765 00939000
  953. XC PACKBASE(4),PACKBASE ZERO PACK BASE FIELD @V2A3765 00940000
  954. XC ESDADD(8),ESDADD AND ESD FIELD @V2A3765 00941000
  955. NI SWT,255-FSTCSECT MAKE SURE FSTCSECT SWT OFF @V200809 00942000
  956. MVC MEMNAME(8),BLANKS BLANK OUT @V200809 00943000
  957. MVC CSECTNAM(8),BLANKS @V200809 00944000
  958. LTR R3,R3 END OF CARD? @V2A3765 00945000
  959. BZ NOMEM BRANCH IF YES @V2A3765 00946000
  960. MVI SCANSWT,KEYSCAN FOR KEYWORD SCAN @V2A3765 00947000
  961. BAL R10,SCANKEY1 GO SCAN MEMBER NAME @V200809 00948000
  962. TM SCANSWT,RETBLNKS YES, REST OF CARD BLANK? @V2A3765 00949000
  963. BNO CKLEN2 NO, CONTINUE @V2A3765 00950000
  964. NOMEM EQU * @V2A3765 00951000
  965. BAL R10,INVEREP YES, ERROR @V2A3765 00952000
  966. B ENDNAME @V2A3765 00953000
  967. SPACE 1 00954000
  968. CKLEN2 EQU * @V200809 00955000
  969. CH R5,EIGHT LENGTH > 8 ? @V200809 00956000
  970. BNH CKLEN21 BRANCH IF NOT @V2A3765 00957000
  971. BAL R10,INVEREP > 8 IS ERROR @V2A3765 00958000
  972. B ENDNAME @V2A3765 00959000
  973. CKLEN21 EQU * @V2A3765 00960000
  974. BCTR R5,0 DECREMENT LENGTH BY 1 @V200809 00961000
  975. EX R5,MVEMEM MOVE MEMBER NAME @V200809 00962000
  976. LTR R3,R3 END OF CARD? @V2A3765 00963000
  977. BZ NOCSECT BRANCH IF YES @V2A3765 00964000
  978. BAL R10,SCANKEY1 GO SCAN CSECT NAME @V200809 00965000
  979. TM SCANSWT,RETBLNKS YES, REST OF CARD BLANK? @V2A3765 00966000
  980. BO NOCSECT YES, WILL USE MEMBER NAME @V200809 00967000
  981. CKLEN3 EQU * @V200809 00968000
  982. CH R5,EIGHT LENGTH > 8 ? @V200809 00969000
  983. BNH CKLEN4 BRANCH IF NOT @V2A3765 00970000
  984. BAL R10,INVEREP > 8 IS ERROR @V2A3765 00971000
  985. B ENDNAME @V2A3765 00972000
  986. CKLEN4 EQU * @V2A3765 00973000
  987. BCTR R5,0 DECREMENT @V200809 00974000
  988. EX R5,MVECSECT MOVE CSECT NAME @V200809 00975000
  989. B NOCSECT1 @V2A3765 00976000
  990. NOCSECT EQU * @V200809 00977000
  991. OI SWT,FSTCSECT INDICATE FIRST CSECT FOUND @V200809 00978000
  992. NOCSECT1 EQU * @V2A3765 00979000
  993. BAL R10,PREOPLIB GET READY TO OPEN SYSLIB @V2A3765 00980000
  994. ENDNAME EQU * @V2A3765 00981000
  995. TM OPSWT,NOGO NOGO SWITCH SET? @V2A3765 00982000
  996. BZ ENDNAME1 BRANCH IF NOT @V2A3765 00983000
  997. NI OPSWT,X'FF'-NAMEHIT REMOVE NAME INDICATOR @V2A3765 00984000
  998. ENDNAME1 EQU * @V2A3765 00985000
  999. B READINP @V2A3765 00986000
  1000. SPACE 3 00987000
  1001. MVEMEM MVC MEMNAME(1),0(R4) @V2A3765 00988000
  1002. MVECSECT MVC CSECTNAM(1),0(R4) @V2A3765 00989000
  1003. EJECT 1 00990000
  1004. * 00991000
  1005. * FOR BASE RECORD SCAN FOR DISPLACEMENT 00992000
  1006. * 00993000
  1007. BASEREC EQU * @V2A3765 00994000
  1008. TM OPSWT,NAMEHIT HAS NAME RECORD BEEN FOUND? @V2A3765 00995000
  1009. BO SETBASE BRANCH IF YES @V2A3765 00996000
  1010. BAL R10,INVEREP GO PRINT MESSAGE @V2A3765 00997000
  1011. B ENDBASER @V2A3765 00998000
  1012. SETBASE EQU * @V2A3765 00999000
  1013. XC BASEVAL(6),BASEVAL ZERO BASE VALUE @V2A3765 01000000
  1014. LTR R3,R3 END OF CARD? @V2A3765 01001000
  1015. BZ NOBASE BRANCH IF YES @V2A3765 01002000
  1016. MVI SCANSWT,DISPSCAN INDICATE DISPLACEMENT SCAN @V2A3765 01003000
  1017. BAL R10,SCANKEY1 GO SCAN DISPLACEMENT @V2A3765 01004000
  1018. TM SCANSWT,RETBLNKS REST OF CARD BLANK? @V2A3765 01005000
  1019. BZ CKBASE BRANCH IF NOT @V2A3765 01006000
  1020. NOBASE EQU * @V2A3765 01007000
  1021. BAL R10,INVEREP YES, PRINT ERROR MESSAGE @V2A3765 01008000
  1022. B ENDBASER @V2A3765 01009000
  1023. * 01010000
  1024. * PACK BASE VALUE 01011000
  1025. * 01012000
  1026. CKBASE EQU * @VM08551 01013000
  1027. BAL R10,DECODE1 GO TO COMMON CODE @VM08551 01014000
  1028. B ENDBASER ERROR RETURN @V2A3765 01015000
  1029. LA R7,BASEVEND GET END OF BASE FIELD @VM08551 01016000
  1030. LA R14,BASEVAL SET UP REGISTERS @V2A3765 01017000
  1031. LA R15,PACKBASE @V2A3765 01018000
  1032. BAL R10,PACKVAL AND PACK THEM @V2A3765 01019000
  1033. L R4,ESDADD @VM03203 01020000
  1034. TM SWT,ZAPM+ZAPFM IS THIS MODULE? @VM03228 01021000
  1035. BZ CKBASE1 BRANCH IF NOT @VM03203 01022000
  1036. TM SWT,ZAPFM PERCHANCE A FIXED MODULE ? @VM03228 01023000
  1037. BO ENDBASE BRANCH IF YES @VM03228 01024000
  1038. LTR R4,R4 WAS LOADER TABLE PRESENT? @VM03203 01025000
  1039. BZ ENDBASE BRANCH IF NOT @VM03203 01026000
  1040. CKBASE1 EQU * @VM03203 01027000
  1041. L R6,PACKBASE @VM08551 01028000
  1042. CR R4,R6 BASE AND ESD ADDR EQUAL? @VM08551 01029000
  1043. BE ENDBASE BRANCH IF YES @V2A3765 01030000
  1044. LA R8,INVBAMGL GET MESSAGE ADDRESS @V2A3765 01031000
  1045. BAL R10,INVEREP2 AND PRINT ERROR @V2A3765 01032000
  1046. B ENDBASER @V2A3765 01033000
  1047. ENDBASE EQU * @V2A3765 01034000
  1048. OI OPSWT,BASEHIT INDICATE BASE HIT @V2A3765 01035000
  1049. ENDBASER EQU * @V2A3765 01036000
  1050. B READINP @V2A3765 01037000
  1051. EJECT 1 01038000
  1052. DECODE1 EQU * @V2A3765 01039000
  1053. CH R5,SIX DISP. FIELD > 6? @V2A3765 01040000
  1054. BNH DECODE2 BRANCH IF NOT @V2A3765 01041000
  1055. LR R6,R10 SAVE RETURN ADDRESS @V2A3765 01042000
  1056. BAL R10,INVEREP GO PRINT ERROR @V2A3765 01043000
  1057. LR R10,R6 SET ERROR RETURN @V2A3765 01044000
  1058. B DECODEND @V2A3765 01045000
  1059. DECODE2 EQU * @V2A3765 01046000
  1060. LR R6,R5 LENGTH IN R6 ALSO @V2A3765 01047000
  1061. SRL R6,1 @V2A3765 01048000
  1062. SLL R6,1 IS LENGTH EVEN NUMBER? @V2A3765 01049000
  1063. CR R6,R5 IF NOT, ERROR @V2A3765 01050000
  1064. BE DECODE3 BRANCH IF EVEN @V2A3765 01051000
  1065. LR R6,R10 @V2A3765 01052000
  1066. LA R8,ODDIGITL GET MESSAGE ADDRESS @V2A3765 01053000
  1067. BAL R10,INVEREP2 GO PRINT ERROR @V2A3765 01054000
  1068. LR R10,R6 SET ERROR RETURN @V2A3765 01055000
  1069. B DECODEND @V2A3765 01056000
  1070. DECODE3 EQU * @V2A3765 01057000
  1071. BCTR R5,0 DECREMENT R5 @V2A3765 01058000
  1072. LA R10,4(,R10) INDICATE GOOD RETURN @V2A3765 01059000
  1073. DECODEND EQU * @V2A3765 01060000
  1074. BR R10 @V2A3765 01061000
  1075. EJECT 01062000
  1076. * 01063000
  1077. * OPEN ZAP FILES AND LOOK FOR 'NAME' IF GIVEN 01064000
  1078. * 01065000
  1079. PREOPLIB EQU * @V200809 01066000
  1080. ST R10,PREOPSV SAVE RETURN REGISTER @V2A3765 01067000
  1081. NI ECSWT,255-ENDCD RESET END CARD INDICATOR @VA04591 01068000
  1082. BAL R10,CLOSELIB INSURE THAT SYSLIB IS CLOSED @V2A3765 01069000
  1083. MVI LIBSWT,INITLIB INITIALIZE LIBRARY SWITCH @V2A3765 01070000
  1084. TM SWT,ZAPM+ZAPFM IS THIS MODULE? @VM03228 01071000
  1085. BZ PREOPLB1 BRANCH IF NOT @V2A3765 01072000
  1086. BAL R10,CLRSPCE REMOVE BUFFER SPACE @V2A3765 01073000
  1087. LA R6,MEMNAME POINT TO FILENAME @V2A3765 01074000
  1088. B PREOPLB2 @V2A3765 01075000
  1089. PREOPLB1 EQU * @V2A3765 01076000
  1090. LA R5,LIBNAME1 GET FIRST LIB NAME ADDR @V200809 01077000
  1091. L R6,0(,R5) @V200809 01078000
  1092. PREOPLB2 EQU * @V2A3765 01079000
  1093. BAL R10,STFDEF GO DO STATE AND FILEDEF @V200809 01080000
  1094. B OPENFILE @V2A3765 01081000
  1095. SPACE 1 01082000
  1096. * IF STATE IS UNSUCCESSFUL, CONTROL WILL 01083000
  1097. * RETURN HERE TO CHECK NEXT LIBRARY NAME 01084000
  1098. SPACE 1 01085000
  1099. PREOPLB3 EQU * @V200809 01086000
  1100. LA R5,4(R5) GET NEXT LIBRARY NAME ADDR. @V200809 01087000
  1101. L R6,0(,R5) GET LIB NAME POINTER @V200809 01088000
  1102. LTR R6,R6 IS THERE ONE? @V200809 01089000
  1103. BNZ PREOPLB5 BRANCH IF YES @V2A3765 01090000
  1104. TM SWT,ZAPM+ZAPFM IS THIS MODULE? @VM03228 01091000
  1105. BNZ PREOPLB5 BRANCH IF YES @VM03228 01092000
  1106. PRE3 TM OPSWT,FILEFND IS THIS A MODULE? @VA03406 01093000
  1107. BO MEMNTFND BRANCH IF YES @V2A3765 01094000
  1108. LA R8,STNAME GET FILE NAME @V2A3765 01095000
  1109. LA R7,STNAME+8 GET FILE TYPE @V2A3765 01096000
  1110. BAL R10,LIBNTFD1 GO PRINT MESSAGE @V2A3765 01097000
  1111. BAL R10,CLOSINP CLOSE INPUT FILE @V2A3765 01098000
  1112. B NOMORE @V2A3765 01099000
  1113. PREOPLB5 EQU * @V2A3765 01100000
  1114. LA R8,LIBNTFDL POINT TO ERROR MESSAGE @V2A3765 01101000
  1115. MVC LIBNTFDN,STNAME MOVE IN FILE NAME @V2A3765 01102000
  1116. MVC LIBNTFDT,STNAME+8 MOVE IN FILETYPE @V2A3765 01103000
  1117. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 01104000
  1118. PRE5 NI OPSWT,255-NOGO REMOVE NOGO SWITCH @VA03406 01105000
  1119. TM SWT,ZAPM+ZAPFM IS THIS MODULE? @VM03228 01106000
  1120. BNZ MEMERR BRANCH IF YES @VM03228 01107000
  1121. SR R7,R7 CLEAR REGISTER @V2A3765 01108000
  1122. IC R7,LIBSWT SHIFT LIBRARY SWITCH @V2A3765 01109000
  1123. STC R7,LIBSWT SAVE IT @V200809 01110000
  1124. B PREOPLB2 GO CHECK NEXT LIBRARY @V200809 01111000
  1125. OPENFILE EQU * @V2A3765 01112000
  1126. OI OPSWT,FILEFND INDICATE FILE FOUND @V2A3765 01113000
  1127. BAL R10,PREOPLB4 OPEN LIBRARY @V2A3765 01114000
  1128. TM OPSWT,NOGO WAS NOGO SWITCH SET? @V2A3765 01115000
  1129. BO MEMEND BRANCH IF YES @V2A3765 01116000
  1130. LTR R15,R15 WAS MEMBER FOUND? @V2A3765 01117000
  1131. BZ MEMFND BRANCH IF YES @V2A3765 01118000
  1132. BAL R10,CLOSELIB NO, CLOSE LIBRARY @V2A3765 01119000
  1133. TM SWT,ZAPM+ZAPFM ZAPPING MODULE FILE? @VM03228 01120000
  1134. BZ CHLIBCT BRANCH IF NOT @V2A3765 01121000
  1135. LA R8,CSTNTFDL POINT TO MESSAGE @V2A3765 01122000
  1136. MVC CSTNTFTY(8),RDTYPE INSERT FILE TYPE @V2A3765 01123000
  1137. MVC CSTNTFDM(8),RDNAME INSERT FILE NAME @V2A3765 01124000
  1138. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 01125000
  1139. B MEMEND @V2A3765 01126000
  1140. CHLIBCT EQU * @V2A3765 01127000
  1141. TM LIBSWT,MAXLIB @VM03203 01128000
  1142. BO MEMNTFND BRANCH IF SO @VM03203 01129000
  1143. LA R5,4(,R5) POINT TO NEXT LIBRARY @VM03203 01130000
  1144. L R6,0(,R5) LOAD ITS ADDRESS @VM03203 01131000
  1145. LTR R6,R6 IS THERE ANOTHER? @VM03203 01132000
  1146. BZ PRE3 NO @VM03203 01133000
  1147. B PRE5 SET UP TO GET NEXT LIBRARY @VM03203 01134000
  1148. MEMNTFND EQU * @VM03203 01135000
  1149. LA R8,MEMNTFDL POINT TO MESSAGE @V2A3765 01136000
  1150. MVC MEMNTFDM(8),MEMNAME INSERT MEMBER NAME @V2A3765 01137000
  1151. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 01138000
  1152. B MEMEND @V2A3765 01139000
  1153. MEMFND EQU * @V2A3765 01140000
  1154. TM SWT2,MULTLIB MORE THAN ONE LIBRARY? @VM03228 01141000
  1155. BNO MEMFND2 NO, DON'T WRITE MESSAGE @V2A3765 01142000
  1156. MVC CSTFDMGT(8),0(R6) SET MSG LIBRARY NAME @V2A3765 01143000
  1157. LA R8,CSTFDMGL @V2A3765 01144000
  1158. BAL R10,INVEREP4 PRINT THE MESSAGE @V2A3765 01145000
  1159. NI OPSWT,255-NOGO CLEAR NOGO SWITCH @V2A3765 01146000
  1160. MEMFND2 EQU * @V2A3765 01147000
  1161. TM SWT,ZAPM+ZAPFM MODULE? @VM03228 01148000
  1162. BNZ MEMEND BRANCH IF YES @VM03228 01149000
  1163. B READCESD AND READ CESD @V2A3765 01150000
  1164. MEMERR EQU * @V2A3765 01151000
  1165. MVI ERCODE,ERR04 SET ERROR CODE @V2A3765 01152000
  1166. MVI OPSWT,NOGO NOGO SWITCH SET @V2A3765 01153000
  1167. MEMEND EQU * @V2A3765 01154000
  1168. L R10,PREOPSV GET RETURN REGISTER @V2A3765 01155000
  1169. BR R10 @V2A3765 01156000
  1170. SPACE 3 01157000
  1171. PREOPSV DS F @V2A3765 01158000
  1172. EJECT 1 01159000
  1173. PREOPLB4 EQU * @V200809 01160000
  1174. * 01161000
  1175. * READ ZAP FILE AND LOCATE MEMBER ( CSECT FOR MODULE 01162000
  1176. * IF NAME GIVEN ) 01163000
  1177. * 01164000
  1178. ST R10,PREOPLBS SAVE RETURN REGISTER @V2A3765 01165000
  1179. TM SWT,ZAPM+ZAPFM+ZAPT IS THIS LOADLIB? @VM03228 01166000
  1180. BNZ READDICT BRANCH IF NOT @V2A3765 01167000
  1181. LA R1,LIBRCD GET BUFFER ADDRESS @V2A3765 01168000
  1182. ST R1,RECBUF STORE IN PLIST @V2A3765 01169000
  1183. LA R1,LIBLEN GET BUFFER LENGTH @V2A3765 01170000
  1184. ST R1,BUFSIZE ALSO IN PLIST @V2A3765 01171000
  1185. B READLIB @V2A3765 01172000
  1186. READDICT TM SWT,ZAPFM PERCHANCE A FIXED MODULE ? @VM03238 01173000
  1187. BO SRCHLDRT BR. IF YES - SKIP THE READ @VM03238 01174000
  1188. LA R1,DICTLEN LENGTH OF FIRST RECORD @V2A3765 01175000
  1189. ST R1,BUFSIZE PUT IN PLIST @V2A3765 01176000
  1190. LA R1,DICTHDR BUFFER ADDRESS @V2A3765 01177000
  1191. ST R1,RECBUF ALSO IN PLIST @V2A3765 01178000
  1192. READLIB EQU * @V2A3765 01179000
  1193. LA R1,RDBUF READ FIRST RECORD @V2A3765 01180000
  1194. SVC 202 @V2A3765 01181000
  1195. DC AL4(RDLIBERR) @V2A3765 01182000
  1196. TM SWT,ZAPM MODULE FILE? @V2A3765 01183000
  1197. BZ FINDDICT BRANCH IF NOT @V2A3765 01184000
  1198. SRCHLDRT BAL R10,CHKLDTBL GO SEARCH LOADER TABLES (IF ANY) @VM03238 01185000
  1199. B ERRFIND CHKLDTBL SETS ERROR CODE @V2A3765 01186000
  1200. FINDDICT EQU * @V2A3765 01187000
  1201. TM SWT,ZAPT IS THIS TXTLIB? @V2A3765 01188000
  1202. BO FNDTXTDC BRANCH IF YES @V2A3765 01189000
  1203. CLC LIBRCD(6),=CL6'DMSLIB' IS THIS LIBRARY? @V2A3765 01190000
  1204. BNE INVFORM BRANCH IF NOT @V2A3765 01191000
  1205. LH R4,LIBRCD+6 GET RECORD NUMBER @V2A3765 01192000
  1206. L R10,STATFST GET FST ADDRESS @V2A3765 01193000
  1207. USING FSTSECT,R10 @V2A3765 01194000
  1208. CLC FSTIC,LIBRCD+6 EXCEED RECORD COUNT? @V2A3765 01195000
  1209. BL INVFORM BRANCH IF YES @V2A3765 01196000
  1210. DROP R10 @V2A3765 01197000
  1211. STH R4,RECNUM STORE IN PLIST @V2A3765 01198000
  1212. SR R2,R2 @V2A3765 01199000
  1213. L R3,LIBRCD+8 GET TOTAL RECORD SIZE @V2A3765 01200000
  1214. LH R1,LIBRCD+12 GET 1 RECORD SIZE @V2A3765 01201000
  1215. DR R2,R1 GET NUMBER OF RECORDS @V2A3765 01202000
  1216. LR R2,R3 @V2A3765 01203000
  1217. SR R8,R8 @V2A3765 01204000
  1218. B RECLOOP @V2A3765 01205000
  1219. FNDTXTDC EQU * @V2A3765 01206000
  1220. CLC DICTID,=CL6'DMSLIB' IS THIS LIBRARY? @V2A3765 01207000
  1221. BNE INVFORM BRANCH IF NOT @V2A3765 01208000
  1222. LH R4,DICTSTRT GET RECORD NUMBER @V2A3765 01209000
  1223. L R10,STATFST GET FST ADDRESS @V2A3765 01210000
  1224. USING FSTSECT,R10 @V2A3765 01211000
  1225. CLC FSTIC,DICTSTRT EXCEED RECORD COUNT? @V2A3765 01212000
  1226. BL INVFORM BRANCH IF YES @V2A3765 01213000
  1227. DROP R10 @V2A3765 01214000
  1228. STH R4,RECNUM AND STORE IT @V2A3765 01215000
  1229. LA R1,LIBRCD BUFFER ADDRESS @V2A3765 01216000
  1230. ST R1,RECBUF ALSO IN PLIST @V2A3765 01217000
  1231. L R2,DICTNO GET NUMBER OF DICT. RECORDS @V2A3765 01218000
  1232. SR R8,R8 @V2A3765 01219000
  1233. RECLOOP EQU * @V2A3765 01220000
  1234. TM SWT,ZAPT IS THIS TEXTLIB? @V2A3765 01221000
  1235. BZ LDLIBN BRANCH IF NOT @V2A3765 01222000
  1236. LA R3,DICTNUM GET NUMBER OF ENTRIES/RECORD @V2A3765 01223000
  1237. B RDDICT @V2A3765 01224000
  1238. LDLIBN EQU * @V2A3765 01225000
  1239. LA R3,21 NUMBER OF LOADLIB ENTRIES @V2A3765 01226000
  1240. RDDICT EQU * @V2A3765 01227000
  1241. LA R1,RDBUF READ DICTIONARY RECORD @V2A3765 01228000
  1242. SVC 202 @V2A3765 01229000
  1243. DC AL4(RDLIBERR) @V2A3765 01230000
  1244. LA R1,LIBRCD POINT TO RECORD @V2A3765 01231000
  1245. ENTLOOP EQU * @V2A3765 01232000
  1246. BAL R10,CHKMEM CHECK MEMBER NAME @V2A3765 01233000
  1247. LTR R15,R15 WAS MEMBER FOUND? @V2A3765 01234000
  1248. BZ LOCMEM BRANCH IF YES @V2A3765 01235000
  1249. LA R1,DICTENTL(,R1) POINT TO NEXT ENTRY @V2A3765 01236000
  1250. BCT R3,ENTLOOP LOOK AT NEXT ENTRY @V2A3765 01237000
  1251. LA R4,1(,R4) INCREMENT RECORD NO. @V2A3765 01238000
  1252. STH R4,RECNUM AND STORE IT @V2A3765 01239000
  1253. BCT R2,RECLOOP LOOK AT NEXT RECORD @V2A3765 01240000
  1254. LTR R8,R8 WAS CSECT FOUND? @V2A3765 01241000
  1255. BNZ LOCMEM BRANCH IF YES @V2A3765 01242000
  1256. LA R15,4 INDICATE MEMBER NOT FOUND @V2A3765 01243000
  1257. B ERRFIND @V2A3765 01244000
  1258. LOCMEM EQU * @V2A3765 01245000
  1259. STH R8,RECNUM STORE RECORD NUMBER @V2A3765 01246000
  1260. STH R8,LIBREC AND SAVE IT @V2A3765 01247000
  1261. ENDFIND EQU * @V2A3765 01248000
  1262. SR R15,R15 INDICATE NO ERROR @V2A3765 01249000
  1263. ERRFIND EQU * @V2A3765 01250000
  1264. L R10,PREOPLBS GET RETURN REGISTER @V2A3765 01251000
  1265. BR R10 @V2A3765 01252000
  1266. SPACE 3 01253000
  1267. PREOPLBS DS F @V2A3765 01254000
  1268. EJECT 1 01255000
  1269. * 01256000
  1270. * LOCATE CSECT FOR MODULE IF NAME GIVEN 01257000
  1271. * 01258000
  1272. USING MDREC,R1 @V2A3765 01259000
  1273. CHKLDTBL EQU * @V2A3765 01260000
  1274. ST R10,LDTBLSV SAVE RETURN REGISTER @V2A3765 01261000
  1275. LA R1,DICTHDR POINT TO RECORD @V2A3765 01262000
  1276. SR R15,R15 CLEAR REGISTER @V2A3765 01263000
  1277. L R3,MDLAST GET MODULE END @V2A3765 01264000
  1278. S R3,MDFIRST SUBTRACT BEGINNING @V2A3765 01265000
  1279. ST R3,MODLEN AND SAVE LENGTH OF MODULE @V2A3765 01266000
  1280. CLC MDLDRENT,=H'0' IS THERE A LOADER TABLE? @V2A3765 01267000
  1281. BNE CHKLDCST BRANCH IF YES @V2A3765 01268000
  1282. STH R15,RECNUM CLEAR RECORD NUMBER @V2A3765 01269000
  1283. TM SWT,FSTCSECT WAS NAME SPECIFIED? @V2A3765 01270000
  1284. BZ NOTABLE BRANCH IF YES @V2A3765 01271000
  1285. NI SWT,X'FF'-ALLCSECT REMOVE 'ALL' INDICATOR @V2A3765 01272000
  1286. B CHKLDERR @V2A3765 01273000
  1287. NOTABLE EQU * @V2A3765 01274000
  1288. LA R8,NOLDRTBL POINT TO ERROR MESSAGE @V2A3765 01275000
  1289. MVC NOLDRTBM,RDNAME MOVE IN NAME @V2A3765 01276000
  1290. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 01277000
  1291. B CHKLDERR @V2A3765 01278000
  1292. CHKLDCST EQU * @V2A3765 01279000
  1293. SR R2,R2 CLEAR EVEN REGISTER @V2A3765 01280000
  1294. L R15,MODMAX LOAD MAX. RECORD SIZE @V2A3765 01281000
  1295. DR R2,R15 DETERMINE NUMBER OF RECORDS @V2A3765 01282000
  1296. LTR R2,R2 ANY REMAINDER? @V2A3765 01283000
  1297. BZ NOREM BRANCH IF NOT @V2A3765 01284000
  1298. LA R3,1(,R3) INCREMENT @V2A3765 01285000
  1299. NOREM EQU * @V2A3765 01286000
  1300. LA R3,1(,R3) ADD ONE @V2A3765 01287000
  1301. AH R3,RECNUM @V2A3765 01288000
  1302. L R10,STATFST GET FST ADDRESS @V2A3765 01289000
  1303. USING FSTSECT,R10 @V2A3765 01290000
  1304. CH R3,FSTIC EQUAL RECORD COUNT? @V2A3765 01291000
  1305. BNE INVFORM BRANCH IF NOT @V2A3765 01292000
  1306. DROP R10 @V2A3765 01293000
  1307. STH R3,RECNUM POINT TO LOADER TABLE @V2A3765 01294000
  1308. LA R3,LDRLNTH GET SIZE OF LOADER ENTRY @V2A3765 01295000
  1309. MH R3,MDLDRENT TIMES NUMBER OF ENTRIES @V2A3765 01296000
  1310. ST R3,BUFSIZE SAVE BUFFERSIZE @V2A3765 01297000
  1311. SRL R3,3 DIVIDE BY 8 @V2A3765 01298000
  1312. LA R3,1(,R3) ADD ONE @V2A3765 01299000
  1313. LH R8,MDLDRENT GET NUMBER OF ENTRIES @V2A3765 01300000
  1314. LR R0,R3 LOAD NUM. OF DOUBLE WORDS @V2A3765 01301000
  1315. DMSFREE DWORDS=(0),TYPE=USER,ERR=DMSTORE @VA04197 01302000
  1316. ST R1,RECBUF SAVE BUFFER AREA @V2A3765 01303000
  1317. LA R1,RDBUF READ LOADER TABLE @V2A3765 01304000
  1318. SVC 202 @V2A3765 01305000
  1319. DC AL4(RDLIBERR) @V2A3765 01306000
  1320. DROP R1 @V2A3765 01307000
  1321. LR R0,R8 SAVE NUMBER OF ENTRIES @V2A3765 01308000
  1322. USING LDRENT,R1 @V2A3765 01309000
  1323. L R1,RECBUF POINT TO LOADER TABLE @V2A3765 01310000
  1324. LDRLOOP EQU * @V2A3765 01311000
  1325. TM LDRFLG2,LDRSECT IS THIS A CSECT? @V2A3765 01312000
  1326. BZ LDRNXT BRANCH IF NOT @V2A3765 01313000
  1327. CLC LDRNAME,CSECTNAM IS THIS THE NAME? @V2A3765 01314000
  1328. BE LDRFIND BRANCH IF YES @V2A3765 01315000
  1329. * 01316000
  1330. * LOADER TABLE HAS LAST CSECT FIRST, SO FIRST CSECT IS 01317000
  1331. * LAST CSECT IN LOADER TABLE. 01318000
  1332. * 01319000
  1333. LR R15,R1 POINT TO ENTRY @V2A3765 01320000
  1334. LDRNXT EQU * @V2A3765 01321000
  1335. LA R1,LDRLNTH(,R1) POINT TO NEXT ENTRY @V2A3765 01322000
  1336. BCT R8,LDRLOOP LOOK AT NEXT ENTRY @V2A3765 01323000
  1337. TM SWT,FSTCSECT+ALLCSECT LOOKING FOR FIRST CSECT? @V2A3765 01324000
  1338. BNZ LDRFIND BRANCH IF YES @V2A3765 01325000
  1339. L R1,RECBUF FREE THE BUFFER @V2A3765 01326000
  1340. LR R0,R3 GET DOUBLE WORD NUMBER @V2A3765 01327000
  1341. DMSFRET DWORDS=(0),LOC=(1) @V2A3765 01328000
  1342. LA R15,4 INDICATE ERROR @V2A3765 01329000
  1343. B CHKLDERR @V2A3765 01330000
  1344. LDRFIND EQU * @V2A3765 01331000
  1345. TM SWT,FSTCSECT+ALLCSECT WAS CSECT SPECIFIED? @V2A3765 01332000
  1346. BZ LDRFIND1 BRANCH IF YES @V2A3765 01333000
  1347. LR R1,R15 GET ENTRY ADDRESS @V2A3765 01334000
  1348. MVC CSECTNAM(8),LDRNAME MOVE IN CSECT NAME @V2A3765 01335000
  1349. TM SWT,ALLCSECT DUMP ALL CSECTS? @V2A3765 01336000
  1350. BZ LDRFIND1 BRANCH IF NOT @V2A3765 01337000
  1351. OI LINESWT,FRSTLINE INDICATE FIRST LINE @V2A3765 01338000
  1352. NI SWT,255-FSTCSECT REMOVE FIRST INDICATOR @V2A3765 01339000
  1353. LTR R15,R15 FIND A CSECT? @V2A3765 01340000
  1354. BNZ LDRFIND1 BRANCH IF YES @V2A3765 01341000
  1355. OI LINESWT,FINCSECT INDICATE END @V2A3765 01342000
  1356. B CHKLDERR @V2A3765 01343000
  1357. LDRFIND1 EQU * @V2A3765 01344000
  1358. L R15,LDRNOTE1 GET CSECT ADDRESS @V2A3765 01345000
  1359. LA R15,0(,R15) CLEAR HIGH BYTE @V2A3765 01346000
  1360. DROP R1 @V2A3765 01347000
  1361. USING MDREC,1 @V2A3765 01348000
  1362. LA R1,DICTHDR POINT TO HEADER RECORD @V2A3765 01349000
  1363. L R2,MDFIRST GET LOAD POINT @V2A3765 01350000
  1364. SR R15,R2 CLEAR LOAD POINT @V2A3765 01351000
  1365. ST R15,MODLOC SAVE CSECT ADDRESS @V2A3765 01352000
  1366. BAL R10,FNDCLNTH FIND THE CSECT LENGTH @V2A3765 01353000
  1367. L R1,RECBUF FREE THE BUFFER @V2A3765 01354000
  1368. LR R0,R3 GET DOUBLE WORD NUMBER @V2A3765 01355000
  1369. DMSFRET DWORDS=(0),LOC=(1) @V2A3765 01356000
  1370. DROP R1 @V2A3765 01357000
  1371. SR R15,R15 INDICATE NO ERROR @V2A3765 01358000
  1372. CHKLDERR EQU * @V2A3765 01359000
  1373. L R10,LDTBLSV GET RETURN REGISTER @V2A3765 01360000
  1374. BR R10 @V2A3765 01361000
  1375. SPACE 3 01362000
  1376. LDTBLSV DS F @V2A3765 01363000
  1377. EJECT 1 01364000
  1378. * 01365000
  1379. * LOCATE BOUNDARY OF CSECT 01366000
  1380. * 01367000
  1381. USING LDRENT,R1 @V2A3765 01368000
  1382. FNDCLNTH EQU * @V2A3765 01369000
  1383. SR R15,R15 CLEAR REGISTER @V2A3765 01370000
  1384. BCTR R15,0 R15 = FF @V2A3765 01371000
  1385. LA R15,0(,R15) CLEAR HIGH BYTE @V2A3765 01372000
  1386. LR R8,R15 AND SAVE REGISTER @V2A3765 01373000
  1387. L R1,RECBUF POINT TO FIRST LOADER ENTRY @V2A3765 01374000
  1388. NXTLDRC EQU * @V2A3765 01375000
  1389. TM LDRFLG2,LDRSECT IS THIS A CSECT? @V2A3765 01376000
  1390. BZ NXTENT BRANCH IF NOT @V2A3765 01377000
  1391. L R14,LDRNOTE1 GET CSECT ADDRESS @V2A3765 01378000
  1392. LA R14,0(,R14) CLEAR HIGH BYTE @V2A3765 01379000
  1393. SR R14,R2 CLEAR LOAD POINT @V2A3765 01380000
  1394. CR R14,R15 LOWER THAN PREVIOUS ENTRY? @V2A3765 01381000
  1395. BNL NXTENT BRANCH IF NOT @V2A3765 01382000
  1396. C R14,MODLOC HIGHER THAN SPECIFIED CSECT? @V2A3765 01383000
  1397. BNH NXTENT BRANCH IF NOT @V2A3765 01384000
  1398. LR R15,R14 SAVE CSECT ADDRESS @V2A3765 01385000
  1399. NXTENT EQU * @V2A3765 01386000
  1400. LA R1,LDRLNTH(,R1) POINT TO NEXT ENTRY @V2A3765 01387000
  1401. BCT R0,NXTLDRC LOOK AT NEXT ENTRY @V2A3765 01388000
  1402. CR R8,R15 WAS CSECT BOUNDARY FOUND? @V2A3765 01389000
  1403. BNE BNDRYFND BRANCH IF YES @V2A3765 01390000
  1404. DROP R1 @V2A3765 01391000
  1405. L R15,MODLEN GET MODULE ENDING ADDRESS @V2A3765 01392000
  1406. BNDRYFND EQU * @V2A3765 01393000
  1407. S R15,MODLOC SUBTRACT SPECIF. CSECT ADDR. @V2A3765 01394000
  1408. ST R15,MODLEN STORE CSECT LENGTH @V2A3765 01395000
  1409. BR R10 AND RETURN @V2A3765 01396000
  1410. EJECT 1 01397000
  1411. * 01398000
  1412. * CHECK FOR MEMBER OR, IF CMS TXTLIB, CSECT 01399000
  1413. * 01400000
  1414. USING DICTENT,R1 @V2A3765 01401000
  1415. CHKMEM EQU * @V2A3765 01402000
  1416. LR R15,R12 MAKE R15 NONZERO @V2A3765 01403000
  1417. CLI DICTTYPE,X'00' IS THIS A MEMBER? @V2A3765 01404000
  1418. BNE CHKCSECT BRANCH IF NOT @V2A3765 01405000
  1419. CLC MEMNAME,DICTNAME IS THIS THE NAME? @V2A3765 01406000
  1420. BNE CHKCSECT BRANCH IF NOT @V2A3765 01407000
  1421. SR R15,R15 INDICATE MEMBER FOUND @V2A3765 01408000
  1422. LH R8,DICTINDX GET INDEX NUMBER @V2A3765 01409000
  1423. B CHKMEMND @V2A3765 01410000
  1424. * 01411000
  1425. * IF THIS IS A CMS ONLY TXTLIB, THERE WILL BE NO 01412000
  1426. * MEMBER NAMES. THEREFORE, EVERY ENTRY WILL BE 01413000
  1427. * CHECKED FOR A MATCH ON THE SUPPLIED CSECT AND, IF 01414000
  1428. * FOUND, THE CSECT WILL BE ASSUMED THE WANTED 01415000
  1429. * MEMBER. 01416000
  1430. * 01417000
  1431. CHKCSECT EQU * @V2A3765 01418000
  1432. TM SWT,ZAPT IS THIS A TXTLIB? @V2A3765 01419000
  1433. BZ CHKMEMND BRANCH IF NOT, DONE @V2A3765 01420000
  1434. LTR R8,R8 HAS TEMP. CSECT BEEN FOUND? @V2A3765 01421000
  1435. BNZ CHKMEMND BRANCH IF YES @V2A3765 01422000
  1436. TM SWT,FSTCSECT FIRST CSECT TO BE USED? @V2A3765 01423000
  1437. BO CHKMEMND BRANCH IF YES @V2A3765 01424000
  1438. CLC CSECTNAM,DICTNAME IS THIS THE CSECT? @V2A3765 01425000
  1439. BNE CHKMEMND BRANCH IF NOT @V2A3765 01426000
  1440. LH R8,DICTINDX GET CSECT RECORD NUMBER @V2A3765 01427000
  1441. CHKMEMND EQU * @V2A3765 01428000
  1442. BR R10 @V2A3765 01429000
  1443. DROP R1 @V2A3765 01430000
  1444. EJECT 1 01431000
  1445. * 01432000
  1446. * PRINT THE REQUESTED DUMP 01433000
  1447. * 01434000
  1448. PRTDUMP EQU * @V2A3765 01435000
  1449. ST R10,PRTR10 SAVE RETURN REGISTER @V2A3765 01436000
  1450. ST R8,R8SAVE SAVE POINTER @V2A3765 01437000
  1451. TM OPSWT,VERINP IS THIS FIRST ENTRY? @V2A3765 01438000
  1452. BO PRTDUMP1 BRANCH IF NOT @V2A3765 01439000
  1453. AR R5,R2 ADD LENGTH OF RECORD @V2A3765 01440000
  1454. ST R5,RECEND SAVE END OF RECORD @V2A3765 01441000
  1455. B PRTFIRST @V2A3765 01442000
  1456. PRTDUMP1 EQU * @V2A3765 01443000
  1457. C R5,RECEND END EQUAL START? @V2A3765 01444000
  1458. BE FINRES BRANCH IF YES @V2A3765 01445000
  1459. BL DORG THIS IS AN ORG BACK @VA04197 01446000
  1460. BAL R10,SETBLANK GO SET DS BLANKS @V2A3765 01447000
  1461. TM LINESWT,LSTLNPRT LAST LINE PRINTED? @V2A3765 01448000
  1462. BZ FINRES BRANCH IF NOT @V2A3765 01449000
  1463. NI LINESWT,255-LSTLNPRT REMOVE LAST LINE IND. @V2A3765 01450000
  1464. B PRTRDNXT DONE @V2A3765 01451000
  1465. FINRES EQU * @V2A3765 01452000
  1466. AR R5,R2 ADD LENGTH OF RECORD @V2A3765 01453000
  1467. ST R5,RECEND SAVE END OF RECORD @V2A3765 01454000
  1468. BAL R10,FINLINE GO FINISH LINE @V2A3765 01455000
  1469. B PRTRDNXT END OF FILE @VA04197 01456000
  1470. PRTFIRST EQU * @VA04197 01457000
  1471. BAL R10,NEWLIN GO PRINT FULL LINES @VA04197 01458000
  1472. PRTRDNXT EQU * @VA04197 01459000
  1473. L R10,PRTR10 GET BAL ADDRESS @VA04197 01460000
  1474. BR R10 AND RETURN @VA04197 01461000
  1475. SPACE 3 @VA04197 01462000
  1476. PRTR10 DS F @VA04197 01463000
  1477. R8SAVE DS F @VA04197 01464000
  1478. EJECT 1 @VA04197 01465000
  1479. * @VA04197 01466000
  1480. * ROUTINE TO POSITION ORG BACKS @VA04197 01467000
  1481. * @VA04197 01468000
  1482. DORG AR R5,R2 UPDATE NEW RECORD END @VA04197 01469000
  1483. ST R5,RECEND @VA04197 01470000
  1484. ST R7,LOOPSAVE+20 SAVE DATA SIZE IN CASE @VA04197 01471000
  1485. BAL R10,PRTLINE PRINT THIS LINE AS IS @VA04197 01472000
  1486. LA R1,1 INITIALIZE BUMP VALUE @VA04197 01473000
  1487. TM SWT,PRINT IS THIS A FULL LINE @VA04197 01474000
  1488. BZ DORGA NO @VA04197 01475000
  1489. AR R1,R1 DOUBLE BUMP VALUE @VA04197 01476000
  1490. DORGA SLL R1,4 TIMES 16 @VA04197 01477000
  1491. L R15,RECENDA GET NEW START DISPLACEMENT @VA04197 01478000
  1492. L R10,PACKADDS GET CURRENT ADDRESS @VA04197 01479000
  1493. CR R10,R15 CURRENT ADDRESS OK @VA04197 01480000
  1494. BNH DORGCC YES @VA04197 01481000
  1495. DORGB SR R10,R1 MINUS BUMP VALUE @VA04197 01482000
  1496. BZ DORGC CANNOT LOWER ANYMORE @VA04197 01483000
  1497. CR R15,R10 LOW ENOUGH YET @VA04197 01484000
  1498. BL DORGB NO, REDUCE AGAIN @VA04197 01485000
  1499. DORGC ST R10,PACKADDS THIS IS WHERE WE START @VA04197 01486000
  1500. DORGCC NI OPSWT,255-VERINP RESET INTERUPTED LINE @VA04197 01487000
  1501. OI ECSWT,ORGCD INDICATE AN ORG BACK @VA04197 01488000
  1502. ST R10,ORGADD SAVE NEW START DISPLACEMENT @VA04197 01489000
  1503. B PRTFIRST GO DO IT @VA04197 01490000
  1504. EJECT 1 @VA04197 01491000
  1505. * @VA04197 01492000
  1506. * ROUTINE TO POSITION DUMP LINE AT PROPER SPOT ON @VA04197 01493000
  1507. * OUTPUT LINE @VA04197 01494000
  1508. * @VA04197 01495000
  1509. DORGD EQU * @VA04197 01496000
  1510. ST R10,ORG10SV SAVE RETURN REGISTER @VA04197 01497000
  1511. CLC PACKADDS,PACKADDE IS THIS END OF CSECT? @VA04179 01498000
  1512. BL DORGDA BRANCH IF NOT @VA04197 01499000
  1513. TM ECSWT,EOCSORG ORG FOUND AT END OF CSECT? @VA09155 01499300
  1514. BO DORGDA YES, NOT LAST LINE @VA09155 01499600
  1515. OI LINESWT,LASTLINE INDICATE LAST @VA04197 01500000
  1516. DORGDA AR R5,R15 UPDATE CHAR POINTER @VA04197 01501000
  1517. AR R15,R15 DOUBLE FOR PRT BUFFER @VA04197 01502000
  1518. AR R14,R15 UPDATE PRT BUFFER POINTER @VA04197 01503000
  1519. SR R10,R10 @VA04197 01504000
  1520. SRL R15,1 HALF TO ORIGINAL VALUE @VA04197 01505000
  1521. DORGE S R15,=F'4' SEE HOW MANY SLOTS OVER @VA04197 01506000
  1522. BM DORGF COUNT FINISHED @VA04197 01507000
  1523. LA R10,1(0,R10) BUMP SLOT COUNTER @VA04197 01508000
  1524. LA R14,2(0,R14) BUMP PRT POSITION POINTER @VA04197 01509000
  1525. B DORGE @VA04197 01510000
  1526. DORGF ST R5,LOOPSAVE+16 ALSO PRT CHAR POSITION @VA04197 01511000
  1527. LA R1,1 @VA04197 01512000
  1528. TM SWT,PRINT IS THIS A FULL LINE @VA04197 01513000
  1529. BZ DORGG NO, ONLY ONE PASS @VA04197 01514000
  1530. LA R1,1(0,R1) MAKE TWO PASSES @VA04197 01515000
  1531. DORGG LH R15,FOUR SET UP INITIAL LOOP COUNT @VA04197 01516000
  1532. TM ECSWT,NEWCT NEW CSECT @VA04197 01517000
  1533. BZ DORGGG @VA04197 01518000
  1534. SR R6,R6 @VA04197 01519000
  1535. ST R2,LOOPSAVE+20 SET UP LENGTH @VA04197 01520000
  1536. DORGGG SR R15,R10 @VA04197 01521000
  1537. ST R15,LOOPSAVE+4 SAVE INITIAL LOOP COUNT @VA04197 01522000
  1538. BP DORGH LOOP COUNT OK AS IS @VA04197 01523000
  1539. AH R15,FOUR CORRECT THE LOOP COUNT @VA04197 01524000
  1540. BCTR R1,0 DECREMENT SECOND PASS COUNT @VA04197 01525000
  1541. LA R14,2(0,R14) OVER 2D HALF SEPARATOR @VA04197 01526000
  1542. ST R15,LOOPSAVE+4 THIS IS THE CORRECT LOOP COUNT @VA04197 01527000
  1543. DORGH ST R1,LOOPSAVE+8 SET UP PASS COUNT @VA04197 01528000
  1544. ST R14,LOOPSAVE SET UP PRT BUFFER POINTER @VA04197 01529000
  1545. L R1,PACKDISP GET NEW END DISPLACEMENT @VA07636 01530000
  1546. TM SWT,ZAPM ZAP MODULE? @VA08997 01530200
  1547. BO DORGI YES, CONTINUE @VA08997 01530400
  1548. L R1,RECENDA GET END DISPLACEMENT @VA08997 01530600
  1549. DORGI EQU * @VA08997 01530800
  1550. S R1,ORGADD MINUS LINE START ADDRESS @VA04197 01531000
  1551. DORGJ SH R1,FOUR CALC RESIDUAL COUNT @VA04197 01532000
  1552. BP DORGJ TRY AGAIN @VA04197 01533000
  1553. BZ DORGK @VA04197 01534000
  1554. AH R1,FOUR RESTORE COUNT @VA04197 01535000
  1555. DORGK ST R1,LOOPSAVE+12 @VA04197 01536000
  1556. OI OPSWT,VERINP INDICATE INTERRUPTED LINE @VA04197 01537000
  1557. NI ECSWT,255-ORGCD-NEWCT RESET ORG BACK SWITCH @VA04197 01538000
  1558. XC ORGADD(4),ORGADD @VA04197 01539000
  1559. L R10,ORG10SV RESTORE RETURN REGISTER @VA04197 01540000
  1560. BR R10 AND RETURN @VA04197 01541000
  1561. ORG10SV DC F'0' @VA04197 01542000
  1562. ORGCT DC F'0' SLOT COUNTER @VA04197 01543000
  1563. ORGADD DC F'0' @VA04197 01544000
  1564. PACKSAVE DC F'0' @VA04197 01545000
  1565. EJECT @VA04197 01546000
  1566. * 01547000
  1567. * ROUTINE TO PRINT FULL LINES 01548000
  1568. * 01549000
  1569. NEWLIN EQU * @V2A3765 01550000
  1570. ST R10,NEWR10 @V2A3765 01551000
  1571. NEWLINE EQU * @V2A3765 01552000
  1572. SR R4,R4 CLEAR CONVERT REGISTER @V2A3765 01553000
  1573. LA R14,CDBUF GET BUFFER ADDRESS @V2A3765 01554000
  1574. MVI CDBUF,C' ' @V2A3765 01555000
  1575. MVC CDBUF+1(132),CDBUF CLEAR THE PRINT AREA @V2A3765 01556000
  1576. TM LINESWT,FRSTLINE IS THIS THE FIRST LINE? @V2A3765 01557000
  1577. BZ NOFSTLN BRANCH IF NOT @V2A3765 01558000
  1578. BAL R10,PRTHDR GO PRINT HEADER @V2A3765 01559000
  1579. NOFSTLN EQU * @V2A3765 01560000
  1580. TM ECSWT,ORGCD ORG BACK FOUND @VA04197 01561000
  1581. BZ NOBLNKL NO @VA04197 01562000
  1582. BAL R10,PRTLINE PRINT A BLANK SEPARATOR LINE @VA04197 01563000
  1583. LA R14,CDBUF RESET OUTPUT BUFFER PTR @VA04197 01564000
  1584. NOBLNKL EQU * @VA04197 01565000
  1585. TM SWT,PRINT IS THIS FULL LINE? @V2A3765 01566000
  1586. BZ SETFORCN BRANCH IF NOT @V2A3765 01567000
  1587. LA R1,2 INDICATE FULL LINE @V2A3765 01568000
  1588. MVI CDBUF+98,C'*' PUT START DELIMITER @V2A3765 01569000
  1589. LA R5,CDBUF+99 POINT TO CHARACTER SECTION @V2A3765 01570000
  1590. MVI CDBUF+131,C'*' PUT END DELIMITER @V2A3765 01571000
  1591. B SETADD @V2A3765 01572000
  1592. SETFORCN EQU * @V2A3765 01573000
  1593. LA R1,1 INDICATE HALF LINE @V2A3765 01574000
  1594. MVI PRTBUF+58,C'*' PUT START DELIMITER @V2A3765 01575000
  1595. LA R5,PRTBUF+59 POINT TO CHARACTER SECTION @V2A3765 01576000
  1596. MVI PRTBUF+75,C'*' PUT END DELIMITER @V2A3765 01577000
  1597. LA R14,3(,R14) SET BUFFER ADDRESS @V2A3765 01578000
  1598. SETADD EQU * @V2A3765 01579000
  1599. LA R15,PACKADDS POINT TO ADDRESS @V2A3765 01580000
  1600. UNPK HEXUNPK(9),0(5,R15) UNPACK ADDRESS @V2A3765 01581000
  1601. NC HEXUNPK(8),NORMCON NORMALIZE @V2A3765 01582000
  1602. TR HEXUNPK(8),TRANTBL AND TRANSLATE IT @V2A3765 01583000
  1603. MVC 0(8,R14),HEXUNPK MOVE ADDRESS INTO LINE @V2A3765 01584000
  1604. LA R14,12(,R14) POINT TO NEXT AVAILABLE BYTE @V2A3765 01585000
  1605. L R15,PACKADDS GET THE ADDRESS @V2A3765 01586000
  1606. ST R15,PACKSAVE @VA04197 01587000
  1607. LR R7,R1 GET LINE SIZE @V2A3765 01588000
  1608. SLL R7,4 MULTIPLY BY 16 @V2A3765 01589000
  1609. LA R15,0(R7,R15) UPDATE ADDRESS @V2A3765 01590000
  1610. ST R15,PACKADDS AND SAVE IT @V2A3765 01591000
  1611. TM ECSWT,ORGCD+NEWCT ORG BACK ENCOUNTERED @VA04197 01592000
  1612. BZ SETADDA NO @VA04197 01593000
  1613. L R15,PACKDISP GET START DISPLACEMENT @VA07636 01594000
  1614. TM SWT,ZAPM ZAP MODULE? @VA08997 01594200
  1615. BO SETADDC YES,CONTINUE @VA08997 01594400
  1616. L R15,RECENDA GET START DISPLACEMENT @VA08997 01594600
  1617. SETADDC EQU * @VA08997 01594800
  1618. S R15,PACKSAVE MINUS LINE ADDRESS @VA04197 01595000
  1619. BZ SETADDB MODIFIED PRT LINE @VA04197 01596000
  1620. SETADDD CR R15,R7 BIGGER THAN MAX LINE @VA04197 01597000
  1621. BL CALDORGD NO, GO SET LINE START @VA04197 01598000
  1622. BE SETADDA @VA04197 01599000
  1623. BAL R10,PRTLINE GO PRINT A 'DSLINE' @VA04197 01600000
  1624. LA R14,CDBUF RESET OUTPUT BUFFER PTR @VA04197 01601000
  1625. B NOBLNKL SET UP NEXT LINE @VA04197 01602000
  1626. CALDORGD EQU * @VA04197 01603000
  1627. BAL R10,DORGD POSITION LINE @VA04197 01604000
  1628. TM LINESWT,DSLINE IS THIS DS SPACING? @VA04197 01605000
  1629. BO NEWEOR1 BRANCH IF YES @VA04197 01606000
  1630. BAL R10,FINLINE GO FINISH LINE @VA04197 01607000
  1631. B NEWEOR1 BRANCH IF END OF FILE @VA04197 01608000
  1632. B NEWLINE PRINT NEW LINES @VA04197 01609000
  1633. SETADDB NI ECSWT,255-ORGCD-NEWCT RESET ORG BACK FLAG @VA04197 01610000
  1634. SETADDA EQU * @VA04197 01611000
  1635. SPACE 01611100
  1636. *********************************************************************** 01611180
  1637. * * 01611260
  1638. * PROCESSING OF TXTLIB RECORDS IS COMPLETED AT CSECT END * 01611340
  1639. * EXCEPT WHEN AN ORG IS INCLUDED AT THE END ADDRESS. * 01611420
  1640. * TO DETECT THIS EXCEPTION THE RECORD POINTER IS ADJUSTED * 01611500
  1641. * TEMPORARILY TO ALLOW READING THE NEXT RECORD. * 01611580
  1642. * * 01611660
  1643. *********************************************************************** 01611740
  1644. SPACE 01611820
  1645. STH R1,LNINDSAV SAVE LINE INDICATOR SETTING @VA09155 01611900
  1646. OI LINESWT,LASTLINE INDICATE LAST LINE @V2A3765 01612000
  1647. L R15,PACKADDS RESTORE VALUE @VA04197 01613000
  1648. S R15,PACKADDE IS THIS LAST LINE? @V2A3765 01614000
  1649. BM SETNTLST BRANCH IF NOT @V2A3765 01615000
  1650. TM SWT,ZAPT DUMPING A TXTLIB? @VA09155 01615100
  1651. BNO ENDCSECT NO, END OF CSECT @VA09155 01615160
  1652. TM DUPSWT,DUPSTRTA DUMPING PART OF CSECT? @VA09155 01615220
  1653. BO ENDCSECT YES, NO SEARCH FOR ORG BACK @VA09155 01615280
  1654. TM ECSWT,ENDCD END CARD ENCOUNTERED? @VA09155 01615340
  1655. BO ENDCSECT YES, DON'T TEST FOR MORE TEXT @VA09155 01615400
  1656. TM ECSWT,EOCSORG ORG FOUND AT END OF CSECT? @VA09155 01615460
  1657. BO SETNTLST YES, TURN OFF LAST LINE FLAG @VA09155 01615520
  1658. SR R10,R10 CLEAR REGISTER @VA09155 01615580
  1659. ICM R10,M3,RECNUM CURRENT TEXT RECORD POINTER @VA09155 01615640
  1660. LA R10,1(R10) POINT TO NEXT RECORD @VA09155 01615700
  1661. L R15,RECEND END ADDRESS OF CURRENT TEXT @VA09155 01615760
  1662. S R15,PACKADDE LOWER THAN END OF CSECT? @VA09155 01615820
  1663. BNM TRECNUM NO, END OF DATA IF NO ORG FOUND @VA09155 01615880
  1664. LA R10,1(10) NOT EOD, INCREASE RECORD NUMBER @VA09155 01615940
  1665. TRECNUM EQU * @VA09155 01616000
  1666. STH R10,RECNUM SET TEMPORARY RECORD POINTER @VA09155 01616060
  1667. BAL R10,RDLIB READ THE RECORD @VA09155 01616120
  1668. SR R10,R10 CLEAR REGISTER @VA09155 01616180
  1669. ICM R10,M3,RECNUM GET RECORD NUMBER @VA09155 01616240
  1670. BCTR R10,0 RETURN TO PRECEDING RECORD @VA09155 01616300
  1671. L R15,RECEND GET END ADDRESS OF CURRENT TEXT @VA09155 01616360
  1672. S R15,PACKADDE LESS THAN END OF CSECT? @VA09155 01616420
  1673. BNM CRECNUM NO, POINTER IS AT CURRENT RECORD @VA09155 01616480
  1674. BCTR R10,0 READJUST RECORD POINTER @VA09155 01616540
  1675. CRECNUM EQU * @VA09155 01616600
  1676. STH R10,RECNUM RESTORE RECORD NUMBER @VA09155 01616660
  1677. CLC TXTREC,LIBRCD WAS FOLLOWING RECORD 'TXT'? @VA09155 01616720
  1678. BNE ENDCSTXT NO, END OF TEXT @VA09155 01616780
  1679. CLC LIBRCD+14(2),CSECTID+2 SAME CSECT ID? @VA09155 01616840
  1680. BNE ENDCSTXT NO, NEXT CSECT READ @VA09155 01616900
  1681. SR R10,R10 CLEAR REGISTER @VA09155 01616960
  1682. ICM R10,M7,LIBRCD+5 GET NEXT TEXT DISPLACEMENT @VA09155 01617020
  1683. S R10,PACKADDE WITHIN ESD LIMIT? @VA09155 01617080
  1684. BNM ENDCSTXT NO, END OF CSECT @VA09155 01617140
  1685. OI ECSWT,EOCSORG INDICATE ORG AT END OF CSECT @VA09155 01617200
  1686. BAL R10,RDLIB READ CURRENT TEXT RECORD BACK IN @VA09155 01617260
  1687. B SETNTLST TURN OFF LAST LINE FLAG @VA09155 01617320
  1688. ENDCSTXT EQU * @VA09155 01617380
  1689. BAL R10,RDLIB RESTORE LAST TEXT RECORD @VA09155 01617440
  1690. ENDCSECT EQU * @VA09155 01617500
  1691. L R15,PACKADDS RESTORE START DISPLACEMENT @VA09155 01617560
  1692. S R15,PACKADDE COMPARE WITH ESD LIMIT @VA09155 01617620
  1693. BE SETHFLN BRANCH IF EQUAL @V2A3765 01617680
  1694. SR R7,R15 GET LENGTH @V2A3765 01617740
  1695. LR R15,R7 PUT INTO R15 @V2A3765 01618000
  1696. AR R15,R6 ADD CURRENT FILE POINTER @V2A3765 01619000
  1697. CR R15,R2 EXCEED RECORD SIZE? @V2A3765 01620000
  1698. BH SETHFLN @V2A3765 01621000
  1699. LR R2,R15 SET RECORD SIZE @V2A3765 01622000
  1700. OI LINESWT,LASTREC INDICATE LAST RECORD @V2A3765 01623000
  1701. B SETHFLN @V2A3765 01624000
  1702. SETNTLST EQU * @V2A3765 01625000
  1703. NI LINESWT,255-LASTLINE NOT LAST LINE @V2A3765 01626000
  1704. SETHFLN EQU * @V2A3765 01627000
  1705. LH R1,LNINDSAV RESTORE LINE INDICATOR @VA09155 01627300
  1706. SETHFLN1 EQU * @VA09155 01627600
  1707. LA R15,4 FOUR PRINT BLOCKS/HALF PAGE @V2A3765 01628000
  1708. BAL R10,SETHXLN GO SET UP LINE @V2A3765 01629000
  1709. B NEWEOR @V2A3765 01630000
  1710. BCT R1,SETHFLN1 DO SECOND HALF OR FALL THRU @VA09155 01631000
  1711. BAL R10,CHARCONV GO CONVERT NON-PRINT CHARS. @V2A3765 01632000
  1712. BAL R10,PRTLINE GO PRINT LINE @V2A3765 01633000
  1713. TM LINESWT,LASTLINE IS THIS LAST LINE? @V2A3765 01634000
  1714. BO NEWEOR1 BRANCH IF YES @V2A3765 01635000
  1715. B NEWLINE @V2A3765 01636000
  1716. NEWEOR EQU * @V2A3765 01637000
  1717. TM LINESWT,LASTREC LAST RECORD? @V2A3765 01638000
  1718. BZ NEWEOR1 BRANCH IF NOT @V2A3765 01639000
  1719. BAL R10,PRTLINE GO PRINT LINE @V2A3765 01640000
  1720. NI OPSWT,255-VERINP REMOVE IN PROGRESS IND. @V2A3765 01641000
  1721. NI LINESWT,255-LASTREC REMOVE LAST REC. IND. @V2A3765 01642000
  1722. OI LINESWT,LSTLNPRT SET LAST LINE PRINTED @V2A3765 01643000
  1723. NEWEOR1 EQU * @V2A3765 01644000
  1724. L R10,NEWR10 GET RETURN ADDRESS @V2A3765 01645000
  1725. NEWEND EQU * @V2A3765 01646000
  1726. BR R10 @V2A3765 01647000
  1727. SPACE 3 01648000
  1728. NEWR10 DS F @V2A3765 01649000
  1729. LNINDSAV DC H'0' @VA09155 01649500
  1730. EJECT 1 01650000
  1731. * 01651000
  1732. * ROUTINE TO PRINT DUMP LINE 01652000
  1733. * 01653000
  1734. PRTLINE EQU * @V2A3765 01654000
  1735. ST R10,PRTLINR SAVE RETURN ADDRESS @V2A3765 01655000
  1736. TM DUPSWT,DUPMSG IS THIS DUP MESSAGE? @V2A3765 01656000
  1737. BO PRTLIN2 BRANCH IF YES @V2A3765 01657000
  1738. LA R14,CDBUF POINT TO OUTPUT BUFFER @V2A3765 01658000
  1739. LA R15,132 FULL OUTPUT LINE @V2A3765 01659000
  1740. TM SWT,PRINT PRINT OPTION? @V2A3765 01660000
  1741. BO CHKDUP BRANCH IF YES @V2A3765 01661000
  1742. LA R14,3(,R14) POINT TO TRUE LINE @V2A3765 01662000
  1743. LA R15,129 LINE LESS 3 @V2A3765 01663000
  1744. CHKDUP EQU * @V2A3765 01664000
  1745. TM DUPSWT,DUPFRST IS THIS FIRST LINE? @V2A3765 01665000
  1746. BZ PRTLIN1 BRANCH IF YES @V2A3765 01666000
  1747. CLC 12(80,R14),HOLDLINE SAME AS PREVIOUS? @V2A3765 01667000
  1748. BNE NOTDUP BRANCH IF NOT @V2A3765 01668000
  1749. TM DUPSWT,DUPHELD HAS LINE BEEN HELD? @V2A3765 01669000
  1750. BO CHKLAST BRANCH IF YES @V2A3765 01670000
  1751. MVC FRSTADDR,2(R14) SAVE STARTING ADDRESS @V2A3765 01671000
  1752. OI DUPSWT,DUPHELD INDICATE LINE HELD @V2A3765 01672000
  1753. CHKLAST EQU * @V2A3765 01673000
  1754. TM LINESWT,LASTLINE IS THIS THE LAST LINE? @V2A3765 01674000
  1755. BZ PRTLINEN BRANCH IF NOT @V2A3765 01675000
  1756. OI DUPSWT,DUPEND INDICATE END @V2A3765 01676000
  1757. MVC 2(6,R14),=CL6'FINISH' INDICATE END @V2A3765 01677000
  1758. NOTDUP EQU * @V2A3765 01678000
  1759. TM DUPSWT,DUPHELD HAS LINE BEEN HELD? @V2A3765 01679000
  1760. BZ PRTLIN1 BRANCH IF NOT @V2A3765 01680000
  1761. MVC SECDADDR,2(R14) MOVE IN STOP ADDRESS @V2A3765 01681000
  1762. CLC SECDADDR(6),=CL6' ' ALL BLANKS @VA04197 01682000
  1763. BNE FINOK NO, OK AS IS @VA04197 01683000
  1764. MVC SECDADDR(6),=CL6'FINISH' @VA04197 01684000
  1765. FINOK EQU * @VA04197 01685000
  1766. OI DUPSWT,DUPMSG INDICATE DUP MESSAGE @V2A3765 01686000
  1767. MVC HOLDLINE,PRTBUF SAVE NEW LINE @V2A3765 01687000
  1768. EX R15,MVPRTBUF MOVE IN MESSAGE @V2A3765 01688000
  1769. MVC PRTLINRA,PRTLINR SAVE RETURN ADDRESS @V2A3765 01689000
  1770. NI DUPSWT,255-DUPHELD REMOVE LINE HELD IND. @V2A3765 01690000
  1771. BAL R10,PRTLINE PRINT DUP MESSAGE @V2A3765 01691000
  1772. NI DUPSWT,255-DUPMSG REMOVE DUP SWITCH @V2A3765 01692000
  1773. MVC PRTLINR,PRTLINRA RESTORE RETURN REGISTER @V2A3765 01693000
  1774. TM DUPSWT,DUPEND END OF DUMP? @V2A3765 01694000
  1775. BZ NDUPEND NO @VA04197 01695000
  1776. NI DUPSWT,255-DUPEND CLEAR END SWITCH @VA04197 01696000
  1777. B PRTLINEN @VA04197 01697000
  1778. NDUPEND EQU * @VA04197 01698000
  1779. MVC PRTBUF(134),HOLDLINE RESTORE LINE @V2A3765 01699000
  1780. PRTLIN1 EQU * @V2A3765 01700000
  1781. MVC HOLDLINE(80),12(R14) SAVE OUTPUT LINE @V2A3765 01701000
  1782. OI DUPSWT,DUPFRST INDICATE FIRST LINE @V2A3765 01702000
  1783. PRTLIN2 EQU * @V2A3765 01703000
  1784. TM SWT,PRINT PRINT OPTION? @V2A3765 01704000
  1785. BZ TYPLINE BRANCH IF NOT, GO TYPE @V2A3765 01705000
  1786. BAL R10,WRCARD GO PRINT LINE @V2A3765 01706000
  1787. B PRTLINEN @V2A3765 01707000
  1788. TYPLINE EQU * @V2A3765 01708000
  1789. LA R7,84 GET MAXIMUM LENGTH @V2A3765 01709000
  1790. STH R7,PRTBUF AND STORE IT @V2A3765 01710000
  1791. LA R1,PRTBUF POINT TO WTO LIST @V2A3765 01711000
  1792. WTO MF=(E,(1)) AND TYPE IT @V2A3765 01712000
  1793. PRTLINEN EQU * @V2A3765 01713000
  1794. L R10,PRTLINR GET RETURN ADDRESS @V2A3765 01714000
  1795. BR R10 @V2A3765 01715000
  1796. SPACE 3 01716000
  1797. PRTLINR DS F @V2A3765 01717000
  1798. PRTLINRA DS F @V2A3765 01718000
  1799. MVPRTBUF MVC 0(1,R14),DUPMSGN @V2A3765 01719000
  1800. EJECT 1 01720000
  1801. * 01721000
  1802. * FINISH STARTED DUMP LINE 01722000
  1803. * 01723000
  1804. FINLINE EQU * @V2A3765 01724000
  1805. ST R10,FINR10 SAVE RETURN REGISTER @V2A3765 01725000
  1806. LM R14,R15,LOOPSAVE GET LOOP REGISTERS @V2A3765 01726000
  1807. L R1,LOOPSAVE+8 @V2A3765 01727000
  1808. L R5,LOOPSAVE+16 GET CHARACTER POINTER @V2A3765 01728000
  1809. L R7,LOOPSAVE+20 @V2A3765 01729000
  1810. L R0,LOOPSAVE+12 GET RESIDUAL COUNT @V2A3765 01730000
  1811. SR R4,R4 @V2A3765 01731000
  1812. TM ECSWT,ENDCD CHECK FOR END CARD @VA09155 01731200
  1813. BNO LSTLNTST IF NOT END, TEST FOR LAST LINE @VA09155 01731400
  1814. OI LINESWT,LASTLINE INDICATE LAST LINE @VA09155 01731600
  1815. LSTLNTST EQU * @VA09155 01731800
  1816. TM LINESWT,LASTLINE @V2A3765 01732000
  1817. BZ CHKCNT BRANCH IF NOT @V2A3765 01733000
  1818. LR R10,R6 GET RECORD START @V2A3765 01734000
  1819. AR R10,R7 ADD REMAINING CHARS. @V2A3765 01735000
  1820. CR R10,R2 EXCEED RECORD LENGTH @V2A3765 01736000
  1821. BH CHKCNT BRANCH IF NOT @V2A3765 01737000
  1822. LR R2,R10 SET MAXIMUM @V2A3765 01738000
  1823. OI LINESWT,LASTREC INDICATE LAST RECORD @V2A3765 01739000
  1824. CHKCNT EQU * @V2A3765 01740000
  1825. LTR R0,R0 ANY COUNT? @V2A3765 01741000
  1826. BZ FINLIN1 BRANCH IF NOT @V2A3765 01742000
  1827. LH R10,FOUR COMPUTE NUMBER OF BYTES TO @V2A3765 01743000
  1828. SR R10,R0 BE INSERTED INTO BLOCK @V2A3765 01744000
  1829. TM LINESWT,LASTLINE IS THIS LAST LINE? @V2A3765 01745000
  1830. BZ CHKFILL BRANCH IF NOT @V2A3765 01746000
  1831. C R10,PACKADDS EXCEED REQUEST? @V2A3765 01747000
  1832. BL CHKFILL BRANCH IF NOT @V2A3765 01748000
  1833. L R10,PACKADDS GET REMAINDER @V2A3765 01749000
  1834. CHKFILL EQU * @V2A3765 01750000
  1835. CR R2,R10 WILL LENGTH FILL BLOCK? @V2A3765 01751000
  1836. BL FINLIN1 BRANCH IF NOT @V2A3765 01752000
  1837. NI OPSWT,255-VERINP REMOVE IN PROGRESS IND. @V2A3765 01753000
  1838. SLL R10,1 REMAINING TIMES 2 @V2A3765 01754000
  1839. TM LINESWT,DSLINE IS THIS DS SPACE? @V2A3765 01755000
  1840. BZ FINREAL BRANCH IF NOT @V2A3765 01756000
  1841. LA R14,2(R10,R14) ADD SPACES SKIPPED AND SPACING @V2A3765 01757000
  1842. SRL R10,1 @V2A3765 01758000
  1843. B FINBLOCK BRANCH IF YES @V2A3765 01759000
  1844. FINREAL EQU * @V2A3765 01760000
  1845. BCTR R10,0 @V2A3765 01761000
  1846. EX R0,PARTUNPK UNPACK REMAINING CHARS. @V2A3765 01762000
  1847. EX R0,PARTNC NORMALIZE @V2A3765 01763000
  1848. EX R0,PARTTR TRANSLATE @V2A3765 01764000
  1849. EX R10,MOVEUNPK MOVE REMAINING CHARS. @V2A3765 01765000
  1850. LA R10,1(,R10) RESTORE REMAINING BYTES @V2A3765 01766000
  1851. LA R14,2(R10,R14) UPDATE BLOCK POINTER @V2A3765 01767000
  1852. SRL R10,1 @V2A3765 01768000
  1853. AR R8,R10 INCREMENT RECORD POINTER @V2A3765 01769000
  1854. FINBLOCK EQU * @V2A3765 01770000
  1855. AR R6,R10 INCREMENT FILE POINTER @V2A3765 01771000
  1856. AR R4,R10 UPDATE CHARACTER POINTER @V2A3765 01772000
  1857. BCTR R15,0 DECREMENT FOR PREVIOUS BAL @V2A3765 01773000
  1858. LTR R15,R15 WAS IT END OF 4-BLOCK AREA? @V2A3765 01774000
  1859. BNZ FINLIN1 BRANCH IF NOT @V2A3765 01775000
  1860. LA R14,2(,R14) SET BLOCK SEPARATOR @V2A3765 01776000
  1861. B FINLIN2 @V2A3765 01777000
  1862. FINLIN EQU * @V2A3765 01778000
  1863. LA R15,4 @V2A3765 01779000
  1864. FINLIN1 EQU * @V2A3765 01780000
  1865. BAL R10,SETHXLN GO FINISH 4-BLOCK AREA @V2A3765 01781000
  1866. B FINEND ERROR RETURN @V2A3765 01782000
  1867. FINLIN2 EQU * @V2A3765 01783000
  1868. BCT R1,FINLIN DO SECOND HALF OR FALL THRU @V2A3765 01784000
  1869. L R10,PACKADDS CHECK IF ALL DONE @VA04197 01785000
  1870. S R10,PACKADDE @VA04197 01786000
  1871. BNM FINEND ALL DONE @VA04197 01787000
  1872. BAL R10,CHARCONV GO CONVERT NON-PRINT CHARS. @V2A3765 01788000
  1873. BAL R10,PRTLINE GO PRINT LINE @V2A3765 01789000
  1874. NI OPSWT,255-VERINP REMOVE IN PROGRESS IND. @V2A3765 01790000
  1875. L R10,FINR10 GET RETURN REGISTER @V2A3765 01791000
  1876. LA R10,4(,R10) INDICATE GOOD RETURN @V2A3765 01792000
  1877. B FINENDD @V2A3765 01793000
  1878. FINEND EQU * @V2A3765 01794000
  1879. TM LINESWT,LASTLINE IS THIS THE LAST LINE? @V2A3765 01795000
  1880. BZ FINENDR BRANCH IF NOT @V2A3765 01796000
  1881. NI OPSWT,255-VERINP REMOVE IN PROGRESS IND. @V2A3765 01797000
  1882. OI LINESWT,LSTLNPRT INDICATE LINE PRINTED @V2A3765 01798000
  1883. BAL R10,PRTLINE PRINT PARTIAL LINE @V2A3765 01799000
  1884. FINENDR EQU * @V2A3765 01800000
  1885. L R10,FINR10 GET RETURN ADDRESS @V2A3765 01801000
  1886. FINENDD EQU * @V2A3765 01802000
  1887. BR R10 @V2A3765 01803000
  1888. SPACE 3 01804000
  1889. FINR10 DS F @V2A3765 01805000
  1890. DS 0F @V2A3765 01806000
  1891. LOOPSAVE DC 6F'0' @V2A3765 01807000
  1892. PARTUNPK UNPK HEXUNPK(9),0(5,R8) @V2A3765 01808000
  1893. PARTNC NC HEXUNPK(8),NORMCON @V2A3765 01809000
  1894. PARTTR TR HEXUNPK(8),TRANTBL @V2A3765 01810000
  1895. MOVEUNPK MVC 0(0,R14),HEXUNPK @V2A3765 01811000
  1896. EJECT 1 01812000
  1897. * 01813000
  1898. * SET UP DUMP LINE 01814000
  1899. * 01815000
  1900. SETHXLN EQU * @V2A3765 01816000
  1901. LA R6,4(,R6) UPDATE FILE POINTER @V2A3765 01817000
  1902. LA R2,0(,R2) CLEAR HIGH ORDER BYTE @VA03364 01818000
  1903. CR R6,R2 REACH END OF RECORD? @V2A3765 01819000
  1904. BNH SETHXLN1 BRANCH IF NOT @V2A3765 01820000
  1905. LA R2,4(,R2) UPDATE REGISTER @V2A3765 01821000
  1906. SR R2,R6 GET RESIDUAL COUNT @V2A3765 01822000
  1907. LTR R2,R2 WAS THERE RESIDUAL? @V2A3765 01823000
  1908. BZ SETHXFIN BRANCH IF NOT @V2A3765 01824000
  1909. AR R4,R2 UPDATE CHARACTER POINTER @V2A3765 01825000
  1910. LR R6,R2 GET RESIDUAL @V2A3765 01826000
  1911. SLL R6,1 TIMES 2 @V2A3765 01827000
  1912. TM LINESWT,DSLINE IS THIS DS SPACE? @V2A3765 01828000
  1913. BO SETHXLNA BRANCH IF YES @V2A3765 01829000
  1914. BCTR R6,0 DECREMENT @V2A3765 01830000
  1915. EX R0,PARTUNPK UNPACK REMAINING CHARS. @V2A3765 01831000
  1916. EX R0,PARTNC NORMALIZE @V2A3765 01832000
  1917. EX R0,PARTTR TRANSLATE @V2A3765 01833000
  1918. EX R6,MOVEUNPK MOVE REMAINING CHARS. @V2A3765 01834000
  1919. LA R6,1(,R6) INCREMENT @V2A3765 01835000
  1920. SETHXLNA EQU * @V2A3765 01836000
  1921. AR R14,R6 ADD CHARACTERS MOVED @V2A3765 01837000
  1922. SETHXFIN EQU * @V2A3765 01838000
  1923. STM R14,R15,LOOPSAVE SAVE LOOP REGISTERS @V2A3765 01839000
  1924. LTR R4,R4 ANYTHING TO CONVERT? @V2A3765 01840000
  1925. BZ SETHXNPR BRANCH IF NOT @V2A3765 01841000
  1926. LR R0,R10 SAVE RETURN REGISTER @V2A3765 01842000
  1927. BAL R10,CHARCONV GO CONVERT PARTIAL LINE @V2A3765 01843000
  1928. LR R10,R0 GET RETURN REGISTER @V2A3765 01844000
  1929. LA R4,1(,R4) INCREMENT CHARACTER COUNT @V2A3765 01845000
  1930. AR R5,R4 UPDATE CHARACTER POINTER @V2A3765 01846000
  1931. SETHXNPR EQU * @V2A3765 01847000
  1932. TM OPSWT,VERINP IS THIS PARTIAL? @V2A3765 01848000
  1933. BZ SETHXNPS BRANCH IF NOT @V2A3765 01849000
  1934. L R0,LOOPSAVE+12 GET PREVIOUS PARTIAL @V2A3765 01850000
  1935. AR R2,R0 ADD CURRENT PARTIAL @V2A3765 01851000
  1936. SETHXNPS EQU * @V2A3765 01852000
  1937. ST R5,LOOPSAVE+16 @V2A3765 01853000
  1938. SR R7,R4 GET REMAINING COUNT @V2A3765 01854000
  1939. ST R7,LOOPSAVE+20 @V2A3765 01855000
  1940. STM R1,R2,LOOPSAVE+8 @V2A3765 01856000
  1941. OI OPSWT,VERINP INDICATE IN PROGRESS @V2A3765 01857000
  1942. TM ECSWT,ENDCD WAS THE END CARD FOUND @VA04591 01858000
  1943. BO SETHXLN1 @VA04591 01859000
  1944. B SETHXLND @V2A3765 01860000
  1945. SETHXLN1 EQU * @V2A3765 01861000
  1946. TM LINESWT,DSLINE IS THIS DS SPACE? @V2A3765 01862000
  1947. BO SETHXLN2 BRANCH IF YES @V2A3765 01863000
  1948. UNPK HEXUNPK(9),0(5,R8) CONVERT DATA @V2A3765 01864000
  1949. NC HEXUNPK(8),NORMCON NORMALIZE @V2A3765 01865000
  1950. TR HEXUNPK(8),TRANTBL TO HEXADECIMAL @V2A3765 01866000
  1951. MVC 0(8,R14),HEXUNPK MOVE TO PRINTER BUFFER @V2A3765 01867000
  1952. LA R8,4(,R8) POINT TO NEXT DATA @V2A3765 01868000
  1953. SETHXLN2 EQU * @V2A3765 01869000
  1954. LA R4,4(,R4) @V2A3765 01870000
  1955. LA R14,10(,R14) UPDATE POINTER @V2A3765 01871000
  1956. BCT R15,SETHXLN GO DO NEXT @V2A3765 01872000
  1957. LA R14,2(,R14) SPACE FOR SECOND HALF @V2A3765 01873000
  1958. LA R10,4(,R10) INDICATE GOOD RETURN @V2A3765 01874000
  1959. SETHXLND EQU * @V2A3765 01875000
  1960. BR R10 @V2A3765 01876000
  1961. SPACE 3 01877000
  1962. EJECT 1 01878000
  1963. * 01879000
  1964. * CONVERT NON-PRINTING CHARACTERS 01880000
  1965. * 01881000
  1966. CHARCONV EQU * @V2A3765 01882000
  1967. BCTR R4,0 @V2A3765 01883000
  1968. TM LINESWT,DSLINE IS THIS DS SPACE? @V2A3765 01884000
  1969. BO CHAREND BRANCH IF YES @V2A3765 01885000
  1970. L R15,R8SAVE GET FILE POINTER @V2A3765 01886000
  1971. EX R4,PRTMOVE MOVE CHARACTERS TO LINE @V2A3765 01887000
  1972. EX R4,PRTTRAN CONVERT NON-PRINTING CHARS. @V2A3765 01888000
  1973. LA R15,1(R4,R15) UPDATE FILE POINTER @V2A3765 01889000
  1974. ST R15,R8SAVE AND STORE IT @V2A3765 01890000
  1975. CHAREND EQU * @V2A3765 01891000
  1976. BR R10 @V2A3765 01892000
  1977. SPACE 3 01893000
  1978. PRTMOVE MVC 0(0,R5),0(R15) @V2A3765 01894000
  1979. PRTTRAN TR 0(0,R5),PRINTBL @V2A3765 01895000
  1980. EJECT 1 01896000
  1981. * 01897000
  1982. * ROUTINE TO PRINT DUMP CSECT NAME 01898000
  1983. * 01899000
  1984. PRTHDR EQU * @V2A3765 01900000
  1985. ST R10,PRTHDRR SAVE RETURN REGISTER @V2A3765 01901000
  1986. ST R1,PRTHDRR+4 @V2A3765 01902000
  1987. LA R14,PRTBUF+4 GET PRINT LINE @V2A3765 01903000
  1988. BAL R10,PRTLINE DO A BLANK LINE @VA04197 01904000
  1989. LA R14,PRTBUF+4 @VA04197 01905000
  1990. MVC 0(14,R14),CSCTHDRM MOVE IN MESSAGE @V2A3765 01906000
  1991. MVC 14(8,R14),CSECTNAM MOVE IN CSECT NAME @VA04197 01907000
  1992. MVC 24(5,R14),CSECTL MOVE IN LENGTH WORD @VA04197 01908000
  1993. L R15,PACKADDE GET END OF CSECT @VA04197 01909000
  1994. S R15,PACKDISP MINUS START OF CSECT @VA04197 01910000
  1995. ST R15,PACKSIZE PUT IT SOMEWHERE @VA04197 01911000
  1996. LA R15,PACKSIZE POINT AT IT @VA04197 01912000
  1997. UNPK HEXUNPK(9),0(5,R15) UNPACK ADDRESS @VA04197 01913000
  1998. NC HEXUNPK(8),NORMCON NORMALIZE @VA04197 01914000
  1999. TR HEXUNPK(8),TRANTBL AND TRANSLATE IT @VA04197 01915000
  2000. LA R1,7 @VA04197 01916000
  2001. LA R10,HEXUNPK @VA04197 01917000
  2002. CKZERO CLI 0(R10),X'F0' IS IT A LEADING ZERO @VA04197 01918000
  2003. BNE LNMOVE NO, GO MOVE LENGTH FIELD @VA04197 01919000
  2004. LA R10,1(0,R10) @VA04197 01920000
  2005. BCT R1,CKZERO CHECK SOME MORE @VA04197 01921000
  2006. LNMOVE EX R1,MOVELN MOVE THE LENGTH FIELD @VA04197 01922000
  2007. BAL R10,PRTLINE GO PRINT LINE @VA04197 01923000
  2008. L R1,PRTHDRR+4 @V2A3765 01924000
  2009. MVI PRTBUF+4,C' ' CLEAR LINE @V2A3765 01925000
  2010. MVC PRTBUF+5(40),PRTBUF+4 @VA04197 01926000
  2011. LA R14,CDBUF POINT TO LINE @VA04197 01927000
  2012. BAL R10,PRTLINE DO A BLANK LINE @VA04197 01928000
  2013. L R15,PACKADDS GET LINE ADDRESS @VA04197 01929000
  2014. LH R14,MASK TRANSFORM BOUNDRY @VA04197 01930000
  2015. TM SWT,PRINT FULL LINE @VA04197 01931000
  2016. BZ SMALLINE @VA04197 01932000
  2017. SLL R14,1 ADJUST MASK FOR FULL LINE @VA04197 01933000
  2018. SMALLINE NR R15,R14 @VA04197 01934000
  2019. ST R15,PACKADDS SET NEW LINE ADDRESS @VA04197 01935000
  2020. LA R14,CDBUF @VA04197 01936000
  2021. L R10,PRTHDRR RESTORE RETURN REGISTER @VA04197 01937000
  2022. L R1,PRTHDRR+4 @VA04197 01938000
  2023. OI ECSWT,NEWCT FORCE A CHECK OF START POSITION @VA04197 01939000
  2024. NI LINESWT,255-LASTREC-LASTLINE-LSTLNPRT @VA04197 01940000
  2025. NI DUPSWT,255-DUPFRST REMOVE FIRST INDICATOR @VA04197 01941000
  2026. NI LINESWT,255-FRSTLINE REMOVE FIRST LINE IND. @V2A3765 01942000
  2027. BR R10 @V2A3765 01943000
  2028. SPACE 3 01944000
  2029. MOVELN MVC 29(0,R14),0(R10) @VA04197 01945000
  2030. PACKSIZE DC F'0' @VA04197 01946000
  2031. MASK DC H'-16' @VA04197 01947000
  2032. PRTHDRR DS 2F @V2A3765 01948000
  2033. EJECT 1 01949000
  2034. * 01950000
  2035. * ROUTINE TO SPACE OVER DS 01951000
  2036. * 01952000
  2037. SETBLANK EQU * @V2A3765 01953000
  2038. ST R10,DSR10SAV SAVE RETURN REGISTER @V2A3765 01954000
  2039. ST R8,DSR8SAVE SAVE REAL RECORD POINTERS @V2A3765 01955000
  2040. ST R2,DSR2SAVE @V2A3765 01956000
  2041. STM R5,R6,DSR5SAVE @V2A3765 01957000
  2042. S R5,RECEND COMPUTE DS BYTES @V2A3765 01958000
  2043. OI LINESWT,DSLINE INDICATE DS @V2A3765 01959000
  2044. LR R2,R5 GET LENGTH OF DS @V2A3765 01960000
  2045. SR R6,R6 @V2A3765 01961000
  2046. TM OPSWT,VERINP IN PROGRESS? @V2A3765 01962000
  2047. BZ SETLINE BRANCH IF NOT @V2A3765 01963000
  2048. BAL R10,FINLINE GO FINISH LINE @V2A3765 01964000
  2049. B SETPOINT GO GET REAL RECORD POINTERS @V2A3765 01965000
  2050. SETLINE EQU * @V2A3765 01966000
  2051. BAL R10,NEWLIN GO PRINT LINES @V2A3765 01967000
  2052. SETPOINT EQU * @V2A3765 01968000
  2053. L R8,DSR8SAVE LOAD REAL RECORD POINTERS @V2A3765 01969000
  2054. LM R5,R6,DSR5SAVE @V2A3765 01970000
  2055. L R2,DSR2SAVE @V2A3765 01971000
  2056. L R10,DSR10SAV @V2A3765 01972000
  2057. NI LINESWT,255-DSLINE REMOVE DS INDICATOR @V2A3765 01973000
  2058. BR R10 @V2A3765 01974000
  2059. SPACE 3 01975000
  2060. DSR2SAVE DS F @V2A3765 01976000
  2061. DSR5SAVE DS 2F @V2A3765 01977000
  2062. DSR8SAVE DS F @V2A3765 01978000
  2063. DSR10SAV DS F @V2A3765 01979000
  2064. EJECT 1 01980000
  2065. * 01981000
  2066. * READ CESD RECORD OF MEMBER 01982000
  2067. * 01983000
  2068. READCESD EQU * @V2A3765 01984000
  2069. XC ENDCNT,ENDCNT CLEAR NUMBER OF END CARDS @VA07108 01985000
  2070. SR R7,R7 CLEAR R7 @V200809 01986000
  2071. SR R8,R8 @V2A3765 01987000
  2072. B RDCESD1 @V2A3765 01988000
  2073. RDCESD EQU * @V200809 01989000
  2074. LH R10,RECNUM GET RECORD NUMBER @V2A3765 01990000
  2075. LA R10,1(,R10) POINT TO NEXT RECORD @V2A3765 01991000
  2076. STH R10,RECNUM AND STORE IT @V2A3765 01992000
  2077. RDCESD1 EQU * @V2A3765 01993000
  2078. BAL R10,RDLIB GO READ CESD @V200809 01994000
  2079. LA R3,LIBRCD SET RECORD BASE @V200809 01995000
  2080. TM SWT,ZAPT IS THIS TXTLIB? @V2A3765 01996000
  2081. BZ LDCESD BRANCH IF NOT @V2A3765 01997000
  2082. BAL R10,TXTESD GO LOCATE CSECT @V2A3765 01998000
  2083. B CSECTFND FOUND IT @V2A3765 01999000
  2084. B RDCESD READ ANOTHER RECORD @V2A3765 02000000
  2085. B NOCESD NO CSECT @V2A3765 02001000
  2086. LDCESD EQU * @V2A3765 02002000
  2087. CLI 0(R3),SYMRCD IS THIS A 'SYS' RECORD? @V2A3765 02003000
  2088. BE RDCESD YES, SKIP IT @V200809 02004000
  2089. CLI 0(R3),CESDRCD NO, IS THIS A CESD RECORD? @V2A3765 02005000
  2090. BNE NOCESD NO @V200809 02006000
  2091. SPACE 1 02007000
  2092. * 02008000
  2093. * SEARCH CESD RECORD FOR ESD ENTRY WITH CSECT-NAME 02009000
  2094. * 02010000
  2095. LH R2,6(,R3) GET ESD DATA LENGTH @V200809 02011000
  2096. LA R2,8(R2) ADD 8 BYTE HEADER @V200809 02012000
  2097. LA R4,8 @V200809 02013000
  2098. SEARCHSD EQU * @V200809 02014000
  2099. LA R7,1(R7) INCREMENT ESD COUNT @V200809 02015000
  2100. LA R5,0(R4,R3) R5 = FIRST ESD ITEM @V200809 02016000
  2101. TM 8(R5),ESDRCD IS THIS AN ESD? @V2A3765 02017000
  2102. BNZ INCCESD NO, KEEP SEARCHING @V200809 02018000
  2103. TM SWT,FSTCSECT+ALLCSECT ALL CSECTS?(FIRST TIME) @V2A3765 02019000
  2104. BO CSECTALL BRANCH IF YES @V2A3765 02020000
  2105. TM SWT,FSTCSECT ARE WE LOOKING FOR FIRST ESD?@V200809 02021000
  2106. BO CSECTFND YES @V200809 02022000
  2107. CLC 0(8,R5),CSECTNAM IS THIS THE CSECT ? @V200809 02023000
  2108. BNE NXTESD BRANCH IF NOT @V2A3765 02024000
  2109. TM SWT,ALLCSECT ALL CSECTS? @V2A3765 02025000
  2110. BZ CSECTFND BRANCH IF NOT, FOUND @V2A3765 02026000
  2111. LR R8,R10 INDICATE CSECT FOUND @V2A3765 02027000
  2112. B INCCESD NEED NEXT CSECT @V2A3765 02028000
  2113. NXTESD EQU * @V2A3765 02029000
  2114. LTR R8,R8 NEXT CSECT FOR ALL? @V2A3765 02030000
  2115. BNZ CSECTALL BRANCH IF YES @V2A3765 02031000
  2116. INCCESD EQU * @V200809 02032000
  2117. AH R4,SIXTEEN R4 = HEADER + ESD DATA LENGTH@V200809 02033000
  2118. CR R4,R2 END OF CESD RECORD @V200809 02034000
  2119. BE RDCESD YES, GO READ NEXT @V200809 02035000
  2120. B SEARCHSD NO, KEEP SEARCHING @V200809 02036000
  2121. SPACE 2 02037000
  2122. NOCESD EQU * @V200809 02038000
  2123. TM SWT,ALLCSECT LOOKING FOR ALL CSECTS? @V2A3765 02039000
  2124. BZ NOCESD2 BRANCH IF NOT @V2A3765 02040000
  2125. OI LINESWT,FINCSECT INDICATE FINISHED @V2A3765 02041000
  2126. B CESDEND @V2A3765 02042000
  2127. NOCESD2 EQU * @V2A3765 02043000
  2128. MVI ERCODE,ERR04 SET ERROR CODE @V2A3765 02044000
  2129. MVC CSTNTFTY(8),=CL8'MEMBER' MOVE IN WORD MEMBER @VA03621 02045000
  2130. MVC CSTNTFDM(8),MEMNAME SET MEMBER-NAME INTO MESSAGE@V200809 02046000
  2131. LA R8,CSTNTFDL @V200809 02047000
  2132. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 02048000
  2133. NI SWT,255-FSTCSECT REMOVE FIRST CSECT INDICATOR @V2A3765 02049000
  2134. B CESDEND @V2A3765 02050000
  2135. CSECTALL EQU * @V2A3765 02051000
  2136. MVC CSECTNAM,0(R5) MOVE IN NAME @V2A3765 02052000
  2137. NI SWT,255-FSTCSECT REMOVE FIRST INDICATOR @V2A3765 02053000
  2138. OI LINESWT,FRSTLINE SET FOR HEADER @V2A3765 02054000
  2139. SPACE 2 02055000
  2140. CSECTFND EQU * @V200809 02056000
  2141. ST R7,CSECTID SAVE ESD ID COUNT @V200809 02057000
  2142. MVC ESDADD+1(3),9(R5) SAVE ESD ADDRESS @V200809 02058000
  2143. MVC ESDLEN+1(3),13(R5) SAVE ESD LENGTH @V200809 02059000
  2144. TM SWT,ZAPT TXTLIB SPECIFIED? @VA09238 02059100
  2145. BZ CESDEND NO, BYPASS @VA09238 02059180
  2146. BCT R7,CESDEND EXAMINE FIRST CSECT ONLY @VA09238 02059260
  2147. ICM R10,7,ESDLEN+1 GET LENGTH FIELD @VA09238 02059340
  2148. BNZ CESDEND BRANCH IF LENGTH IS FOUND @VA09238 02059420
  2149. SR R7,R7 CLEAR REGISTER @VA09238 02059500
  2150. ICM R7,3,RECNUM REMEMBER RECORD NUMBER @VA09238 02059580
  2151. CESDLOOP EQU * @VA09238 02059660
  2152. SR R10,R10 CLEAR REGISTER @VA09238 02059740
  2153. ICM R10,3,RECNUM INITIALIZE FOR LOOP @VA09238 02059820
  2154. LA R10,1(R10) NEXT RECORD @VA09238 02059900
  2155. STH R10,RECNUM SAVE RECORD NUMBER @VA09238 02059980
  2156. BAL R10,RDLIB READ THE RECORD @VA09238 02060060
  2157. CLC ENDREC,LIBRCD END OF TXTLIB MEMBER? @VA09238 02060140
  2158. BE CESDEND2 IF SO, NO END CARD PRESENT @VA09238 02060220
  2159. CLC ENDRECA,LIBRCD SEARCH FOR END CARD @VA09238 02060300
  2160. BNE CESDLOOP IF NOT FOUND, REPEAT LOOP @VA09238 02060380
  2161. CLC LIBRCD+28(4),BLANKS LENGTH FIELD FOUND? @VA09238 02060460
  2162. BE CESDEND2 NO, FIELD IS BLANK @VA09238 02060540
  2163. MVC ESDLEN+1(3),LIBRCD+29 MOVE TO ESD LENGTH FIELD @VA09238 02060620
  2164. CESDEND2 EQU * @VA09238 02060700
  2165. STH R7,RECNUM RESTORE RECORD NUMBER @VA09238 02060780
  2166. CESDEND EQU * @VA09238 02060860
  2167. B MEMEND @V2A3765 02061000
  2168. EJECT 1 02062000
  2169. * 02063000
  2170. * FIND TXTLIB CSECT 02064000
  2171. * 02065000
  2172. TXTESD EQU * @V2A3765 02066000
  2173. USING ESD,R3 @V2A3765 02067000
  2174. CLC ESDREC,RECTYPE IS THIS AN ESD? @V2A3765 02068000
  2175. BE TXTSD BRANCH IF YES @V2A3765 02069000
  2176. CLC ENDRECA,RECTYPE IS THIS AN END CARD? @VA07108 02070000
  2177. BNE TXTFIN BRANCH IF NOT @VA07108 02071000
  2178. SR R7,R7 CLEAR THE CSECTID COUNTER @VA07108 02072000
  2179. LH R15,ENDCNT GET CURRENT SAVED END COUNT @VA07108 02073000
  2180. LA R15,1(,R15) INCREMENT BY ONE @VA07108 02074000
  2181. STH R15,ENDCNT AND SAVE NEW COUNT @VA07108 02075000
  2182. B NXTTXT GO READ NEXT CARD @VA07108 02076000
  2183. TXTFIN EQU * @VA07108 02077000
  2184. CLC ENDREC,RECTYPE IS THIS AN END? @V2A3765 02078000
  2185. BNE NXTTXT BRANCH IF NOT @V2A3765 02079000
  2186. LA R10,4(,R10) YES, INDICATE ERROR @V2A3765 02080000
  2187. B NXTTXT @V2A3765 02081000
  2188. TXTSD EQU * @V2A3765 02082000
  2189. CLC ESDCNT,BLANKS DOES THIS CARD HAVE ENTRIES? @VA07108 02083000
  2190. BE NXTTXT BRANCH IF NOT, GO GET NEXT @VA07108 02084000
  2191. USING ESDDAT,R5 @V2A3765 02085000
  2192. LA R5,ESDHDRL(,R3) POINT TO ESD DATA ITEM @V2A3765 02086000
  2193. LH R15,ESDNUM GET NUMBER OF ITEMS @V2A3765 02087000
  2194. SRL R15,4 DIVIDE BY 16 @V2A3765 02088000
  2195. ESDLOOP EQU * @V2A3765 02089000
  2196. CLI ESDTYPE,XONE IS ESD A LABEL DEFINITION? @VA10838 02091000
  2197. BE ESDNXT YES, ITEM NOT COUNTED @VA10838 02093000
  2198. LA R7,1(0,R7) UPDATE ESD ITEM NUMBER @VA04197 02095000
  2199. CLI ESDTYPE,XZERO IS THIS A SECTION DEFINITION?@VA07108 02096000
  2200. BNE ESDNXT BRANCH IF NOT @VA07108 02097000
  2201. TM SWT,FSTCSECT+ALLCSECT ALL CSECTS?(FIRST TIME) @V2A3765 02098000
  2202. BO TXTALL BRANCH IF YES @V2A3765 02099000
  2203. TM SWT,FSTCSECT LOOKING FOR FIRST CSECT? @V2A3765 02100000
  2204. BO TXTRTN BRANCH IF YES @V2A3765 02101000
  2205. CLC CSECTNAM,ESDNAME IS THIS THE CSECT? @V2A3765 02102000
  2206. BNE ESDALL BRANCH IF NOT @V2A3765 02103000
  2207. TM SWT,ALLCSECT ALL CSECTS? @V2A3765 02104000
  2208. BZ TXTRTN BRANCH IF NOT, FOUND @V2A3765 02105000
  2209. CLC ENDMET,ENDCNT HAS THIS BEEN PROCESSED? @VA07318 02106000
  2210. BH ESDNXT BRANCH IF YES @VA07318 02107000
  2211. MVC ENDMET,ENDCNT SET NEW COUNT @VA07318 02108000
  2212. LR R8,R10 INDICATE CSECT FOUND @V2A3765 02109000
  2213. B ESDNXT NEED NEXT CSECT @V2A3765 02110000
  2214. ESDALL EQU * @V2A3765 02111000
  2215. LTR R8,R8 NEXT CSECT FOR ALL? @V2A3765 02112000
  2216. BNZ TXTALL BRANCH IF YES @V2A3765 02113000
  2217. ESDNXT EQU * @V2A3765 02114000
  2218. LA R5,ESDENDL(,R5) POINT TO NEXT ITEM @V2A3765 02115000
  2219. BCT R15,ESDLOOP LOOK AT NEXT ENTRY @V2A3765 02116000
  2220. B NXTTXT @V2A3765 02117000
  2221. TXTALL EQU * @V2A3765 02118000
  2222. MVC CSECTNAM,ESDNAME MOVE IN NAME @V2A3765 02119000
  2223. NI SWT,255-FSTCSECT REMOVE FIRST INDICATOR @V2A3765 02120000
  2224. OI LINESWT,FRSTLINE SET FOR HEADER @V2A3765 02121000
  2225. BR R10 @VA04591 02122000
  2226. NXTTXT EQU * @V2A3765 02123000
  2227. LA R10,4(,R10) INDICATE READ NEXT RECORD @V2A3765 02124000
  2228. TXTRTN EQU * @V2A3765 02125000
  2229. BR R10 @V2A3765 02126000
  2230. DROP R3,R5 @V2A3765 02127000
  2231. EJECT 02128000
  2232. * 02129000
  2233. * READ ZAP FILE SEARCHING FOR RECORD TO BE DUMPED, 02130000
  2234. * VERIFIED, OR REPLACED 02131000
  2235. * 02132000
  2236. RDTXT EQU * @V200809 02133000
  2237. ST R10,RDTXTSAV SAVE RETURN REGISTER @V2A3765 02134000
  2238. TM OPSWT,DUMPHIT ARE WE DUMPING? @VA07318 02135000
  2239. BO PRERDTXT BRANCH IF YES, NO CLEAR @VA07318 02136000
  2240. XC ENDMET,ENDMET CLEAR ENDS READ COUNTER @VA07108 02137000
  2241. PRERDTXT EQU * @V2A3765 02138000
  2242. LA R15,1 R15=1 TO SET/INCREMENT REC. NO. @VM03238 02139000
  2243. TM SWT,ZAPFM PERCHANCE A FIXED MODULE ? @VM03238 02140000
  2244. BO RDTXT0 BR. IF YES - KEEP COUNT = 1 @VM03238 02141000
  2245. AH R15,RECNUM NO - ADD OLD RECORD NUMBER @VM03238 02142000
  2246. RDTXT0 STH R15,RECNUM STORE NEW RECORD NUMBER @VM03238 02143000
  2247. BAL R10,RDLIB READ CONTROL RECORD FROM LIB @V200809 02144000
  2248. TM SWT,ZAPM+ZAPFM IS THIS MODULE? @VM03228 02145000
  2249. BNZ SETMOD BRANCH IF YES @VM03228 02146000
  2250. LA R3,LIBRCD GET RECORD READ ADDR. @V200809 02147000
  2251. SR R2,R2 CLEAR R2 @V200809 02148000
  2252. TM OPSWT,VERINP IS THIS THE MIDDLE OF VER OR REP@V200809 02149000
  2253. BO RDTXT1 YES @V200809 02150000
  2254. SR R1,R1 @V200809 02151000
  2255. SR R4,R4 @V200809 02152000
  2256. SR R5,R5 @V200809 02153000
  2257. SR R6,R6 @V200809 02154000
  2258. SR R8,R8 @V200809 02155000
  2259. RDTXT1 EQU * @V200809 02156000
  2260. TM SWT,ZAPT IS THIS TXTLIB? @V2A3765 02157000
  2261. BZ RDTXT1A BRANCH IF NOT @V2A3765 02158000
  2262. LA R15,RDTXTLIB POINT TO ROUTINE @V2A3765 02159000
  2263. B RDTXT1B @V2A3765 02160000
  2264. RDTXT1A EQU * @V2A3765 02161000
  2265. LA R15,RDLDLIB POINT TO ROUTINE @V2A3765 02162000
  2266. RDTXT1B EQU * @V2A3765 02163000
  2267. BALR R10,R15 GO ANALYZE @V2A3765 02164000
  2268. B CHKVER GOOD RECORD @V2A3765 02165000
  2269. B PRERDTXT READ NEXT RECORD @V2A3765 02166000
  2270. B RDTXEND ERROR @V2A3765 02167000
  2271. SETMOD EQU * @V2A3765 02168000
  2272. SR R5,R5 CLEAR "STARTING ADDRESS", @VM03238 02169000
  2273. TM SWT,ZAPFM PERCHANCE A FIXED MODULE ? @VM03238 02170000
  2274. BO SETMOD2 BRANCH IF YES (R5 ALL SET). @VM03238 02171000
  2275. L R15,MODMAX GET RECORD SIZE @V2A3765 02172000
  2276. LH R14,RECNUM AND NUMBER OF RECORDS @V2A3765 02173000
  2277. BCTR R14,0 REMOVE HEADER RECORD @V2A3765 02174000
  2278. BCTR R14,0 POINT TO START OF RECORD @V2A3765 02175000
  2279. MR R14,R14 GET NUMBER OF BYTES @V2A3765 02176000
  2280. LR R5,R15 GET STARTING ADDRESS @V2A3765 02177000
  2281. * OF THIS RECORD 02178000
  2282. SETMOD2 L R2,BYTESRD POINT TO LAST BYTE @VM03238 02179000
  2283. CHKVER EQU * @V2A3765 02180000
  2284. TM OPSWT,VERINP MIDDLE OF VER OR REP ? @V200809 02181000
  2285. BNO RDTXT4 NO @V200809 02182000
  2286. SR R6,R6 YES, START A BEGINNING OF REC@V200809 02183000
  2287. B GETVADD DON'T HAVE TO LOAD REGS @V200809 02184000
  2288. RDTXT4 EQU * @V200809 02185000
  2289. L R6,PACKDISP LOAD VER DISP ADDR @V200809 02186000
  2290. SR R6,R5 SUBSTRACT TXT RCD START @V200809 02187000
  2291. TM SWT,ZAPM IS THIS A MODULE @VA04197 02188000
  2292. BZ RDTXT5 NO @VA04197 02189000
  2293. ST R6,RECENDA SAVE START ADDRESS @VA04197 02190000
  2294. RDTXT5 EQU * @VA04197 02191000
  2295. SR R7,R7 CLEAR REGISTER @V2A3765 02192000
  2296. IC R7,DATALEN LOAD VER DATA LEN @V2A3765 02193000
  2297. GETVADD EQU * @V2A3765 02194000
  2298. LA R4,PACKDAED LOAD END VER DATA ADDR @V2A3765 02195000
  2299. SR R4,R7 GET START OF VER DATA @V2A3765 02196000
  2300. LA R8,0(R6,R3) LOAD TXT VER ADDR. @V200809 02197000
  2301. BAL R10,VERCHK GO DO OPERATION @V2A3765 02198000
  2302. TM OPSWT,VERINP VERIFY STILL IN PROGRESS? @V2A3765 02199000
  2303. BO PRERDTXT BRANCH IF YES @V2A3765 02200000
  2304. RDTXEND EQU * @V2A3765 02201000
  2305. NI LINESWT,255-ESDFND REMOVE FOUND IND. @V2A3765 02202000
  2306. L R10,RDTXTSAV GET RETURN ADDRESS @V2A3765 02203000
  2307. BR R10 @V2A3765 02204000
  2308. SPACE 3 02205000
  2309. RDTXTSAV DS F @V2A3765 02206000
  2310. EJECT 1 02207000
  2311. VERCHK EQU * @V2A3765 02208000
  2312. ST R10,VERSAVE SAVE REGISTER @V2A3765 02209000
  2313. TM OPSWT,DUMPHIT IS THIS DUMP? @V2A3765 02210000
  2314. BZ VERLOOP BRANCH IF NOT @V2A3765 02211000
  2315. BAL R10,PRTDUMP GO PRINT DUMP @V2A3765 02212000
  2316. B VEREND @V2A3765 02213000
  2317. VERLOOP EQU * @V200809 02214000
  2318. CR R2,R6 END OF THIS RCD? @V200809 02215000
  2319. BE VER2RCD YES @V200809 02216000
  2320. TM OPSWT,REPOP IS THIS A REP OPERATION? @V200809 02217000
  2321. BNO VERIFY1 NO, DO VERIFY @V200809 02218000
  2322. MVC 0(1,R8),0(R4) YES MOVE IN REP CODE @V200809 02219000
  2323. B VERIFY2 @V200809 02220000
  2324. VERIFY1 EQU * @V200809 02221000
  2325. CLC 0(1,R8),0(R4) VERIFY ONE BYTE AT A TIME @V200809 02222000
  2326. BE VERIFY2 BRANCH IF GOOD @V2A3765 02223000
  2327. LA R8,VERJMSGL GET MESSAGE ADDRESS @V2A3765 02224000
  2328. BAL R10,INVEREP2 INDICATE VERIFY FAILED @V2A3765 02225000
  2329. NI OPSWT,255-VERINP @V2A3765 02226000
  2330. B VEREND @V2A3765 02227000
  2331. VERIFY2 EQU * @V200809 02228000
  2332. LA R8,1(R8) INCREMENT @V200809 02229000
  2333. LA R4,1(R4) @V200809 02230000
  2334. LA R6,1(R6) @V200809 02231000
  2335. BCT R7,VERLOOP @V2A3765 02232000
  2336. NI OPSWT,255-VERINP TURN OFF NERIFY IN PROGRESS @V200809 02233000
  2337. TM OPSWT,REPOP IS THIS A REP OPERATION? @V200809 02234000
  2338. BNO VEREND BRANCH IF NOT @V2A3765 02235000
  2339. BAL R10,WRLIB YES, GO REWRITE LIB RECORD @V200809 02236000
  2340. B VEREND @V2A3765 02237000
  2341. VER2RCD EQU * @V200809 02238000
  2342. OI OPSWT,VERINP INDICATE VERIFY IN PROCESS @V200809 02239000
  2343. AR R2,R5 GET END OF RECORD @V2A3765 02240000
  2344. ST R2,RECEND AND STORE IT @V2A3765 02241000
  2345. TM OPSWT,REPOP IS THIS A REP OPERATION @V200809 02242000
  2346. BNO VEREND BRANCH IF NOT @V2A3765 02243000
  2347. BAL R10,WRLIB YES, REWRITE THIS RECORD @V200809 02244000
  2348. VEREND EQU * @V2A3765 02245000
  2349. L R10,VERSAVE GET RETURN ADDRESS @V2A3765 02246000
  2350. BR R10 @V2A3765 02247000
  2351. SPACE 3 02248000
  2352. VERSAVE DS F @V2A3765 02249000
  2353. EJECT 1 02250000
  2354. * 02251000
  2355. * ANALYZE TXTLIB RECORDS 02252000
  2356. * 02253000
  2357. USING TXTDAT,R3 @V2A3765 02254000
  2358. RDTXTLIB EQU * @V2A3765 02255000
  2359. ST R10,RDTXTR10 SAVE RETURN REGISTER @V2A3765 02256000
  2360. CLC TXTTYPE,ENDRECA IS IT AN END CARD? @VA04591 02257000
  2361. BE READEND YES, GO CLOSE OFF @VA04591 02258000
  2362. CLC TXTTYPE,TXTREC IS THIS A TEXT RECORD @V2A3765 02259000
  2363. BNE RDTXTNXT BRANCH IF NOT @V2A3765 02260000
  2364. TM OPSWT,DUMPHIT IS THIS A DUMP? @VA07108 02261000
  2365. BO CHKCSCTD BRANCH IF YES, NO ENDS @VA07108 02262000
  2366. CLC ENDMET,ENDCNT IS THIS THE END WANTED? @VA07108 02263000
  2367. BNE RDTXTNXT BRANCH IF NOT @VA07108 02264000
  2368. CHKCSCTD EQU * @VA07108 02265000
  2369. CLC TXTID,CSECTID+2 IS THIS THE PROPER CSECT? @V2A3765 02266000
  2370. BE RDTXTFND BRANCH IF YES @V2A3765 02267000
  2371. B RDTXTNXT NO, SKIP OVER THIS CSECT @VA04591 02268000
  2372. READEND EQU * @VA04591 02269000
  2373. TM OPSWT,DUMPHIT IS THIS A DUMP? @VA07108 02270000
  2374. BO READENDA BRANCH IF YES @VA07108 02271000
  2375. LH R15,ENDMET GET COUNT OF ENDS READ @VA07108 02272000
  2376. LA R15,1(,R15) INCREMENT BY ONE @VA07108 02273000
  2377. STH R15,ENDMET AND SAVE NEW COUNT @VA07108 02274000
  2378. CLC ENDMET,ENDCNT IS THIS THE END WANTED? @VA07108 02275000
  2379. BNH RDTXTNXT BRANCH IF NOT GREATER @VA07108 02276000
  2380. B RDTXTERR ERROR IF GREATER @VA07108 02277000
  2381. READENDA EQU * @VA07108 02278000
  2382. OI ECSWT,ENDCD INDICATE END CARD FOUND @VA04591 02279000
  2383. NI ECSWT,255-EOCSORG REMOVE SETTING @VA09155 02279500
  2384. L R6,ESDLEN GET ESD LENGTH @V2A3765 02280000
  2385. A R6,ESDADD ADD THE START ADDRESS @V2A3765 02281000
  2386. LR R5,R6 PUT INTO R5 @V2A3765 02282000
  2387. SR R6,R6 @V2A3765 02283000
  2388. OI LINESWT,DSLINE SET DSLINE @V2A3765 02284000
  2389. TM OPSWT,VERINP WORKING ON A LINE @VA04591 02285000
  2390. BZ NOFILL NO, JUST FINISH UP @VA04591 02286000
  2391. BAL R10,FINLINE GO FINISH THIS LINE @VA04591 02287000
  2392. B RSETDS NEW LINE NOT REQUIRED @VA04591 02288000
  2393. NOFILL EQU * @VA04591 02289000
  2394. BAL R10,NEWLIN GO PRINT DS @V2A3765 02290000
  2395. RSETDS NI OPSWT,255-VERINP RESET MIDDLE LINE INDICATOR @VA04591 02291000
  2396. NI LINESWT,255-DSLINE REMOVE DS @V2A3765 02292000
  2397. B RDTXTER1 @V2A3765 02293000
  2398. RDTXTFND EQU * @V2A3765 02294000
  2399. OI LINESWT,ESDFND INDICATE ESD FOUND @V2A3765 02295000
  2400. SR R6,R6 CLEAR THE REGISTER @V2A3765 02296000
  2401. ICM R6,B'0111',TXTADDR GET TEXT ADDRESS @V2A3765 02297000
  2402. ST R6,RECENDA SAVE START DISPLACEMENT @VA04197 02298000
  2403. LR R5,R6 AND SAVE IT @V2A3765 02299000
  2404. TM OPSWT,VERINP MIDDLE OF VER OR REP? @V2A3765 02300000
  2405. BO RDTXTLB2 BRANCH IF YES @V2A3765 02301000
  2406. C R6,PACKDISP TEXT ADDR < VER DISP? @V2A3765 02302000
  2407. BNH RDTXTLB3 BRANCH IF YES @V2A3765 02303000
  2408. TM OPSWT,DUMPHIT IS THIS DUMP? @V2A3765 02304000
  2409. BZ RDTXTERR BRANCH IF NOT @V2A3765 02305000
  2410. XC RECEND,RECEND CLEAR RECEND @V2A3765 02306000
  2411. S R5,PACKDISP GET UNDEFINED LENGTH @V2A3765 02307000
  2412. BAL R10,SETBLANK GO PRINT DS @V2A3765 02308000
  2413. LR R5,R6 RESTORE R5 @V2A3765 02309000
  2414. ST R5,RECEND SET RECORD END @V2A3765 02310000
  2415. TM LINESWT,LSTLNPRT ANY RECORD LEFT? @V2A3765 02311000
  2416. BZ RDTXTLB3 BRANCH IF YES @V2A3765 02312000
  2417. NI LINESWT,255-LSTLNPRT REMOVE LAST LINE IND. @V2A3765 02313000
  2418. B RDTXTER1 @V2A3765 02314000
  2419. RDTXTERR EQU * @V2A3765 02315000
  2420. LA R8,INVADMGL POINT TO ERROR MESSAGE @V2A3765 02316000
  2421. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 02317000
  2422. RDTXTER1 EQU * @V2A3765 02318000
  2423. L R10,RDTXTR10 GET RETURN REGISTER @V2A3765 02319000
  2424. LA R10,8(,R10) SET ERROR RETURN @V2A3765 02320000
  2425. B RDTXTRET @V2A3765 02321000
  2426. RDTXTLB2 EQU * @V2A3765 02322000
  2427. TM OPSWT,DUMPHIT IS THIS DUMP? @V2A3765 02323000
  2428. BO RDTXTLB3 BRANCH IF YES @V2A3765 02324000
  2429. C R6,RECEND IS THIS THE NEXT BYTE? @V2A3765 02325000
  2430. BH RDTXTERR BRANCH IF NOT @V2A3765 02326000
  2431. RDTXTLB3 EQU * @V2A3765 02327000
  2432. LH R2,TXTBYTES GET NUMBER OF TEXT BYTES @V2A3765 02328000
  2433. AR R6,R2 CALC END OF TEXT RECORD @V2A3765 02329000
  2434. LA R3,TXTINFO POINT TO TEXT DATA @V2A3765 02330000
  2435. C R6,PACKDISP END ADDR > DISP? @V2A3765 02331000
  2436. BH RDTXTEND BRANCH IF YES @V2A3765 02332000
  2437. RDTXTNXT EQU * @V2A3765 02333000
  2438. L R10,RDTXTR10 GET RETURN REGISTER @V2A3765 02334000
  2439. LA R10,4(,R10) INDICATE READ NEXT RECORD @V2A3765 02335000
  2440. B RDTXTRET @V2A3765 02336000
  2441. RDTXTEND EQU * @V2A3765 02337000
  2442. L R10,RDTXTR10 GET RETURN REGISTER @V2A3765 02338000
  2443. RDTXTRET EQU * @V2A3765 02339000
  2444. BR R10 @V2A3765 02340000
  2445. SPACE 3 02341000
  2446. RDTXTR10 DS F @V2A3765 02342000
  2447. DROP R3 @V2A3765 02343000
  2448. EJECT 1 02344000
  2449. * 02345000
  2450. * ANALYZE LOADLIB RECORDS 02346000
  2451. * 02347000
  2452. RDLDLIB EQU * @V2A3765 02348000
  2453. ST R10,RDLDR10 SAVE RETURN REGISTER @V2A3765 02349000
  2454. TM 0(R3),SEGEND END OF SEGMENT? @V2A3765 02350000
  2455. BZ RDLDCR BRANCH IF NOT @V2A3765 02351000
  2456. TM 0(R3),FINRCD ONE MORE TEXT RECORD? @V2A3765 02352000
  2457. BZ RDLDNXT BRANCH IF NOT @V2A3765 02353000
  2458. RDLDCR EQU * @V2A3765 02354000
  2459. TM 0(R3),CRRCD RLD OR CONT. RECORD? @V2A3765 02355000
  2460. BZ RDLDNXT BRANCH IF NEITHER @V2A3765 02356000
  2461. BO RDLDCHK BOTH, CHECK IT @V2A3765 02357000
  2462. TM 0(R3),RLDRCD JUST RLD? @V2A3765 02358000
  2463. BO RDLDNXT BRANCH IF NEXT @V2A3765 02359000
  2464. RDLDCHK EQU * @V2A3765 02360000
  2465. LH R1,4(,R3) GET CONTROL DATA @V2A3765 02361000
  2466. LH R4,6(,R3) AND DATA LENGTH @V2A3765 02362000
  2467. RDLDLOOP EQU * @V2A3765 02363000
  2468. LH R5,16(R4,R3) GET ESDID @V2A3765 02364000
  2469. ST R2,RECENDA SAVE INCASE NO ADDRESS @VA04197 02365000
  2470. AH R2,18(R4,R3) ADD LENGTH @V2A3765 02366000
  2471. CH R5,CSECTID+2 IS THIS CORRECT ESD ID? @V2A3765 02367000
  2472. BE RDLDESD BRANCH IF YES @V2A3765 02368000
  2473. TM LINESWT,ESDFND WAS ESD FOUND? @V2A3765 02369000
  2474. BO RDLDDS BRANCH IF YES @V2A3765 02370000
  2475. SH R1,FOUR DECREMENT CONTROL COUNT @V2A3765 02371000
  2476. LTR R1,R1 ANY MORE? @V2A3765 02372000
  2477. BZ RDLDSKIP BRANCH IF NOT @V2A3765 02373000
  2478. LA R4,4(,R4) INCREMENT @V2A3765 02374000
  2479. B RDLDLOOP @V2A3765 02375000
  2480. RDLDDS EQU * @V2A3765 02376000
  2481. TM OPSWT,DUMPHIT DOING DUMP? @V2A3765 02377000
  2482. BZ RDLDERR BRANCH IF NOT, ERROR @V2A3765 02378000
  2483. L R6,ESDLEN GET LENGTH OF ESD @V2A3765 02379000
  2484. A R6,ESDADD ADD THE START ADDRESS @V2A3765 02380000
  2485. LR R5,R6 PUT INTO R5 @V2A3765 02381000
  2486. TM OPSWT,VERINP IN PROGRESS? @V2A3765 02382000
  2487. BO RDLDESD1 BRANCH IF YES @V2A3765 02383000
  2488. LR R2,R5 GET LENGTH OF DS @V2A3765 02384000
  2489. SR R6,R6 @V2A3765 02385000
  2490. OI LINESWT,DSLINE SET DSLINE @V2A3765 02386000
  2491. BAL R10,NEWLIN GO PRINT DS @V2A3765 02387000
  2492. NI LINESWT,255-DSLINE @V2A3765 02388000
  2493. B RDLDERR1 @V2A3765 02389000
  2494. RDLDESD EQU * @V2A3765 02390000
  2495. ICM R6,B'0111',9(R3) LOAD TXT ADDRESS @V2A3765 02391000
  2496. LTR R6,R6 IS THERE AN ADDRESS @VA04197 02392000
  2497. BZ ADDISET YES, ADDRESS IS SET @VA04197 02393000
  2498. ST R6,RECENDA SET START ADDRESS @VA04197 02394000
  2499. ADDISET EQU * @VA04197 02395000
  2500. LR R5,R6 PUT INTO R5 @V2A3765 02396000
  2501. TM OPSWT,VERINP IN PROGRESS INDICATOR? @V2A3765 02397000
  2502. BO RDLDLIM BRANCH IF YES @V2A3765 02398000
  2503. C R6,PACKDISP TEXT ADDR < VER DISP @V2A3765 02399000
  2504. BNH RDLDLIM1 BRANCH IF YES @V2A3765 02400000
  2505. RDLDESD1 EQU * @V2A3765 02401000
  2506. TM OPSWT,DUMPHIT DOING DUMP? @V2A3765 02402000
  2507. BZ RDLDERR BRANCH IF NOT, ERROR @V2A3765 02403000
  2508. XC RECEND,RECEND CLEAR RECEND @V2A3765 02404000
  2509. S R5,PACKDISP GET UNDEFINED LENGTH @V2A3765 02405000
  2510. BAL R10,SETBLANK GO PRINT DS @V2A3765 02406000
  2511. LR R5,R6 RESTORE R5 @V2A3765 02407000
  2512. ST R5,RECEND SET RECORD END @V2A3765 02408000
  2513. TM LINESWT,LSTLNPRT ANY RECORD LEFT? @V2A3765 02409000
  2514. BO RDLDERR1 BRANCH IF NOT @V2A3765 02410000
  2515. RDLDLIM EQU * @V2A3765 02411000
  2516. TM OPSWT,DUMPHIT IS THIS DUMP? @V2A3765 02412000
  2517. BO RDLDLIM1 BRANCH IF YES @V2A3765 02413000
  2518. C R6,RECEND IS THIS THE NEXT BYTE? @V2A3765 02414000
  2519. BH RDLDERR BRANCH IF NOT @V2A3765 02415000
  2520. RDLDLIM1 EQU * @V2A3765 02416000
  2521. NI LINESWT,255-LSTLNPRT REMOVE LAST LINE PRT @V2A3765 02417000
  2522. OI LINESWT,ESDFND INDICATE ESD FOUND @V2A3765 02418000
  2523. AR R6,R2 CALC. END OF TEXT REC. @V2A3765 02419000
  2524. C R6,PACKDISP TEXT REC. <= DISP? @V2A3765 02420000
  2525. BNH RDLDSKIP BRANCH IF YES @V2A3765 02421000
  2526. LH R15,RECNUM GET RECORD NUMBER @V2A3765 02422000
  2527. LA R15,1(,R15) POINT TO NEXT RECORD @V2A3765 02423000
  2528. STH R15,RECNUM AND STORE IT @V2A3765 02424000
  2529. BAL R10,RDLIB READ REAL TEXT RECORD @V2A3765 02425000
  2530. L R10,RDLDR10 GET RETURN REGISTER @V2A3765 02426000
  2531. B RDLDRET @V2A3765 02427000
  2532. RDLDSKIP EQU * SKIP NEXT TEXT RECORD @V2A3765 02428000
  2533. LH R15,RECNUM GET RECORD NUMBER @V2A3765 02429000
  2534. LA R15,1(,R15) POINT TO NEXT RECORD @V2A3765 02430000
  2535. STH R15,RECNUM AND STORE IT @V2A3765 02431000
  2536. RDLDNXT EQU * @V2A3765 02432000
  2537. L R10,RDLDR10 GET RETURN REGISTER @V2A3765 02433000
  2538. LA R10,4(,R10) INDICATE READ NEXT RECORD @V2A3765 02434000
  2539. B RDLDRET @V2A3765 02435000
  2540. RDLDERR EQU * @V2A3765 02436000
  2541. LA R8,INVADMGL POINT TO ERROR MESSAGE @V2A3765 02437000
  2542. BAL R10,INVEREP2 GO PRINT MESSAGE @V2A3765 02438000
  2543. RDLDERR1 EQU * @V2A3765 02439000
  2544. L R10,RDLDR10 GET RETURN REGISTER @V2A3765 02440000
  2545. LA R10,8(,R10) SET ERROR RETURN @V2A3765 02441000
  2546. RDLDRET EQU * @V2A3765 02442000
  2547. BR R10 RETURN @V2A3765 02443000
  2548. SPACE 3 02444000
  2549. RDLDR10 DS F @V2A3765 02445000
  2550. EJECT 02446000
  2551. * 02447000
  2552. * ANY INVALID CONDITION ON A CONTROL RECORD WILL COME HERE. 02448000
  2553. * CLOSE THE SYSLIB FILE AND PRINT THE ERROR MESSAGE. 02449000
  2554. * 02450000
  2555. INVEREP EQU * @V200809 02451000
  2556. LA R8,NOGOMGL SET MESSAGE ADDR @V200809 02452000
  2557. INVEREP2 EQU * @V200809 02453000
  2558. MVI ERCODE,ERR04 SET ERROR CODE @V2A3765 02454000
  2559. INVEREP4 EQU * @V2A3765 02455000
  2560. ST R10,INVER10 SAVE RETURN REGISTER @V2A3765 02456000
  2561. OI OPSWT,NOGO SET NOGO SWITCH @V2A3765 02457000
  2562. BAL R10,CLOSELIB CLOSE SYSLIB @V200809 02458000
  2563. TM SWT,CONSOLE CONSOLE MODE? @V2A3765 02459000
  2564. BO NOTYPE BRANCH IF YES @V2A3765 02460000
  2565. BAL R10,PRTCARD GO PRINT CARD @V2A3765 02461000
  2566. NOTYPE EQU * @V2A3765 02462000
  2567. SR R7,R7 @V200809 02463000
  2568. IC R7,0(,R8) GET MESSAGE LENGTH @V200809 02464000
  2569. TM SWT,PRINT PRINTER OPTION? @V2A3765 02465000
  2570. BO DOPRT BRANCH IF YES, PRINT IT @V2A3765 02466000
  2571. LA R8,1(,R8) POINT TO MESSAGE @V2A3765 02467000
  2572. B DOCONS AND TYPE IT @V2A3765 02468000
  2573. DOPRT EQU * @V2A3765 02469000
  2574. BAL R10,PRTMSG GO WRITE MESSAGE TO PRT @V200809 02470000
  2575. DOCONS EQU * @V2A3765 02471000
  2576. BAL R10,DOWTO YES, WRITE IT TO CONSOLE @V200809 02472000
  2577. INVEREP3 EQU * @V200809 02473000
  2578. L R10,INVER10 RESTORE RETURN ADDRESS @V2A3765 02474000
  2579. BR R10 @V2A3765 02475000
  2580. SPACE 3 02476000
  2581. INVER10 DS F @V2A3765 02477000
  2582. EJECT 02478000
  2583. * 02479000
  2584. * READ INPUT CONTROL RECORD FILE 02480000
  2585. * 02481000
  2586. RDCARD EQU * @V200809 02482000
  2587. MVI CDBUF,X'40' BLANK OUT INPUT BUFFER @V200809 02483000
  2588. MVC CDBUF+1(132),CDBUF BEFORE READ @V2A3765 02484000
  2589. TM SWT,CONSOLE IS THIS CONSOLE MODE? @V200809 02485000
  2590. BNO RDCARD2 NO @V200809 02486000
  2591. WTOR 'ENTER:',CDBUF,80,WTOECB @V2A3765 02487000
  2592. SPACE 1 02488000
  2593. WAIT ECB=WTOECB @V200809 02489000
  2594. BR R10 @V200809 02490000
  2595. EJECT 1 02491000
  2596. RDCARD2 EQU * @V200809 02492000
  2597. FSREAD FSCB=INFUNC,ERROR=RDCRDERR @V2A3765 02493000
  2598. B RDCRDEND @V2A3765 02494000
  2599. RDCRDERR EQU * @V2A3765 02495000
  2600. CH R15,TWELVE END OF FILE? @V2A3765 02496000
  2601. BE CONEND BRANCH IF YES @V2A3765 02497000
  2602. OI SCANSWT,INPUTERR INDICATE ERROR @V2A3765 02498000
  2603. B RDLIBERR @V2A3765 02499000
  2604. RDCRDEND EQU * @V2A3765 02500000
  2605. SPACE 2 02501000
  2606. BR R10 @V200809 02502000
  2607. EJECT 1 02503000
  2608. * 02504000
  2609. * WRITE CONTROL RECORD AND MESSAGES TO SYSPRINT FILE 02505000
  2610. * 02506000
  2611. WRCARD EQU * @V200809 02507000
  2612. TM SWT,PRINT IS PRINT OPTION ACTIVE? @V2A3765 02508000
  2613. BZ WRCRDEND BRANCH IF NOT @V2A3765 02509000
  2614. PRINTL PRTBUF,ERROR=PRTERR @V2A3765 02510000
  2615. B WRCRDEND @V2A3765 02511000
  2616. SPACE 2 02512000
  2617. PRTERR EQU * @V2A3765 02513000
  2618. CH R15,THREE WAS CHANNEL 9 SENSED? @V2A3765 02514000
  2619. BE WRCARD BRANCH IF YES, REPEAT @V2A3765 02515000
  2620. CH R15,TWO CHAN 12? @VA03623 02516000
  2621. BE WRCARD YES,THEN DO AGAIN @VA03623 02517000
  2622. B PRTERMSG @V2A3765 02518000
  2623. SPACE 2 02519000
  2624. WRCRDEND EQU * @V2A3765 02520000
  2625. SPACE 2 02521000
  2626. BR R10 @V200809 02522000
  2627. EJECT 1 02523000
  2628. * 02524000
  2629. * LOCATE BEGINNING OF MEMBER 02525000
  2630. * 02526000
  2631. FINDMEM EQU * @V200809 02527000
  2632. LH R15,RECNUM GET RECORD NUMBER @V2A3765 02528000
  2633. TM SWT,ZAPM+ZAPFM IS THIS MODULE? @VM03228 02529000
  2634. BNZ FINDEND BRANCH IF YES @VM03228 02530000
  2635. LH R15,LIBREC GET RECORD NUMBER @V2A3765 02531000
  2636. FINDEND EQU * @V2A3765 02532000
  2637. BCTR R15,0 @V2A3765 02533000
  2638. STH R15,RECNUM READ WILL INCREMENT @V2A3765 02534000
  2639. BR R10 @V200809 02535000
  2640. EJECT 1 02536000
  2641. * 02537000
  2642. * PRINT CARD IMAGE 02538000
  2643. * 02539000
  2644. PRTCARD EQU * @V2A3765 02540000
  2645. TM LINESWT,CARDPRTD BEEN PRINTED? @V2A3765 02541000
  2646. BO PRTCDEND BRANCH IF YES @V2A3765 02542000
  2647. LA R14,80 MAXIMUM CARD LENGTH @V2A3765 02543000
  2648. LA R15,CDBUF+79 POINT TO END OF BUFFER @V2A3765 02544000
  2649. CRDLNTH EQU * @V2A3765 02545000
  2650. BCTR R14,0 DECREMENT @V2A3765 02546000
  2651. LTR R14,R14 WAS CARD BLANK? @V2A3765 02547000
  2652. BM PRTCDEND BRANCH IF YES @V2A3765 02548000
  2653. CLI 0(R15),C' ' IS CHARACTER BLANK? @V2A3765 02549000
  2654. BNE FNDLNTH BRANCH IF NOT @V2A3765 02550000
  2655. BCT R15,CRDLNTH LOOK AT NEXT CHARACTER @V2A3765 02551000
  2656. FNDLNTH EQU * @V2A3765 02552000
  2657. EX R14,MVCARD MOVE CARD IMAGE INTO LIST @V2A3765 02553000
  2658. LA R14,5(,R14) ADD HEADER + 1 @V2A3765 02554000
  2659. STH R14,WTOLEN AND STORE LENGTH @V2A3765 02555000
  2660. LA R1,WTOLIST POINT TO LIST @V2A3765 02556000
  2661. WTO MF=(E,(1)) GO TYPE IT @V2A3765 02557000
  2662. OI LINESWT,CARDPRTD INDICATE PRINTED @V2A3765 02558000
  2663. PRTCDEND EQU * @V2A3765 02559000
  2664. BR R10 @V2A3765 02560000
  2665. SPACE 3 02561000
  2666. MVCARD MVC WTOMSG(0),CDBUF @V2A3765 02562000
  2667. EJECT 02563000
  2668. * 02564000
  2669. * READ ZAP FILE 02565000
  2670. * 02566000
  2671. RDLIB EQU * @V2A3765 02567000
  2672. TM SWT,ZAPM+ZAPFM IS THIS MODULE? @VM03228 02568000
  2673. BZ NOTMOD BRANCH IF NOT @V2A3765 02569000
  2674. TM OPSWT,VERINP IS VERIFY IN PROGRESS? @V2A3765 02570000
  2675. BO RDREC BRANCH IF YES @V2A3765 02571000
  2676. LA R3,1 SET FOR RECORD NO. 1, @VM03238 02572000
  2677. TM SWT,ZAPFM PERCHANCE A FIXED MODULE ? @VM03238 02573000
  2678. BO PREPBUF SET - GET A BUFFER & READ MODULE @VM03238 02574000
  2679. L R3,PACKDISP GET DISPLACEMENT OF OPERATION@V2A3765 02575000
  2680. SR R2,R2 TO DETERMINE OFFSET @V2A3765 02576000
  2681. D R2,MODMAX R2 HAS OFFSET INTO RECORD @V2A3765 02577000
  2682. ST R2,MODDISP AND SAVE IT @V2A3765 02578000
  2683. LA R3,2(,R3) ADD HEADER RECORD @V2A3765 02579000
  2684. TM SWT,MODBUF BUFFER ALREADY GOTTEN? @VA05524 02580000
  2685. BZ PREPBUF BRANCH IF NOT @VA05524 02581000
  2686. CH R3,RECNUM IS RECORD ALREADY READ? @V2A3765 02582000
  2687. BNE PREPBUF BRANCH IF NOT @V2A3765 02583000
  2688. L R3,RECBUF YES, GET POINTER @V2A3765 02584000
  2689. B RDEND AND RETURN @V2A3765 02585000
  2690. PREPBUF EQU * @V2A3765 02586000
  2691. STH R3,RECNUM POINT TO RECORD WANTED @V2A3765 02587000
  2692. TM SWT,MODBUF BUFFER ALREADY GOTTEN? @V2A3765 02588000
  2693. BZ GETBUF BRANCH IF NOT @V2A3765 02589000
  2694. L R3,RECBUF YES, GET POINTER @V2A3765 02590000
  2695. B RDREC @V2A3765 02591000
  2696. GETBUF EQU * @V2A3765 02592000
  2697. L R0,MODSIZE GET BUFFER SIZE @VM03228 02593000
  2698. ST R0,BUFSIZE AND SAVE IT @V2A3765 02594000
  2699. GETMAIN R,LV=(0) @V2A3765 02595000
  2700. ST R1,RECBUF SAVE BUFFER ADDRESS @V2A3765 02596000
  2701. LR R3,R1 ALSO IN R3 @V2A3765 02597000
  2702. OI SWT,MODBUF INDICATE BUFFER GOTTEN @V2A3765 02598000
  2703. B RDREC @V2A3765 02599000
  2704. NOTMOD EQU * @V2A3765 02600000
  2705. XC LIBRCD(130),LIBRCD ZERO OUT HALF BUFFER @V200809 02601000
  2706. XC LIBRCD+130(130),LIBRCD+130 AND NEXT HALF @V200809 02602000
  2707. RDREC EQU * @V2A3765 02603000
  2708. LA R1,RDBUF GET PLIST ADDRESS @V2A3765 02604000
  2709. SVC 202 READ THE RECORD @V2A3765 02605000
  2710. DC AL4(RDLIBERR) @V2A3765 02606000
  2711. RDEND EQU * @V2A3765 02607000
  2712. SPACE 2 02608000
  2713. BR R10 @V200809 02609000
  2714. EJECT 1 02610000
  2715. * 02611000
  2716. * UPDATE ZAP FILE 02612000
  2717. * 02613000
  2718. WRLIB EQU * @V200809 02614000
  2719. LR R8,R10 SAVE RETURN ADDRESS @V2A3765 02615000
  2720. BAL R10,CLOSELIB CLOSE THE FILE @V2A3765 02616000
  2721. MVC RDBUF,=CL8'WRBUF' INDICATE WRITE @V2A3765 02617000
  2722. L R6,BUFSIZE HOLD BUFFER SIZE @V2A3765 02618000
  2723. L R1,BYTESRD GET BYTES READ @V2A3765 02619000
  2724. ST R1,BUFSIZE AND SAVE THEM @V2A3765 02620000
  2725. LA R1,RDBUF POINT TO PLIST @V2A3765 02621000
  2726. SVC 202 GO WRITE THE RECORD @V2A3765 02622000
  2727. ST R6,BUFSIZE RESTORE BUFFER SIZE @V2A3765 02623000
  2728. BAL R10,CLRSPCE REMOVE BUFFER SPACE @V2A3765 02624000
  2729. BAL R10,CLOSELIB AND CLOSE THE FILE @V2A3765 02625000
  2730. MVC RDBUF,=CL8'RDBUF' CHANGE TO READ @V2A3765 02626000
  2731. SPACE 2 02627000
  2732. BR R8 @V2A3765 02628000
  2733. EJECT 02629000
  2734. * 02630000
  2735. * ROUTINE TO SCAN CONTROL RECORDS 02631000
  2736. * 02632000
  2737. SCANKEY1 EQU * @V200809 02633000
  2738. LR R4,R2 BUFFER ADDR IN R2 @V200809 02634000
  2739. SCANKEY2 EQU * @V200809 02635000
  2740. CLI 0(R4),BLANK IS THIS A BLANK? @V200809 02636000
  2741. BNE SCANKEY3 NO, FIRST CHAR OF KEYWORD FOUND @V200809 02637000
  2742. LA R4,1(R4) INCREMENT TO NEXT POSITION @V200809 02638000
  2743. BCT R3,SCANKEY2 LOOP @V200809 02639000
  2744. OI SCANSWT,RETBLNKS INDICATE RETURNING BLANKS @V2A3765 02640000
  2745. B SCANKEY6 @V2A3765 02641000
  2746. SPACE 2 02642000
  2747. SCANKEY3 EQU * @V200809 02643000
  2748. LR R2,R4 KEYWORD START IN R2 @V200809 02644000
  2749. SCANKEY4 EQU * @V200809 02645000
  2750. TM SCANSWT,KEYSCAN IS THIS A KEYWORD SCAN? @VM08595 02646000
  2751. BO KEY4B YES, NO CHAR. CHECK @VM08595 02647000
  2752. TM SCANSWT,DISPSCAN DISP. SCAN? @VM08595 02648000
  2753. BO KEY4A YES, NO COMMA CHECK @VM08595 02649000
  2754. CLI 0(R2),COMMA NO, IS IT A COMMA @VM08595 02650000
  2755. BE KEY4B YES @VM08595 02651000
  2756. KEY4A EQU * @VM08595 02652000
  2757. CLI 0(R2),A 'A' OR HIGHER? @VM08595 02653000
  2758. BL SCANERR NO, ERROR @V2A3765 02654000
  2759. CLI 0(R2),F YES, HIGHER THAN 'F'? @VM08595 02655000
  2760. BNH KEY4B NO, GOOD CHAR. @VM08595 02656000
  2761. CLI 0(R2),ZERO YES, LESS THAN '0'? @VM03203 02657000
  2762. BNL NOTLOW BRANCH IF NOT @VM03203 02658000
  2763. SCANERR EQU * @VM03203 02659000
  2764. LA R10,READINP RETURN TO READINP @VM03203 02660000
  2765. B INVEREP AFTER ERROR MESSAGE @VM03203 02661000
  2766. NOTLOW EQU * @V2A3765 02662000
  2767. CLI 0(R2),NINE HIGHER THAN '9'? @VM08595 02663000
  2768. BNH KEY4B BRANCH IF NOT @V2A3765 02664000
  2769. LA R10,READINP RETURN TO READINP @V2A3765 02665000
  2770. B INVEREP AFTER ERROR MESSAGE @V2A3765 02666000
  2771. KEY4B EQU * @VM08595 02667000
  2772. LA R2,1(R2) INCREMENT @V200809 02668000
  2773. BCTR R3,0 DECREMENT COLUMN COUNTER @V200809 02669000
  2774. LTR R3,R3 END OF CARD ? @V200809 02670000
  2775. BZ SCANKEY5 YES @V200809 02671000
  2776. CLI 0(R2),BLANK END OF KEYWORD? @V200809 02672000
  2777. BNE SCANKEY4 NO LOOP @V200809 02673000
  2778. SCANKEY5 EQU * @V200809 02674000
  2779. LR R5,R2 YES, CALC. LENGTH @V200809 02675000
  2780. SR R5,R4 @V200809 02676000
  2781. SCANKEY6 EQU * @V2A3765 02677000
  2782. BR R10 RETURN TO MAINLINE @V200809 02678000
  2783. EJECT 02679000
  2784. * 02680000
  2785. * ISSUE 'STATE' FOR LIBRARY FILE, CHECK THAT DISK IS READ 02681000
  2786. * WRITE. 02682000
  2787. * 02683000
  2788. STFDEF EQU * @V200809 02684000
  2789. MVC STNAME(8),0(R6) SET STATE NAME @V200809 02685000
  2790. MVC STATE,STATEC INDICATE STATE @V2A3765 02686000
  2791. LA R1,STATE @V200809 02687000
  2792. SVC 202 @V200809 02688000
  2793. DC AL4(*+4) @V200809 02689000
  2794. LTR R15,R15 LIBRARY FOUND ? @V200809 02690000
  2795. BZ CHKST BRANCH IF SO @V2A3765 02691000
  2796. LA R10,4(,R10) INDICATE ERROR @V2A3765 02692000
  2797. B STATEND @V2A3765 02693000
  2798. CHKST EQU * @V2A3765 02694000
  2799. L R1,STATFST LOAD FST ADDR @V200809 02695000
  2800. USING FSTSECT,R1 @V200809 02696000
  2801. CLI FSTFB,FSTFRW DISK READ/WRITE? @V200809 02697000
  2802. BNE LIBRO NO @V200809 02698000
  2803. MVC RDNAME(16),STNAME MOVE IN NAME AND TYPE @V2A3765 02699000
  2804. MVC FLAGS(1),FSTFV SAVE F/V FLAG @V2A3765 02700000
  2805. MVC RDMODE,FSTM MOVE IN FILEMODE @V2A3765 02701000
  2806. MVC AUXFM1(1),FSTM NEED SAME MODE LETTER IN @VA10327 02701300
  2807. MVC AUXFM2(1),FSTM FILEID'S FOR RENAME @VA10327 02701600
  2808. MVC RECNUM,ONE POSITION AT START @V2A3765 02702000
  2809. LA R8,RDNAME POINT TO FILENAME @V2A3765 02703000
  2810. TM SWT,ZAPT IS THIS TEXTLIB? @V2A3765 02704000
  2811. BO CHKFIX BRANCH IF SO @V2A3765 02705000
  2812. CLI FSTFV,C'V' IS THIS A VARIABLE FILE ? @V200809 02706000
  2813. BE SAVESIZE YES - OK. @VM03228 02707000
  2814. TM SWT,ZAPM+ZAPFM IF FIXED, IS IT A MODULE ? @VM03228 02708000
  2815. BZ LIBNTV IF NOT, IT'S A REAL ERROR. @VM03228 02709000
  2816. * FIXED (TRANSIENT) MODULE: 02710000
  2817. CLC ONE,FSTIC RECORD COUNT MUST BE ONE; @VM03228 02711000
  2818. BNE LIBNTV IF NOT, USE EXISTING ERROR MSG @VM03228 02712000
  2819. CLC MAXTRMOD,FSTIL AND RECORD MUST BE 8192 OR LESS @VM03228 02713000
  2820. BL LIBNTV IF TOO BIG, USE EXISTING ERR MSG.@VM03228 02714000
  2821. NI SWT,X'FF'-ZAPM OK - SIGNAL IT'S A FIXED MODULE @VM03228 02715000
  2822. OI SWT,ZAPFM ... @VM03228 02716000
  2823. XC DICTHDR(DICTLEN),DICTHDR ZERO DICTIONARY HEADER @VM03228 02717000
  2824. LA R15,DICTHDR REFERENCE AS A MODULE HEADER @VM03228 02718000
  2825. USING MDREC,R15 ... @VM03228 02719000
  2826. L R14,ADTRANS GET STARTING ADDRESS @VM03228 02720000
  2827. ST R14,MDSTART STORE @VM03228 02721000
  2828. ST R14,MDFIRST ... @VM03228 02722000
  2829. A R14,FSTIL ADD LENGTH OF MODULE @VM03228 02723000
  2830. ST R14,MDLAST STORE @VM03228 02724000
  2831. DROP R15 @VM03228 02725000
  2832. SAVESIZE MVC MODSIZE,FSTIL SAVE MAXIMUM RECORD SIZE @VM03228 02726000
  2833. B STATEND AND GO EXIT FROM SUBROUTINE. @VM03228 02727000
  2834. CHKFIX EQU * @V2A3765 02728000
  2835. CLI FSTFV,C'F' IS THIS A FIXED FILE? @V2A3765 02729000
  2836. BNE FILENTF BRANCH IF NOT @V2A3765 02730000
  2837. CLC FSTIL+2(2),EIGHTY IS RECORD LENGTH 80? @V2A3765 02731000
  2838. BNE FILENTF BRANCH IF NOT @V2A3765 02732000
  2839. DROP R1 @V2A3765 02733000
  2840. STATEND EQU * @V2A3765 02734000
  2841. BR R10 @V2A3765 02735000
  2842. EJECT 02736000
  2843. * 02737000
  2844. * FINIS ZAP FILE 02738000
  2845. * 02739000
  2846. CLOSELIB EQU * @V200809 02740000
  2847. CLI STNAME,C' ' ANY NAME PRESENT? @V2A3765 02741000
  2848. BE CLOSEND BRANCH IF NOT @V2A3765 02742000
  2849. FSCLOSE FSCB=STATE CLOSE THE FILE @V2A3765 02743000
  2850. CLOSEND EQU * @V2A3765 02744000
  2851. SPACE 2 02745000
  2852. BR R10 RETURN TO MAINLINE @V200809 02746000
  2853. SPACE 2 02747000
  2854. EJECT 02748000
  2855. * 02749000
  2856. * PREPARE TO WRITE MESSAGES TO SYSPRINT 02750000
  2857. * 02751000
  2858. PRTMSG EQU * @V200809 02752000
  2859. ST R10,PRTMSGSV SAVE RETURN REGISTER @V2A3765 02753000
  2860. MVI PRTBUF,X'40' MAKE SURE SINGLE SPACE @VM08595 02754000
  2861. MVI CDBUF,BLANK BLANK OUT BUFFER @V200809 02755000
  2862. MVC CDBUF+1(80),CDBUF CLEAR BUFFER AREA @V2A3765 02756000
  2863. SR R10,R10 @V2A3765 02757000
  2864. IC R10,0(R8) GET MESSAGE LENGTH IN R10 @V2A3765 02758000
  2865. BCTR R10,0 DECREMENT BY 1 @V2A3765 02759000
  2866. LA R8,1(R8) INCREMENT R8 TO MESSAGE @V200809 02760000
  2867. EX R10,MSGMOVE PUT MESSAGE INTO BUFFER @V2A3765 02761000
  2868. BAL R10,WRCARD GO WRITE MESSAGE @V2A3765 02762000
  2869. L R10,PRTMSGSV GET RETURN REGISTER @V2A3765 02763000
  2870. BR R10 @V2A3765 02764000
  2871. SPACE 3 02765000
  2872. PRTMSGSV DS F @V2A3765 02766000
  2873. EJECT 1 02767000
  2874. CLRSPCE EQU * @V2A3765 02768000
  2875. * 02769000
  2876. * FREEMAIN BUFFER SPACE 02770000
  2877. * 02771000
  2878. TM SWT,MODBUF IS THERE A BUFFER? @V2A3765 02772000
  2879. BZ NOBUF BRANCH IF NOT @V2A3765 02773000
  2880. L R0,MODSIZE GET BUFFER SIZE @VM03228 02774000
  2881. L R1,RECBUF AND ITS ADDRESS @V2A3765 02775000
  2882. FREEMAIN R,LV=(0),A=(1) AND FREE IT @V2A3765 02776000
  2883. NI SWT,255-MODBUF REMOVE BUFFER INDICATOR @V2A3765 02777000
  2884. NOBUF EQU * @V2A3765 02778000
  2885. BR R10 @V2A3765 02779000
  2886. EJECT 1 02780000
  2887. * 02781000
  2888. * THIS ROUTINE DOES WRITE TO OPERATOR FOR MESSAGES WHEN 02782000
  2889. * IN CONSOLE MODE. 02783000
  2890. * 02784000
  2891. DOWTO EQU * @V200809 02785000
  2892. DC X'83',X'87',X'005C' EDIT ERROR MSG. ACCORDING @VM03027 02786000
  2893. * TO USER'S EMSG SETTING. 02787000
  2894. LTR R7,R7 IS MESSAGE LENGTH 0 ? @VM03027 02788000
  2895. BZR R10 YES, DON'T SEND MESSAGE. @VM03027 02789000
  2896. BCTR R7,0 DECREMENT LENGTH FOR MOVE @V200809 02790000
  2897. EX R7,WTOMOVE MOVE MESSAGE TO WTO LIST @V200809 02791000
  2898. LA R7,5(R7) R7 = R7 + MOVE DEC. + HEADER @V200809 02792000
  2899. STH R7,WTOLEN STORE LENGTH INTO WTO LENGTH @V200809 02793000
  2900. LA R1,WTOLIST @V200809 02794000
  2901. WTO MF=(E,(1)) ISSUE WTO @V200809 02795000
  2902. BR R10 RETURN @V200809 02796000
  2903. SPACE 3 02797000
  2904. MSGMOVE MVC CDBUF(1),0(R8) MOVE MESSAGE TO BUFFER @V200809 02798000
  2905. WTOMOVE MVC WTOMSG(1),0(R8) MOVE MESSAGE TO WTO BUFFER @V200809 02799000
  2906. EJECT 02800000
  2907. CONEND EQU * @V200809 02801000
  2908. TM OPSWT,REPOP REP ALREADY PROCESSED? @VA10327 02802000
  2909. BNO CONENDA NO...OK @V60CE91 02803000
  2910. TM SWT2,LOGHIT FOUND LOG TOO ? @V60CE91 02804000
  2911. BO CONENDA YES...OK @V60CE91 02805000
  2912. BAL R10,LOGNOTF OTHERWISE WRITE DUMMY RECORD @VA10327 02806000
  2913. CONENDA NI SWT2,X'FF'-LOGHIT TURN OFF LOG SWITCH @V60CE91 02807000
  2914. TM SWT,PRINT PRINTING? @V2A3765 02808000
  2915. BZ CONEND1 BRANCH IF NOT @V2A3765 02809000
  2916. LA R8,ENDMSGL POINT TO ENDING MESSAGE @V2A3765 02810000
  2917. BAL R10,PRTMSG GO PRINT IT @V2A3765 02811000
  2918. LA R1,CLSPLIST CLOSE THE PRINT FILE @VA04593 02812000
  2919. SVC 202 @VA04593 02813000
  2920. DC AL4(CONEND1) @VA04593 02814000
  2921. CONEND1 EQU * @V2A3765 02815000
  2922. BAL R10,CLOSELIB GO CLOSE LIBRARY @V2A3765 02816000
  2923. BAL R10,CLOSINP CLOSE INPUT FILE @V2A3765 02817000
  2924. BAL R10,CLRSPCE REMOVE BUFFER SPACE @V2A3765 02818000
  2925. B NOMORE @V2A3765 02819000
  2926. SPACE 2 02820000
  2927. CLSPLIST DC CL8'CP' @VA04593 02821000
  2928. DC CL8'CLOSE' @VA04593 02822000
  2929. DC CL8'PRINTER' @VA04593 02823000
  2930. DC 8X'FF' @VA04593 02824000
  2931. EJECT 1 02825000
  2932. * 02826000
  2933. * CLOSE INPUT FILE 02827000
  2934. * 02828000
  2935. CLOSINP EQU * @V2A3765 02829000
  2936. CLI INFILEN,C' ' IS THERE AN INPUT FILE? @V2A3765 02830000
  2937. BE CLOSINPE BRANCH IF NOT @V2A3765 02831000
  2938. FSCLOSE FSCB=INFUNC CLOSE INPUT FILE @V2A3765 02832000
  2939. CLOSINPE EQU * @V2A3765 02833000
  2940. BR R10 @V2A3765 02834000
  2941. EJECT 02835000
  2942. * 02836000
  2943. * PLISTS, SAVE AREAS AND CONSTANTS 02837000
  2944. * 02838000
  2945. DS 0D @V200809 02839000
  2946. STATE DC CL8'STATE' @V200809 02840000
  2947. STNAME DC CL8' ' @V200809 02841000
  2948. DC CL8'LOADLIB' @V200809 02842000
  2949. DC CL2'*' @V200809 02843000
  2950. DC H'00' @V200809 02844000
  2951. STATFST DC A(0) @V200809 02845000
  2952. DC 8X'FF' @V200809 02846000
  2953. SPACE 2 02847000
  2954. AUXFSCB FSCB 'FN ZAPLOG A',BUFFER=CDBUF,BSIZE=80 @V60CE91 02848000
  2955. AUXBSIZE EQU 80 @V60CE91 02849000
  2956. AUXDATE EQU 63 @V60CE91 02850000
  2957. AUXNUML EQU 8 @V60CE91 02851000
  2958. AUXNOTF DC H'28' NOT FOUND @V60CE91 02852000
  2959. WORKFSCB FSCB 'ZAP CMSUT1 A5',BUFFER=CDBUF,BSIZE=80 @V60CE91 02853000
  2960. SPACE 2 02854000
  2961. DS 0D @V60CE91 02855000
  2962. AUXFUNC DC CL8'RENAME' @V60CE91 02856000
  2963. DC CL8'ZAP' @V60CE91 02857000
  2964. DC CL8'CMSUT1' @V60CE91 02858000
  2965. AUXFM1 DC CL8'A5' @VA10327 02859000
  2966. AUXFNFT DC CL16' ' @V60CE91 02860000
  2967. AUXFM2 DC CL8'A1' @VA10327 02861000
  2968. DC 8X'FF' @V60CE91 02862000
  2969. SPACE 1 02863000
  2970. DS 0D @V60CE91 02864000
  2971. INFUNC DC CL8'STATE' @V2A3765 02865000
  2972. INFILEN DC CL8' ' @V2A3765 02866000
  2973. DC CL8'ZAP' @V2A3765 02867000
  2974. INMODE DC CL2'*' @V2A3765 02868000
  2975. INRNUM DC H'0' @V2A3765 02869000
  2976. INBUF DC A(0) @V2A3765 02870000
  2977. INBFSZ DC 4X'FF' @V2A3765 02871000
  2978. INFLGS DC 2X'FF' @V2A3765 02872000
  2979. INNUMR DC 2X'FF' @V2A3765 02873000
  2980. INBYTES DC F'0' @V2A3765 02874000
  2981. DC 8X'FF' @V2A3765 02875000
  2982. SPACE 3 02876000
  2983. DS 0D @V2A3765 02877000
  2984. RDBUF DC CL8'RDBUF' @V2A3765 02878000
  2985. RDNAME DC CL8' ' @V2A3765 02879000
  2986. RDTYPE DC CL8' ' @V2A3765 02880000
  2987. RDMODE DC CL2'* ' @V2A3765 02881000
  2988. RECNUM DC H'1' @V2A3765 02882000
  2989. RECBUF DC A(0) @V2A3765 02883000
  2990. BUFSIZE DC F'0' @V2A3765 02884000
  2991. FLAGS DC CL2'V ' @V2A3765 02885000
  2992. NUMOFREC DC H'1' @V2A3765 02886000
  2993. BYTESRD DC F'0' @V2A3765 02887000
  2994. DC 8X'FF' @V2A3765 02888000
  2995. SPACE 3 02889000
  2996. DTTMBUF DS 4D DATE AND TIME BUFFER @VA11269 02889500
  2997. DICTHDR EQU * DICTIONARY HEADER @V2A3765 02890000
  2998. DICTID DS CL6 @V2A3765 02891000
  2999. DICTSTRT DS CL2 POINTER TO FIRST DICT. RCD @V2A3765 02892000
  3000. DICTSIZE DS CL4 NO. BYTES IN DICT. @V2A3765 02893000
  3001. DICTNO DS CL4 NO. RECORDS IN DICT. @V2A3765 02894000
  3002. DS CL64 @V2A3765 02895000
  3003. DICTEND EQU * @V2A3765 02896000
  3004. DICTLEN EQU DICTEND-DICTHDR @V2A3765 02897000
  3005. DICTENTL EQU 12 LENGTH OF DICTIONARY ENTRY @V2A3765 02898000
  3006. DICTNUM EQU 6 NUMBER OF ENTRIES/RECORD @V2A3765 02899000
  3007. SPACE 3 02900000
  3008. SPACE 2 02901000
  3009. REGSAVE DC 18F'0' @V200809 02902000
  3010. INPLIST DC A(0) @V200809 02903000
  3011. LIBNAME1 DC A(0) @V200809 02904000
  3012. LIBNAME2 DC A(0) @V200809 02905000
  3013. LIBNAME3 DC A(0) @V200809 02906000
  3014. DC F'0' DENOTES END OF LIBRARY NAMES @V200809 02907000
  3015. DDNAME DC A(0) @V200809 02908000
  3016. BLANKS DC CL8' ' @V200809 02909000
  3017. MEMNAME DC CL8' ' @V200809 02910000
  3018. CSECTNAM DC CL8' ' @V200809 02911000
  3019. ONE DC H'1' @V2A3765 02912000
  3020. TWO DC H'2' @VA03623 02913000
  3021. THREE DC H'3' @V2A3765 02914000
  3022. FOUR DC H'4' @V200809 02915000
  3023. SIX DC H'6' @V200809 02916000
  3024. EIGHT DC H'8' @V200809 02917000
  3025. ELEVEN DC H'11' @V2A3765 02918000
  3026. TWELVE DC H'12' @V200809 02919000
  3027. SIXTEEN DC H'16' @V200809 02920000
  3028. SEVNTHRE DC H'73' @V200809 02921000
  3029. EIGHTY DC H'80' @V2A3765 02922000
  3030. LIBREC DC H'0' RECORD NUMBER OF MODULE @V2A3765 02923000
  3031. ENDCNT DC H'0' NUMBER OF ENDS TO ESD @VA07108 02924000
  3032. ENDMET DC H'0' NUMBER OF ENDS READ @VA07108 02925000
  3033. MODMAX DC F'65535' MODULE RECORD SIZE(MAXIMUM) @V2A3765 02926000
  3034. MAXTRMOD DC F'8192' MAX. SIZE FIXED=TRANSIENT MODULE @VM03228 02927000
  3035. MODSIZE DC F'65535' SIZE OF MODULE'S LARGEST RECORD @VM03228 02928000
  3036. ADTRANS DC A(X'E000') ADDRESS OF CMS TRANSIENT AREA @VM03228 02929000
  3037. TXTLIB DC CL8'TXTLIB' @V2A3765 02930000
  3038. MODULE DC CL8'MODULE' @V2A3765 02931000
  3039. STATEC DC CL8'STATE' @V2A3765 02932000
  3040. SPACE 1 02933000
  3041. CSECTID DC F'0' @V200809 02934000
  3042. ESDADD DC 4X'00' @V200809 02935000
  3043. ESDLEN DC 4X'00' @V200809 02936000
  3044. MODDISP EQU CSECTID @V2A3765 02937000
  3045. MODLOC EQU ESDADD @V2A3765 02938000
  3046. MODLEN EQU ESDLEN @V2A3765 02939000
  3047. SPACE 1 02940000
  3048. BASEVAL DC 6X'00' @VM08551 02941000
  3049. BASEVEND DS 0C @VM08551 02942000
  3050. DISP DC 6X'00' @V200809 02943000
  3051. DISPEND DS 0C @V200809 02944000
  3052. DATA DC 73X'00' @V200809 02945000
  3053. SPACE 1 02946000
  3054. DS 0F @V200809 02947000
  3055. PACKBASE DC 4X'00' @VM08595 02948000
  3056. PACKBAED DS 0C @VM08595 02949000
  3057. PACKDISP DC 4X'00' @V200809 02950000
  3058. PACKDPED DS 0C @V200809 02951000
  3059. RECEND DC F'0' @V2A3765 02952000
  3060. PACKADDS DC F'0' @V2A3765 02953000
  3061. PACKADDE DC F'0' @V2A3765 02954000
  3062. ADDRS DC 6X'00' @V2A3765 02955000
  3063. ADDRSEND DS 0C @V2A3765 02956000
  3064. ADDREND DC 6X'00' @V2A3765 02957000
  3065. ADDREEND DS 0C @V2A3765 02958000
  3066. HEXUNPK DS 3F @V2A3765 02959000
  3067. PACKDATA DC 37X'00' @V200809 02960000
  3068. PACKDAED DS 0C @V200809 02961000
  3069. DC 2C' ' FILLER @V200809 02962000
  3070. DATALEN DC X'00' @V200809 02963000
  3071. NORMCON DC 73X'1F' @V200809 02964000
  3072. SPACE 1 02965000
  3073. TRANTBL DC X'00FAFBFCFDFEFF' @V200809 02966000
  3074. DS 9C @V200809 02967000
  3075. DC C'0123456789ABCDEF' @V200809 02968000
  3076. SPACE 2 02969000
  3077. EJECT 02970000
  3078. PRINTBL EQU * @V2A3765 02971000
  3079. DC 64C'.',C' ',12C'.',C'(+',13C'.',C'*)' @V2A3765 02972000
  3080. DC C'..',C'-/',9C'.',C',',17C'.',C'''=',66C'.' @V2A3765 02973000
  3081. DC C'ABCDEFGHI',7C'.',C'JKLMNOPQR',8C'.' @V2A3765 02974000
  3082. DC C'STUVWXYZ',6C'.',C'0123456789',6C'.' @V2A3765 02975000
  3083. WTOECB DC F'0' @V200809 02976000
  3084. DOSF DC X'0' @V305066 02977000
  3085. SPACE 2 02978000
  3086. LIBRCD DC 65F'0' @V200809 02979000
  3087. SYMRCD EQU X'40' @V2A3765 02980000
  3088. CESDRCD EQU X'20' @V2A3765 02981000
  3089. ESDRCD EQU X'0F' @V2A3765 02982000
  3090. SEGEND EQU X'04' @V2A3765 02983000
  3091. CRRCD EQU X'03' @V2A3765 02984000
  3092. RLDRCD EQU X'02' @V2A3765 02985000
  3093. FINRCD EQU X'01' @V2A3765 02986000
  3094. LIBEND EQU * @V2A3765 02987000
  3095. LIBLEN EQU LIBEND-LIBRCD @V2A3765 02988000
  3096. SPACE 2 02989000
  3097. PRTBUF DC C'1' @V200809 02990000
  3098. SPCNTRL EQU X'40' @V2A3765 02991000
  3099. CDBUF DC CL133' ' @V2A3765 02992000
  3100. HOLDLINE DC CL134' ' @V2A3765 02993000
  3101. SPACE 2 02994000
  3102. SCANSWT DC X'0' @VM08595 02995000
  3103. KEYSCAN EQU X'80' @VM08595 02996000
  3104. DISPSCAN EQU X'40' @VM08595 02997000
  3105. DATASCAN EQU X'20' @VM03203 02998000
  3106. RETBLNKS EQU X'10' @VM03203 02999000
  3107. INPUTERR EQU X'08' @VM03203 03000000
  3108. SPACE 3 03001000
  3109. DUPSWT DC X'00' @VM03203 03002000
  3110. DUPFRST EQU X'80' @VM03203 03003000
  3111. DUPSTRTA EQU X'40' @VM03203 03004000
  3112. DUPENDA EQU X'20' @VM03203 03005000
  3113. DUPHELD EQU X'04' @VM03203 03006000
  3114. DUPMSG EQU X'02' @VM03203 03007000
  3115. DUPEND EQU X'01' @VM03203 03008000
  3116. SPACE 2 03009000
  3117. SWT DC X'41' @V2A3765 03010000
  3118. ZAPFM EQU X'80' ZAP A FIXED (TRANSIENT) MODULE @VM03228 03011000
  3119. CONSOLE EQU X'40' @V200809 03012000
  3120. FSTCSECT EQU X'20' @V200809 03013000
  3121. MODBUF EQU X'10' @V2A3765 03014000
  3122. ALLCSECT EQU X'08' @V2A3765 03015000
  3123. ZAPM EQU X'04' ZAP A (VARIABLE) MODULE @VM03228 03016000
  3124. ZAPT EQU X'02' ZAP TEXT @V2A3765 03017000
  3125. PRINT EQU X'01' @V2A3765 03018000
  3126. SPACE 2 03019000
  3127. SWT2 DC X'00' ADDITIONAL FLAG(S): @VM03228 03020000
  3128. MULTLIB EQU X'80' INDICATES MULTIPLE LIBRARIES @VM03228 03021000
  3129. LOGHIT EQU X'40' LOG RECORD FOUND @V60CE91 03022000
  3130. LOGNHIT EQU X'20' DUMMY LOG RECORD @V60CE91 03023000
  3131. REPNOLOG EQU X'10' REP NOT YET LOGGED @VA10327 03023100
  3132. SPACE 2 03024000
  3133. OPSWT DC X'00' @V200809 03025000
  3134. NAMEHIT EQU X'80' @V200809 03026000
  3135. VEROP EQU X'40' @V200809 03027000
  3136. REPOP EQU X'20' @V200809 03028000
  3137. NOGO EQU X'10' @V200809 03029000
  3138. VERINP EQU X'08' @V200809 03030000
  3139. BASEHIT EQU X'04' @VM08551 03031000
  3140. FILEFND EQU X'02' @V2A3765 03032000
  3141. DUMPHIT EQU X'01' @V2A3765 03033000
  3142. SPACE 3 03034000
  3143. LINESWT DC X'00' @V2A3765 03035000
  3144. FRSTLINE EQU X'80' @V2A3765 03036000
  3145. LASTLINE EQU X'40' @V2A3765 03037000
  3146. FINCSECT EQU X'20' @V2A3765 03038000
  3147. DSLINE EQU X'10' @V2A3765 03039000
  3148. CARDPRTD EQU X'08' @V2A3765 03040000
  3149. LASTREC EQU X'04' @V2A3765 03041000
  3150. ESDFND EQU X'02' @V2A3765 03042000
  3151. LSTLNPRT EQU X'01' @V2A3765 03043000
  3152. SPACE 2 03044000
  3153. LIBSWT DC X'00' @V2A3765 03045000
  3154. INPUT EQU X'80' @V2A3765 03046000
  3155. CONS EQU X'40' @V2A3765 03047000
  3156. PT EQU X'20' @V2A3765 03048000
  3157. NOPT EQU X'10' @V2A3765 03049000
  3158. INITLIB EQU X'01' INITIAL LIBRARY @V2A3765 03050000
  3159. MAXLIB EQU X'04' TOO MANY LIBRARIES @V2A3765 03051000
  3160. SPACE 3 03052000
  3161. ECSWT DC X'00' @VA04591 03053000
  3162. ENDCD EQU X'80' @VA04591 03054000
  3163. ORGCD EQU X'40' @VA04197 03055000
  3164. NEWCT EQU X'20' INDICATES START OF NEW CSECT @VA04197 03056000
  3165. EOCSORG EQU X'10' INDICATES ORG AT END OF CSECT @VA09155 03056500
  3166. RECENDA DC F'0' @VA04197 03057000
  3167. ERCODE DC X'0' @V200809 03058000
  3168. ERR18 EQU X'18' @V2A3765 03059000
  3169. ERR04 EQU X'04' @V2A3765 03060000
  3170. ERR32 EQU X'20' @V305066 03061000
  3171. ERR36 EQU X'24' @V305066 03062000
  3172. ERR100 EQU X'64' @V305066 03063000
  3173. SPACE 2 03064000
  3174. DS 0F @V2A3765 03065000
  3175. TABSTRT EQU * @V2A3765 03066000
  3176. DC CL8'*' @V2A3765 03067000
  3177. DC A(CKAST) @V2A3765 03068000
  3178. VER DC CL8'VER' @V2A3765 03069000
  3179. DC A(GOODTHRE) @V2A3765 03070000
  3180. DC CL8'REP' @V2A3765 03071000
  3181. DC A(GOODTHRE) @V2A3765 03072000
  3182. CLOG DC CL8'LOG' @VMI0082 03073000
  3183. DC A(LOGRTN) @V60CE91 03074000
  3184. DC CL8'END' @V2A3765 03075000
  3185. DC A(CONEND) @V2A3765 03076000
  3186. DC CL8'BASE' @V2A3765 03077000
  3187. DC A(BASEREC) @V2A3765 03078000
  3188. DC CL8'NAME' @V2A3765 03079000
  3189. DC A(NAMEREC) @V2A3765 03080000
  3190. DC CL8'DUMP' @V2A3765 03081000
  3191. DC A(DUMPREC) @V2A3765 03082000
  3192. DC CL8'VERIFY' @V2A3765 03083000
  3193. DC A(GOODTHRE) @V2A3765 03084000
  3194. TABEND EQU * @V2A3765 03085000
  3195. SPACE 2 03086000
  3196. OPTTAB EQU * @V2A3765 03087000
  3197. DC CL8'INPUT' @V2A3765 03088000
  3198. DC A(INPTOPT) @V2A3765 03089000
  3199. DC CL8'TERM' @V2A3765 03090000
  3200. DC A(CONSOPT) @V2A3765 03091000
  3201. DC CL8'PRINT' @V2A3765 03092000
  3202. DC A(PRINTOPT) @V2A3765 03093000
  3203. DC CL8'NOPRINT' @V2A3765 03094000
  3204. DC A(NOPRTOPT) @V2A3765 03095000
  3205. DC CL8')' @V2A3765 03096000
  3206. DC A(OPTEND) @V2A3765 03097000
  3207. DC 8X'FF' @V2A3765 03098000
  3208. DC A(OPTEND) @V2A3765 03099000
  3209. OPTTABE EQU * @V2A3765 03100000
  3210. SPACE 2 03101000
  3211. TABADDR EQU 8 DISPLACEMENT OF BRANCH ADDR @V2A3765 03102000
  3212. TABENT EQU 12 LENGTH OF TABLE ENTRY @V2A3765 03103000
  3213. TABNUM EQU (TABEND-TABSTRT)/TABENT NO. OF TABLE ENTRIES @V2A3765 03104000
  3214. OPTNUM EQU (OPTTABE-OPTTAB)/TABENT @V2A3765 03105000
  3215. SPACE 3 03106000
  3216. ESDREC DC X'02C5E2C4' @V2A3765 03107000
  3217. ENDREC DC X'61FFFF61' @V2A3765 03108000
  3218. TXTREC DC X'02E3E7E3' @V2A3765 03109000
  3219. ENDRECA DC XL4'02C5D5C4' @VA04591 03110000
  3220. SPACE 3 03111000
  3221. LFTPRN EQU C'(' @V200809 03112000
  3222. RGTPRN EQU C')' @V200809 03113000
  3223. BLANK EQU C' ' @V200809 03114000
  3224. COMMA EQU C',' @V200809 03115000
  3225. A EQU C'A' @VM08595 03116000
  3226. F EQU C'F' @VM08595 03117000
  3227. M3 EQU 3 MASK B'0011' @VA09155 03117300
  3228. M7 EQU 7 MASK B'0111' @VA09155 03117600
  3229. ZERO EQU C'0' @VM08595 03118000
  3230. NINE EQU C'9' @VM08595 03119000
  3231. XZERO EQU 0 @VA07108 03120000
  3232. XONE EQU 1 @VA10838 03121000
  3233. SPACE 3 03122000
  3234. EJECT 03123000
  3235. * 03124000
  3236. * MESSAGES WRITTEN TO SYSPRINT AND TO THE CONSOLE WHEN IN 03125000
  3237. * CONSOLE MODE. 03126000
  3238. * 03127000
  3239. WTOLIST EQU * @V200809 03128000
  3240. DS 0F @V200809 03129000
  3241. WTOLEN DC AL2(0) WTO LENGTH @V200809 03130000
  3242. DC B'0000000000000000' MCS FLAGS @V200809 03131000
  3243. WTOMSG DC 80C' ' MESSAGE BUFFER @V2A3765 03132000
  3244. SPACE 3 03133000
  3245. LIBNTFDL DC AL1(LIBNTFDE-LIBNTFDS) @V2A3765 03134000
  3246. LIBNTFDS DC C'DMSZAP002W ' @V2A3765 03135000
  3247. DC C'FILE ''' @V2A3765 03136000
  3248. LIBNTFDN DC CL8' ' @V2A3765 03137000
  3249. DC C' ' @V2A3765 03138000
  3250. LIBNTFDT DC CL8' ' @V2A3765 03139000
  3251. DC C''' NOT FOUND.' @V2A3765 03140000
  3252. LIBNTFDE EQU * @V2A3765 03141000
  3253. SPACE 3 03142000
  3254. FLUSHMGL DC AL1(FLUSHMGE-FLUSHMGN) @V200809 03143000
  3255. FLUSHMGN DC C'DMSZAP193W ' @V305066 03144000
  3256. FLUSHMGT DC C'PRECEDING CONTROL RECORD FLUSHED.' @V2A3765 03145000
  3257. FLUSHMGE EQU * @V200809 03146000
  3258. SPACE 2 03147000
  3259. CSTNTFDL DC AL1(CSTNTFDE-CSTNTFDN) @V200809 03148000
  3260. CSTNTFDN DC C'DMSZAP194W ' @V305066 03149000
  3261. CSTNTFDT DC C'CSECT NOT FOUND IN ' @VA03621 03150000
  3262. CSTNTFTY DC CL8' ' @VA03621 03151000
  3263. DC C' ''' @VA03621 03152000
  3264. CSTNTFDM DC CL8' ' @VA03621 03153000
  3265. DC C''' - SET NO GO SWITCH.' @V2A3765 03154000
  3266. CSTNTFDE EQU * @V200809 03155000
  3267. SPACE 2 03156000
  3268. NOGOMGL DC AL1(NOGOMGE-NOGOMGN) @V200809 03157000
  3269. NOGOMGN DC C'DMSZAP190W ' @V305066 03158000
  3270. NOGOMGT DC C'INVALID CONTROL RECORD OR NOGO SWITCH SET.' @V2A3765 03159000
  3271. NOGOMGE EQU * @V200809 03160000
  3272. SPACE 2 03161000
  3273. ENDMSGL DC AL1(ENDMSGE-ENDMSGN) @V200809 03162000
  3274. ENDMSGN DC C'DMSZAP750I ' @V2A3765 03163000
  3275. ENDMSGT DC C'ZAP PROCESSING COMPLETE.' @V2A3765 03164000
  3276. ENDMSGE EQU * @V200809 03165000
  3277. SPACE 2 03166000
  3278. VERJMSGL DC AL1(VERJMSGE-VERJMSGN) @V200809 03167000
  3279. VERJMSGN DC C'DMSZAP200W ' @V2A3765 03168000
  3280. DC C'VERIFY REJECT - SET NO GO SWITCH.' @V2A3765 03169000
  3281. VERJMSGE EQU * @V200809 03170000
  3282. SPACE 2 03171000
  3283. OVLPMSGL DC AL1(OVLPMSGE-OVLPMSGN) @V200809 03172000
  3284. OVLPMSGN DC C'DMSZAP191W ' @V305066 03173000
  3285. DC C'PATCH OVERLAPS - SET NO GO SWITCH.' @V2A3765 03174000
  3286. OVLPMSGE EQU * @V200809 03175000
  3287. SPACE 3 03176000
  3288. INVADMGL DC AL1(INVADMGE-INVADMGN) @V2A3765 03177000
  3289. INVADMGN DC C'DMSZAP248W ' @V2A3765 03178000
  3290. DC C'INVALID VER/REP DISP - SET NO GO SWITCH.' @V2A3765 03179000
  3291. INVADMGE EQU * @V2A3765 03180000
  3292. SPACE 2 03181000
  3293. CSTFDMGL DC AL1(CSTFDMGE-CSTFDMGN) @V200809 03182000
  3294. CSTFDMGN DC C'DMSZAP751I ' @V2A3765 03183000
  3295. DC C'MEMBER FOUND IN LIBRARY ' @V2A3765 03184000
  3296. DC C'''' @V200809 03185000
  3297. CSTFDMGT DC CL8' ' @V200809 03186000
  3298. DC C'''.' @V2A3765 03187000
  3299. CSTFDMGE EQU * @V200809 03188000
  3300. SPACE 3 03189000
  3301. MEMNTFDL DC AL1(MEMNTFDE-MEMNTFDN) @V2A3765 03190000
  3302. MEMNTFDN DC C'DMSZAP247W ' @V2A3765 03191000
  3303. MEMNTFDT DC C'MEMBER ''' @V2A3765 03192000
  3304. MEMNTFDM DC CL8' ' @V2A3765 03193000
  3305. DC C''' NOT FOUND - SET NO GO SWITCH.' @V2A3765 03194000
  3306. MEMNTFDE EQU * @V2A3765 03195000
  3307. SPACE 3 03196000
  3308. NOLDRTBL DC AL1(NOLDRTBE-NOLDRTBN) @V2A3765 03197000
  3309. NOLDRTBN DC C'DMSZAP246W ' @V2A3765 03198000
  3310. NOLDRTBT DC C'NO LOADER TABLE PRESENT FOR MODULE ''' @V2A3765 03199000
  3311. NOLDRTBM DC CL8' ' @V2A3765 03200000
  3312. DC C''' - SET NO GO SWITCH.' @V2A3765 03201000
  3313. NOLDRTBE EQU * @V2A3765 03202000
  3314. SPACE 3 03203000
  3315. ODDIGITL DC AL1(ODDIGITE-ODDIGITN) @V200809 03204000
  3316. ODDIGITN DC C'DMSZAP192W ' @V305066 03205000
  3317. DC C'ERROR-ODD NUMBER OF DIGITS-SET NO GO SWITCH.' @V2A3765 03206000
  3318. ODDIGITE EQU * @V200809 03207000
  3319. SPACE 2 03208000
  3320. INVBAMGL DC AL1(INVBAMGE-INVBAMGN) @VM08551 03209000
  3321. INVBAMGN DC C'DMSZAP195W ' @V305066 03210000
  3322. DC C'BASE VALUE INVALID - SET NO GO SWITCH.' @V2A3765 03211000
  3323. INVBAMGE EQU * @VM08551 03212000
  3324. SPACE 3 03213000
  3325. CSCTHDRM DC C'CSECT NAME ' @V2A3765 03214000
  3326. CSECTL DC C'SIZE ' @VA04197 03215000
  3327. SPACE 3 03216000
  3328. DUPMSGN DC C'LINES ' @V2A3765 03217000
  3329. FRSTADDR DC CL6' ' @V2A3765 03218000
  3330. DC C' TO ' @V2A3765 03219000
  3331. SECDADDR DC CL6' ' @V2A3765 03220000
  3332. DC C' SAME AS ABOVE' @V2A3765 03221000
  3333. DC CL97' ' @V2A3765 03222000
  3334. EJECT 03223000
  3335. * 03224000
  3336. * ERROR MESSAGES WRITTEN TO THE CONSOLE. 03225000
  3337. * 03226000
  3338. DS 0F @V200809 03227000
  3339. INVPARM EQU * @V200809 03228000
  3340. DMSERR NUM=70,LET=E,TEXT='INVALID PARAMETER ''........''', X03229000
  3341. SUB=(CHARA,(R2)) @V200809 03230000
  3342. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03231000
  3343. BR R10 @V2A3765 03232000
  3344. EJECT 1 03233000
  3345. PRTERMSG EQU * @V2A3765 03234000
  3346. DMSERR NUM=245,LET=S,SUB=(DEC,(R15)), @V2A3765X03235000
  3347. TEXT='ERROR ''...'' ON PRINTER' @V2A3765 03236000
  3348. BAL R10,CLOSELIB CLOSE LIBRARY @V2A3765 03237000
  3349. BAL R10,CLOSINP AND INPUT FILE @V2A3765 03238000
  3350. MVI ERCODE,ERR100 SET RC = 100 @V305066 03239000
  3351. B NOMORE @V2A3765 03240000
  3352. EJECT 1 03241000
  3353. MISSLIB EQU * @V200809 03242000
  3354. DMSERR NUM=001,LET=E,TEXT='NO FILENAME SPECIFIED' @V2A3765 03243000
  3355. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03244000
  3356. BR R10 @V2A3765 03245000
  3357. EJECT 1 03246000
  3358. NOFUNC EQU * @V2A3765 03247000
  3359. DMSERR NUM=047,LET=E,TEXT='NO FUNCTION SPECIFIED' @V2A3765 03248000
  3360. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03249000
  3361. BR R10 @V2A3765 03250000
  3362. EJECT 1 03251000
  3363. LIBNTFD1 EQU * @V200809 03252000
  3364. LA R7,8(,R8) GET FILETYPE ADDRESS @V2A3765 03253000
  3365. DMSERR NUM=002,LET=E,MF=(E,RDERLIST), @V2A3765X03254000
  3366. TEXT='FILE ''........ ........'' NOT FOUND', @V2A3765X03255000
  3367. SUB=(CHARA,(8),CHARA,(7)) @V2A3765 03256000
  3368. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03257000
  3369. BR R10 @V200809 03258000
  3370. EJECT 1 03259000
  3371. INVFUNC EQU * @V2A3765 03260000
  3372. DMSERR NUM=014,LET=E,SUB=(CHARA,(R2)), @V2A3765X03261000
  3373. TEXT='INVALID FUNCTION ''........''' @V2A3765 03262000
  3374. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03263000
  3375. BR R10 @V2A3765 03264000
  3376. EJECT 1 03265000
  3377. INVFORM EQU * @V2A3765 03266000
  3378. LA R8,RDNAME GET FILE NAME @V2A3765 03267000
  3379. LA R10,RDTYPE AND FILE TYPE @V2A3765 03268000
  3380. DMSERR NUM=056,LET=E,SUB=(CHARA,(R8),CHARA,(R10)), @V2A3765X03269000
  3381. TEXT='FILE ''........ ........'' CONTAINS INVALID RECORDX03270000
  3382. FORMATS',MF=(E,RDERLIST) @V2A3765 03271000
  3383. BAL R10,CLOSELIB CLOSE LIBRARY @V2A3765 03272000
  3384. BAL R10,CLOSINP CLOSE INPUT @V2A3765 03273000
  3385. MVI ERCODE,ERR32 SET RETURN CODE @V305066 03274000
  3386. B NOMORE @V2A3765 03275000
  3387. EJECT 1 03276000
  3388. LIBNTV EQU * @V200809 03277000
  3389. LA R8,STNAME GET LIBRARY NAME @V200809 03278000
  3390. LA R7,8(,R8) GET FILETYPE ADDRESS @V2A3765 03279000
  3391. DMSERR NUM=208,LET=E,MF=(E,RDERLIST),TEXT='FILE ''........ ...X03280000
  3392. .....'' IS NOT VARIABLE RECORD FORMAT', @V2A3765X03281000
  3393. SUB=(CHARA,(8),CHARA,(7)) @V2A3765 03282000
  3394. SPACE 1 03283000
  3395. BAL R10,CLOSELIB CLOSE LIBRARY @V2A3765 03284000
  3396. BAL R10,CLOSINP AND INPUT FILE @V2A3765 03285000
  3397. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03286000
  3398. B NOMORE @V2A3765 03287000
  3399. EJECT 1 03288000
  3400. FILENTF EQU * @V2A3765 03289000
  3401. LA R7,8(,R8) GET FILETYPE ADDRESS @V2A3765 03290000
  3402. DMSERR NUM=07,LET=E,MF=(E,RDERLIST), @V2A3765X03291000
  3403. TEXT='FILE ''........ ........'' IS NOT FIXED, 80 CHAR. X03292000
  3404. RECORDS',SUB=(CHARA,(8),CHARA,(7)) @V2A3765 03293000
  3405. BAL R10,CLOSELIB GO CLOSE LIBRARY @V2A3765 03294000
  3406. BAL R10,CLOSINP AND INPUT FILE @V2A3765 03295000
  3407. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03296000
  3408. B NOMORE @V2A3765 03297000
  3409. EJECT 1 03298000
  3410. INVOPT EQU * @V2A3765 03299000
  3411. DMSERR NUM=003,LET=E,SUB=(CHARA,(R2)), @V2A3765X03300000
  3412. TEXT='INVALID OPTION ''........''' @V2A3765 03301000
  3413. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03302000
  3414. BR R10 @V2A3765 03303000
  3415. EJECT 1 03304000
  3416. LIBRO EQU * @V200809 03305000
  3417. LA R8,STNAME SET LIBRARY NAME ADDR @V200809 03306000
  3418. LA R7,STNAME+8 AND FILE TYPE ADDRESS @V2A3765 03307000
  3419. DMSERR MF=(E,RDERLIST),NUM=210,LET=E,TEXT='FILE ''........ ...X03308000
  3420. .....'' IS ON A READ/ONLY DISK', @V2A3765X03309000
  3421. SUB=(CHARA,(R8),CHARA,(R7)) @V2A3765 03310000
  3422. SPACE 1 03311000
  3423. BAL R10,CLOSELIB GO CLOSE LIBRARY @V2A3765 03312000
  3424. BAL R10,CLOSINP AND INPUT FILE @V2A3765 03313000
  3425. MVI ERCODE,ERR36 SET RC = 36 @V305066 03314000
  3426. B NOMORE @V2A3765 03315000
  3427. EJECT 1 03316000
  3428. RDLIBERR EQU * @V2A3765 03317000
  3429. LR R10,R15 SAVE RETURN CODE @V2A3765 03318000
  3430. TM SCANSWT,INPUTERR INPUT FILE ERROR? @V2A3765 03319000
  3431. BO INPTERR1 BRANCH IF YES @V2A3765 03320000
  3432. LA R8,RDNAME GET FILENAME ADDRESS @V2A3765 03321000
  3433. LA R7,RDTYPE GET FILETYPE ADDRESS @V2A3765 03322000
  3434. LA R14,RDMODE GET FILEMODE ADDRESS @V2A3765 03323000
  3435. B LIBERR @V2A3765 03324000
  3436. INPTERR1 EQU * @V2A3765 03325000
  3437. LA R8,INFILEN POINT TO FILENAME @V2A3765 03326000
  3438. LA R7,INFILEN+8 AND TO FILETYPE @V2A3765 03327000
  3439. LA R14,INMODE AND FILEMODE @V2A3765 03328000
  3440. LIBERR EQU * @V2A3765 03329000
  3441. DMSERR MF=(E,RDERLIST),NUM=104,LET=S,TEXT='ERROR ''...'' READIX03330000
  3442. NG FILE ''........ ........ ..'' FROM DISK', @V2A3765X03331000
  3443. SUB=(DEC,(10),CHARA,(8),CHARA,(7),CHARA,(14)) @V2A3765 03332000
  3444. BAL R10,CLOSELIB GO CLOSE LIBRARY @V2A3765 03333000
  3445. BAL R10,CLOSINP AND INPUT FILE @V2A3765 03334000
  3446. MVI ERCODE,ERR18 SET ERROR CODE @V2A3765 03335000
  3447. B NOMORE @V2A3765 03336000
  3448. EJECT 1 03337000
  3449. RDERLIST DMSERR MF=L,SUB=(HEX,0,CHAR,0,CHAR,0,CHAR,0) @V2A3765 03338000
  3450. SPACE 2 @VA04197 03339000
  3451. DMSTORE DMSERR TEXT='VIRTUAL STORAGE EXCEEDED', @VA04197X03340000
  3452. LET=S,NUM=109 @VA04197 03341000
  3453. MVI ERCODE,104 SET ERROR CODE @VA04197 03342000
  3454. B CONEND @VA04197 03343000
  3455. EJECT 03343125
  3456. DUMMYLOG EQU * 03343250
  3457. DMSERR TEXT='DUMMY LOG ENTRY IN FILE ''........ ZAPLOG ..''', X03343375
  3458. NUM=249,LET=I,SUB=(CHARA,MEMNAME,CHARA,AUXFM2), X03343500
  3459. MF=(E,RDERLIST) @VA10327 03343625
  3460. BR R10 RETURN @VA10327 03343750
  3461. SPACE 03344000
  3462. LTORG NEEDED CONSTANTS ... @VM03228 03345000
  3463. EJECT 03346000
  3464. ESD DSECT @V2A3765 03347000
  3465. RECTYPE DS CL4 @V2A3765 03348000
  3466. DS CL6 @V2A3765 03349000
  3467. ESDNUM DS CL2 @V2A3765 03350000
  3468. DS CL2 @VA07108 03351000
  3469. ESDCNT DS CL2 @VA07108 03352000
  3470. ESDHDR EQU * @V2A3765 03353000
  3471. ESDHDRL EQU ESDHDR-RECTYPE @V2A3765 03354000
  3472. SPACE 3 03355000
  3473. ESDDAT DSECT @V2A3765 03356000
  3474. ESDNAME DS CL8 @V2A3765 03357000
  3475. ESDTYPE DS C @V2A3765 03358000
  3476. ESDSTART DS AL3 @V2A3765 03359000
  3477. DS C @V2A3765 03360000
  3478. ESDLNTH DS AL3 @V2A3765 03361000
  3479. ESDEND EQU * @V2A3765 03362000
  3480. ESDENDL EQU ESDEND-ESDNAME @V2A3765 03363000
  3481. SPACE 3 03364000
  3482. TXTDAT DSECT @V2A3765 03365000
  3483. TXTTYPE DS CL4 @V2A3765 03366000
  3484. DS C @V2A3765 03367000
  3485. TXTADDR DS AL3 @V2A3765 03368000
  3486. DS CL2 @V2A3765 03369000
  3487. TXTBYTES DS H @V2A3765 03370000
  3488. DS CL2 @V2A3765 03371000
  3489. TXTID DS H @V2A3765 03372000
  3490. TXTINFO DS CL56 @V2A3765 03373000
  3491. DS CL8 @V2A3765 03374000
  3492. TXTEND EQU * @V2A3765 03375000
  3493. SPACE 3 03376000
  3494. DICTENT DSECT @V2A3765 03377000
  3495. DICTNAME DS CL8 @V2A3765 03378000
  3496. DICTINDX DS CL2 @V2A3765 03379000
  3497. DS C @V2A3765 03380000
  3498. DICTTYPE DS C @V2A3765 03381000
  3499. EJECT 03382000
  3500. NUCON @V200809 03383000
  3501. CMSCB @V200809 03384000
  3502. FSTB @V200809 03385000
  3503. * 03386000
  3504. * MODULE HEADER RECORD 03387000
  3505. * 03388000
  3506. MDREC DSECT @V2A3765 03389000
  3507. MDSTART DS 1F MODULE STARTING ADDRESS @V2A3765 03390000
  3508. MDFIRST DS 1F MODULE BEGINNING ADDRESS @V2A3765 03391000
  3509. MDLAST DS 1F MODULE ENDING ADDRESS @V2A3765 03392000
  3510. DS 5F @V2A3765 03393000
  3511. MDLDRFGS DS 1F LOADER FLAGS @V2A3765 03394000
  3512. DS 1F @V2A3765 03395000
  3513. MDLDRENT DS 1H NO. LOADER TABLE ENTRIES @V2A3765 03396000
  3514. SPACE 3 03397000
  3515. * 03398000
  3516. * LOADER RECORD ENTRY 03399000
  3517. * 03400000
  3518. LDRENT DSECT @V2A3765 03401000
  3519. LDRNAME DS D SYMBOLIC NAME FROM ESD @V2A3765 03402000
  3520. LDRFLG1 DS X @V2A3765 03403000
  3521. LDRINFO DS 3X @V2A3765 03404000
  3522. LDRNOTE1 DS X USE COUNT FOR DYNAMIC LOAD @V2A3765 03405000
  3523. LDRVALUE DS AL3 @V2A3765 03406000
  3524. LDRFLG2 DS X @V2A3765 03407000
  3525. LDRIDN EQU X'80' ENTRY ADDED BY IDENTITY @V2A3765 03408000
  3526. LDRLOC EQU X'04' NAME LOCATED IN A TXTLIB @V2A3765 03409000
  3527. LDRSECT EQU X'02' SECTION DEFINITION ENTRY @V2A3765 03410000
  3528. LDRCHN EQU X'01' IDENTITY CHAIN EXISTS @V2A3765 03411000
  3529. LDRIDCH DS AL3 ADDRESS OF IDENTITY CHAIN @V2A3765 03412000
  3530. LDREND EQU * @V2A3765 03413000
  3531. LDRLNTH EQU LDREND-LDRENT LOADER RECORD LENGTH @V2A3765 03414000
  3532. EJECT 1 03415000
  3533. REGEQU @V200809 03416000
  3534. FSCBD @V60CE91 03417000
  3535. END 03418000