Table of Contents

DMSGRN Source

References

Source Listing

DMSGRN.ASSEMBLE.txt
  1. GRN TITLE 'DMSGRN (CMS) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SERIALIZATION OF INPUT @V200899 00002000
  3. MACRO @V200899 00003000
  4. DFSCB , @V200899 00004000
  5. DFSCB DSECT @V200899 00005000
  6. DS 0F ALIGNMENT @V200899 00006000
  7. FSCBFNCT DS CL8 CONTROL FIELD FOR I/O FUNCTION @V200899 00007000
  8. FSCBID DS 0CL18 FILE IDENTIFIER @V200899 00008000
  9. FSCBFN DS CL8 FILE NAME @V200899 00009000
  10. FSCBFT DS CL8 FILE TYPE @V200899 00010000
  11. FSCBFM DS CL2 FILE MODE @V200899 00011000
  12. FSCBRECN DS H RELATIVE REC. NO. @V200899 00012000
  13. FSCBBUFA DS A BUFFER ADDRESS @V200899 00013000
  14. FSCBSIZE DS F BUFFER SIZE @V200899 00014000
  15. FSCBFRMT DS CL2 FILE FORMAT @V200899 00015000
  16. FSCBNOR DS 0H NO. OF REC'S TO READ @V200899 00016000
  17. FSCBLIOB DS A @V200899 00017000
  18. MEND @V200899 00018000
  19. EJECT 00019000
  20. *. 00020000
  21. * 00021000
  22. * MODULE NAME - DMSGRN 00022000
  23. * 00023000
  24. * FUNCTION - TO EDIT STAGE1 OUTPUT (STAGE2 INPUT), 00024000
  25. * BUILD 3705 ASSEMBLER FILES, LKED TEXT 00025000
  26. * FILES AND AN EXEC MACRO FILE. 00026000
  27. * 00027000
  28. * ATTRIBUTES - RUNS IN A VIRTUAL MACHINE UNDER 00028000
  29. * CMS CONTROL RUNS IN THE CMS @VA01926 00029000
  30. * USER AREA - NON-REENTRANT, NON-REUSABLE @VA01926 00030000
  31. * 00031000
  32. * ENTRY POINTS - DMSGRN 00032000
  33. * 00033000
  34. * ENTRY CONDITIONS - GPR 1 - ADDRESS OF INPUT PARAMETER 00034000
  35. * LIST. 00035000
  36. * GPR 13 - ADDRESS OF SAVE AREA. 00036000
  37. * GPR 14 - RETURN ADDRESS. 00037000
  38. * GPR 15 - CSECT BASE ADDRESS. 00038000
  39. * 00039000
  40. * EXIT CONDITIONS - GPR 0 - GPR 11 NOT PREDICTABLE. 00040000
  41. * GPR 12 - CSECT BASE ADDRESS. 00041000
  42. * GPR 13 - ADDRESS OF INPUT SAVE AREA. 00042000
  43. * GPR 14 - RETURN ADDRESS. 00043000
  44. * GPR 15 - RETURN CODE NON-ZERO 00044000
  45. * INDICATES AN ERROR OCCURED. 00045000
  46. * CALLS TO OTHER - NONE. 00046000
  47. * ROUTINES 00047000
  48. * 00048000
  49. * EXTERNAL REFERENCES - NONE. 00049000
  50. * 00050000
  51. * TABLES & WORK AREAS - 00051000
  52. * 00052000
  53. * DSECT FOR INPUT SAVE AREA 00053000
  54. * 00054000
  55. * SAVEAREA DSECT 00055000
  56. * SAVEREGS DS 0F SAVE INPUT REG'S 00056000
  57. * SVREG14 DS F REG 14 SAVE 00057000
  58. * SVREG15 DS F REG 15 SAVE 00058000
  59. * SVREG0 DS F REG 0 SAVE 00059000
  60. * SVREG1 DS F REG 1 SAVE 00060000
  61. * 00061000
  62. * OPTION PARAMETER LIST 00062000
  63. * 00063000
  64. * OPTLIST DS 0CL9 OPTION KEYWORD & SWITCH 00064000
  65. * RUN DC C'RUN ',X'00' 00065000
  66. * NORUN DC C'NORUN ',X'00' 00066000
  67. * SAVE DC C'SAVE ',X'00' 00067000
  68. * NOSAVE DC C'NOSAVE ',X'00' 00068000
  69. * DC C') ',X'00' 00069000
  70. * DC X'FF' END OF OPTION LIST 00070000
  71. * 00071000
  72. * DSECT FOR FILE SYSTEM CONTROL BLOCK (FSCB) 00072000
  73. * 00073000
  74. * DFSCB DSECT 00074000
  75. * DS 0F ALIGNMENT 00075000
  76. * FSCBFNCT DS CL8 CONTROL FIELD FOR I/O FUNCTION 00076000
  77. * FSCBID DS 0CL18 FILE IDENTIFIER 00077000
  78. * FSCBFN DS CL8 FILE NAME 00078000
  79. * FSCBFT DS CL8 FILE TYPE 00079000
  80. * FSCBFM DS CL2 FILE MODE 00080000
  81. * FSCBRECN DS H RELATIVE REC. NO. 00081000
  82. * FSCBBUFA DS A BUFFER ADDRESS 00082000
  83. * FSCBSIZE DS F BUFFER SIZE 00083000
  84. * FSCBFRMT DS CL2 FILE FORMAT 00084000
  85. * FSCBNOR DS 0H NO. OF REC'S TO READ 00085000
  86. * FSCBLIOB DS A 00086000
  87. * 00087000
  88. * FSCB'S 00088000
  89. * 00089000
  90. * INPFSCB FSCB ' ',BUFFER=INPUT,BSIZE=80 00090000
  91. * 00091000
  92. * ASSEMBLER OUTPUT FSCB 00092000
  93. * 00093000
  94. * OUTFSCB FSCB 'DUMMY DUMMY A1',BUFFER=OUTPUT,BSIZE=80 00094000
  95. * 00095000
  96. * EXEC PROC FILE FSCB 00096000
  97. * 00097000
  98. * PROC FSCB 'STG2 EXEC A1',BUFFER=PROCBUF,BSIZE=80 00098000
  99. * 00099000
  100. * SKELTON FSCB 00100000
  101. * 00101000
  102. * DUMMYFCB FSCB 'DUMMY ASSEMBLE A1',BUFFER=OUTPUT,BSIZE=80 00102000
  103. * 00103000
  104. * REGISTER USAGE - GPR 0 - NOT USED. 00104000
  105. * GPR 1 - WORK REGISTER. 00105000
  106. * GPR 2 - WORK REGISTER. 00106000
  107. * GPR 3 - WORK REGISTER. 00107000
  108. * GPR 4 - WORK REGISTER. 00108000
  109. * GPR 5 - WORK REGISTER 00109000
  110. * GPR 6 - WORK REGISTER. 00110000
  111. * GPR 7 - WORK REGISTER. 00111000
  112. * GPR 8 - WORK REGISTER. 00112000
  113. * GPR 9 - WORK REGISTER. 00113000
  114. * GPR 10 - WORK REGISTER. 00114000
  115. * GPR 11 - SECONDARY BASE REGISTER. 00115000
  116. * GPR 12 - CSECT BASE REGISTER. 00116000
  117. * GPR 13 - BASE ADDRESS OF SAVE AREA. 00117000
  118. * GPR 14 - SUBROUTINE LINKAGE 00118000
  119. * REGISTER. 00119000
  120. * GPR 15 - RETURN CODE REGISTER. 00120000
  121. * 00121000
  122. * NOTES - THIS MODULE IS NOT RE-ENTERENT 00122000
  123. * OR RE-USABLE. 00123000
  124. EJECT 00124000
  125. * COMMAND LINE FORMAT - 00125000
  126. * 00126000
  127. * +---------+-----------------------------------------------+ 00127000
  128. * | | ** ** | 00128000
  129. * | GEN3705 | FNAME FTYPE * FMODE (RUN/NORUN SAVE/NOSAVE) * | 00129000
  130. * | | ** ** | 00130000
  131. * +---------+-----------------------------------------------+ 00131000
  132. * 00132000
  133. * OPERATION - FOLLOWING IS A DISCRIPTION OF ROUTINES, 00133000
  134. * SUB-ROUTINES AND GENERAL SUB-ROUTINES. 00134000
  135. * 00135000
  136. * 00136000
  137. * GENERAL COMMENTS: 00137000
  138. * 00138000
  139. * I/O AND DATA ERRORS WILL CAUSE PROCESSING TO TERMINATE, 00139000
  140. * APPROPRIATE ERROR MESSAGES 00140000
  141. * TO BE GENERATED AND PROCESSING TO TERMINATE. 00141000
  142. * A NORMAL RETURN CODE IS HEX '0000. 00142000
  143. * 00143000
  144. * 00144000
  145. * ROUTINES: 00145000
  146. * 00146000
  147. * INITIALIZATION - 00147000
  148. * 00148000
  149. * REGISTER 1 POINTS TO A PARAMETER CONTAINING THE INPUT FILE 00149000
  150. * ID (NAME AND TYPE) AND OPTIONALLY MODE AND GEN3705 OPTION (SAVE 00150000
  151. * NOSAVE RUN NORUN) 00151000
  152. * 00152000
  153. * PRIMEDIT - 00153000
  154. * 00154000
  155. * THE INPUT FILE IS READ USING THE INPUT FILE READ GENERAL 00155000
  156. * SUB-ROUTINE (FSCBRD) AND EDITED FOR THE EXEC JCL CARD. ALL 00156000
  157. * CARDS READ IN THE PRIMEDIT ROUTINE MUST HAVE A // OR /* 00157000
  158. * IN COLUMNS 1 AND 2 OR AN * IN COLUMN 1. ALL // CARDS ARE 00158000
  159. * EDITED USING THE EDIT INPUT GENERAL SUB-ROUTINE (EDITIN) 00159000
  160. * FOR THE KEYWORD EXEC. IF EXEC IS NOT FOUND THE NEXT CARD IS 00160000
  161. * READ AND EDITED UNTIL AN EXEC IS FOUND. 00161000
  162. * 00162000
  163. * ONCE THE // EXEC JCL CARD IS FOUND THE NEXT KEYWORD IN THE 00163000
  164. * CARD IS EDITED PGM=. IF THE KEYWORD IS NOT FOUND IT IS A DATA 00164000
  165. * ERROR. THE PROGRAM NAME IFKASM, CWAX00 OR IEWL MUST FOLLOW 00165000
  166. * THE KEYWORD PRG= ON THE EXEC CARD OR IT IS A DATA ERROR. 00166000
  167. * 00167000
  168. * THE PROGRAM NAME IS USED TO PASS CONTROL TO EITHER THE IFKASM 00168000
  169. * OR IEWL SUB-ROUTINES. 00169000
  170. * THREE POSSIBLE RETURNS FROM THESE 00170000
  171. * SUB-ROUTINES; NORMAL HEX '00' DISPLACEMENT, DATA ERROR HEX 00171000
  172. * '04' DISPLACEMENT OR I/O ERROR HEX '08' DISPLACEMENT FROM THE 00172000
  173. * RETURN ADDRESS. 00173000
  174. * 00174000
  175. * UPON A NORMAL RETURN FROM THE SUB-ROUTINES PRIMEDIT CONTINUES 00175000
  176. * TO EDIT FOR THE NEXT // EXEC PGM= JCL STATEMENT UNTIL THE 00176000
  177. * END-OF-FILE (EOF) OCCURES. 00177000
  178. * 00178000
  179. * WHEN AN ERROR RETURN IS USED BY EITHER IFKASM OR IEWL PROCESSING 00179000
  180. * IS TERMINATED. 00180000
  181. * 00181000
  182. * WHEN PROCESSING TERMINATES, EITHER NORMALLY OR BY AN ERROR, 00182000
  183. * THE EXEC MACRO FILE IS CLOSED BY THE PROCEDURE END GENERAL 00183000
  184. * SUB-ROUTINE (PROCEND). 00184000
  185. * 00185000
  186. * SUB-ROUTINES: 00186000
  187. * 00187000
  188. * IFKASM - 00188000
  189. * 00189000
  190. * THE JCL FOLLOWING THE EXEC JCL CARD IS READ AND EDITED FOR 00190000
  191. * A //SYSPUNCH AND //SYSIN JCL DD CARD. 00191000
  192. * 00192000
  193. * THE SYSPUNCH DD STATEMENT MUST BE FOUND BEFORE THE SYSIN DD 00193000
  194. * STATEMENT, IF NOT IT WILL BE CONCIDERED A DATA ERROR. OTHERWISE, 00194000
  195. * THE MEMBER NAME OF THE SYSPUNCH DSNAME IS USED FOR THE TXTLIB 00195000
  196. * FILE. 00196000
  197. * 00197000
  198. * THE SYSIN DD STATEMENTS INDICATES THE BEGINING OF THE ASSEMBLER 00198000
  199. * INPUT. EVERY RECORD FOLLOWING THE SYSIN STATEMENT IS TESTED FOR 00199000
  200. * A // OR /* IN COLUMNS 1 AND 2. IF A // OR /* IS NOT FOUND IN 00200000
  201. * THE RECORD THE RECORD IS WRITTEN TO THE ASSEMBLE FILE. 00201000
  202. * WHEN A // OR /* IS 00202000
  203. * FOUND IN COLUMNS 1 AND 2 OR IF AN EOF OCCURES DURING THE READING 00203000
  204. * OF THE INPUT FILE THE ASSEMBLE FILE IS CLOSED USING THE FSCB CLOSE 00204000
  205. * GENERAL SUB-ROUTINE (FSCBCLOS). THE ASMSTAK SUB-ROUTINE IS GIVEN 00205000
  206. * CONTROL TO WRITE THE ASM3705 COMMANDS TO THE EXEC MACRO FILE. 00206000
  207. * 00207000
  208. * INPUT RECORDS ARE READ BY THE FSCBRD AND WRITTEN BY FSCB WRITE 00208000
  209. * GENERAL SUB-ROUTINE (FSCBWT). 00209000
  210. * 00210000
  211. * IEWL - 00211000
  212. * 00212000
  213. * THE JCL FOLLOWING THE EXEC STATEMENT IS READ AND EDITED FOR A 00213000
  214. * //SYSLIN DD CARD. THE RECORDS BETWEEN THE EXEC AND THE SYSLIN CARD 00214000
  215. * MUST CONTAIN A // IN COLUMNS 1 AND 2 OR AN * IN COLUMN 1, IF NOT 00215000
  216. * THIS IS CONCIDERED A DATA ERROR. ALSO, IF AN EOF OCCURES BEFORE THE 00216000
  217. * SYSLIN THIS IS A DATA ERROR. THE DDNAMES OF DATASETS USED 00217000
  218. * BY THE LINK EDIT STEPS ARE EDITED OUT AND PLACED IN THE 00218000
  219. * APPROPRIATE FILEDEF COMMANDS TO BE EXECUTED. 00219000
  220. * 00220000
  221. * WHEN THE //SYSLIN IS FOUND THE SYSLIN SUB-ROUTINE (IEWLSIN) 00221000
  222. * IS GIVEN CONTROL TO PROCESS THE LINKAGE EDITOR INPUT. 00222000
  223. * 00223000
  224. * THREE POSSIBLE RETURNS FROM IEWLSIN ARE; NORMAL, DATA ERROR 00224000
  225. * AND I/O ERROR. 00225000
  226. * 00226000
  227. * THE LKDSTACK SUB-ROUTINE IS GIVEN CONTROL TO WRITE 00227000
  228. * THE LINKAGE EDITOR COMMANDS TO THE EXEC MACRO FILE. 00228000
  229. * 00229000
  230. * IEWLSIN - 00230000
  231. * 00231000
  232. * THE INPUT AFTER THE SYSLIN CARD IS CONCIDERED LINKAGE EDITOR 00232000
  233. * INPUT CONTROL STATEMENTS UNTIL EITHER A // OR /* IS FOUND IN COLUMN 00233000
  234. * 1 AND 2 OR AN EOF OCCURES IN THE INPUT FILE. EACH RECORD IS 00234000
  235. * WRITTEN TO THE NCPXYZLN TEXT FILE VIA THE FSCBWT SUB-ROUTINE. 00235000
  236. * 00236000
  237. * THE SYSLIN INPUT IS EDITED BY THE EDITIN FOR THE KEYWORD 00237000
  238. * ENTRY. WHEN THE EDITOR FINDS THE KEYWORD, 00238000
  239. * CONTROL IS PASSED TO THE SUB-ROUTINE IEWLENT. 00239000
  240. * THREE POSSIBLE RETURNS FROM IEWLENT ARE; NORMAL, DATA ERROR 00240000
  241. * OR I/O ERROR. 00241000
  242. * 00242000
  243. * IEWLENT - 00243000
  244. * 00244000
  245. * THE SYMBOLIC ENTRY NAME IS FOUND AND PLACED IN THE CI3705 COMMAND 00245000
  246. * ENTRYNAM FIELD. 00246000
  247. * 00247000
  248. * GENERAL SUB-ROUTINES: 00248000
  249. * 00249000
  250. * ASMSTAK - 00250000
  251. * 00251000
  252. * THIS ROUTINE BUILDS AND CAUSES THE REQUIRED ASSEMBLER COMMANDS 00252000
  253. * TO BE STACKED IN THE STG2 EXEC MACRO FILE TO PERFORM THE 00253000
  254. * 370X ASSEMBLE. 00254000
  255. * 00255000
  256. * LKDSTACK - 00256000
  257. * 00257000
  258. * THIS ROUTINE BUILDS AND CAUSES THE LKED COMMANDS TO BE STACKED 00258000
  259. * IN THE STG2 EXEC MACRO FILE. 00259000
  260. * 00260000
  261. * CLOSTACK - 00261000
  262. * THIS ROUTINE BUILDS AND CAUSE THE SAVE COMMAND TO BE BUILT IN 00262000
  263. * THE STG2 EXEC MACRO FILE. 00263000
  264. * 00264000
  265. * EDITIN - 00265000
  266. * REGISTER 2 CONTAINS A POINTER TO THE KEYWORD AND CONTROLS FOR 00266000
  267. * EDITING THE INPUT FIELD. 00267000
  268. * 00268000
  269. * WHEN THE KEYWORD IS FOUND THE ADDRESS IS RETURNED IN REGISTER 3 00269000
  270. * AND CONTROL IS RETURN EMMIDIATELY AFTER THE ENTRY BRANCH AND 00270000
  271. * LINK. 00271000
  272. * 00272000
  273. * IF THE KEYWORD IS NOT FOUND THE RETURN IS 4 BYTES BEYOND THE BRANCH 00273000
  274. * AND LINK. 00274000
  275. * 00275000
  276. * DSNEDIT/MEMEDIT - 00276000
  277. * 00277000
  278. * REGISTER 2 CONTAINS THE ADDRESS OF THE FIELD TO RECIEVE 00278000
  279. * THE DSNAME-MEMBER-NAME. REGISTER 3 THE START OF THE DATA SET NAME. 00279000
  280. * THE ROUTINE SCANS FOR AN OPEN PARENTHESIS, INDICATING THE START OF 00280000
  281. * THE MEMBER NAME. THE NAME IS THEN MOVE INTO THE FIELD POINTED TO 00281000
  282. * BY REGISTER 2. IF THE OPEN OR CLOSE PARENTHESIS ARE MISSING THE 00282000
  283. * ERROR RETURN IS USED. 00283000
  284. * 00284000
  285. * FSCBRD - 00285000
  286. * 00286000
  287. * REGISTER 2 CONTAINS THE ADDRESS OF THE FSCB TO BE USED FOR 00287000
  288. * THE FSREAD MACRO. IF AN END-OF-FILE OCCURES DUE TO THE READ THE EOF 00288000
  289. * SWITCH IN SWINFILE IS TURN 'ON' SO THE FSREAD WILL NOT BE 00289000
  290. * ALLOWED TO OCCUR AGAIN. 00290000
  291. * 00291000
  292. * AN I/O ERROR WILL CAUSE THE ERROR RETURN TO BE TAKEN. 00292000
  293. * 00293000
  294. * RETURN POINTS: 00294000
  295. * 00295000
  296. * R14 + 0 NORMAL RETURN 00296000
  297. * R14 + 4 ERROR RETURN 00297000
  298. * R14 + 8 END-OF-FILE 00298000
  299. * 00299000
  300. * FSCBWT - 00300000
  301. * 00301000
  302. * 00302000
  303. * THE OLD SWITCH IN THE SWFILE IS TEST TO DETERMINE IF THE FSCB HAS 00303000
  304. * BEEN OPEN YET. IF NOT THE DUMMY FSCB IS MOVED IN OVER THE OUTFSCB 00304000
  305. * TO INITIALIZE IT. THE FILE TYPE IS CHECKED TO SEE IF THE FILE IS THE 00305000
  306. * LINKAGE EDITOD INPUT TEXT OR THE ASM3705 ASM3705 FILE. 00306000
  307. * THE NCP NAME (OR THE FIRST 6 CHARACTERS) ARE MOVE TI THE FSCB FILE 00307000
  308. * NAME FIELD. THE NUMBERING SEQUENCE, LN OR NN, IS INSTERED 00308000
  309. * AFTER THE NCP NAME. THE FSSTATE MACRO IS USED TO TEST 00309000
  310. * THE FILE STATUS, IF IT EXISTS IT IS ERASED AND THE OLD 00310000
  311. * 'SWITCH' IS TURN ON. 00311000
  312. * 00312000
  313. * THE FSWRITE MACRO IS USED TO WRITE THE RECORDS TOM THE OUTPUT 00313000
  314. * FILE. 00314000
  315. * 00315000
  316. * ERRORS DURING THE WRITE WILL CAUSE THE ERROR RETURN TO BE USED. 00316000
  317. * 00317000
  318. * FSCBCLOS - 00318000
  319. * 00319000
  320. * THIS ROUTINE CLOSES THE OUTFSCB IF IT IS OPEN. THE OLD SWITCH 00320000
  321. * IN THE 'SWFILE' IS TURN 'OFF' AFTER THE FILE IS CLOSED. 00321000
  322. * 00322000
  323. * ERRORS ARE IGNORED. 00323000
  324. * 00324000
  325. * PROCWT - 00325000
  326. * 00326000
  327. * THE 'PROCSW1' IS TEST TO SEE IF THE EXEC MACRO FILE HAS ALREADY BEEN 00327000
  328. * INITIALIZED. IF NOT INITIALIZED THE FILE IS ERASED BY THE FSERASE 00328000
  329. * MACRO AND THE PROCOPEN SWITCH IN 'PROCSW1' IS TURN 'ON'. 00329000
  330. * 00330000
  331. * THE OUTPUT FIELD, PROCBUF, IS BLANKED OUT AND THE FILED POINTED 00331000
  332. * TO BY REGISER 2 IS MOVED INTO PROCBUF. THE FIRST BYTE OF THE REGISTER 00332000
  333. * 2 FIELD CONTAINS THE LENGTH OF TEXT TO BE MOVED. 00333000
  334. * THE DATA IS THEN WRITTEN TO THE NCP NAME EXEC MACRO FILE VIA THE 00334000
  335. * FSWRITE MACRO. 00335000
  336. * 00336000
  337. * ERRORS DURING THE WRITE WILL CAUSE THE ERROR RETURN TO BE USED. 00337000
  338. * 00338000
  339. * RETURN POINTS: 00339000
  340. * 00340000
  341. * R14 + 0 NORMAL RETURN 00341000
  342. * R14 + 4 ERROR RETURN 00342000
  343. * 00343000
  344. * PROCEND - 00344000
  345. * 00345000
  346. * IF THE EXEC MACRO FILE IS OPEN (PROCOPEN SWITCH IN PROCSW1 'ON) 00346000
  347. * THE FSCB IS CLOSED BY ISSUING THE FSCLOSE MACRO. 00347000
  348. * 00348000
  349. * ERRORS DURING THE CLOSE ARE IGNORED. 00349000
  350. * 00350000
  351. * GENMSG - 00351000
  352. * 00352000
  353. * REGISTER 2 CONTAINS A POINTER TO THE MESSAGE TO BE RETURNED 00353000
  354. * TO THE USER. THERE ARE CONTROLS IMBEDDED IN THE MESSAGE TEXT. 00354000
  355. * 00355000
  356. * ERROR MESSAGES 00356000
  357. * 00357000
  358. * DMSGRN054E INCOMPLETE FILE ID SPECIFIED 00358000
  359. * RETURN CODE - 24 00359000
  360. * DMSGRN048E INVALID MODE '........' 00360000
  361. * RETURN CODE - 24 00361000
  362. * DMSGRN002E FILE '....................' NOT FOUND 00362000
  363. * RETURN CODE - 28 00363000
  364. * DMSGRN003E INVALID OPTION '........' 00364000
  365. * RETURN CODE - 24 00365000
  366. * DMSGRN007E FILE '....................' IS NOT FIXED, 00366000
  367. * 80 CHAR. RECORDS 00367000
  368. * RETURN CODE - REFERENCE FSREAD 00368000
  369. * DMSGRN078E INVALID CARD IN INPUT FILE '.... ....' 00369000
  370. * RETURN CODE - 24 00370000
  371. * 00371000
  372. * RUN EXEC LIST 00372000
  373. * 00373000
  374. * EXECRUN DS 0D 00374000
  375. * DC CL8'ATTN' 00375000
  376. * DC CL4'LIFO' 00376000
  377. * DC AL1(16) LENGTH 00377000
  378. * DC AL3(EXECMD) BUFFER ADDR 00378000
  379. * 00379000
  380. * EXECMD DC CL8'EXEC' 00380000
  381. * RUNLIST DC D'0' EXEC PROC MACRO NAME 00381000
  382. * 00382000
  383. * DSECT FOR EDIT INPUT KEYWORD &KEYWORD EDIT CONTROL 00383000
  384. * 00384000
  385. * DEDIT DSECT 00385000
  386. * EDITMAX DS H MAX. NO. OF CHAR TO SCAN IN INPUT 00386000
  387. * EDITFLDL DS H LNTH OF KEYWORD FIELD 00387000
  388. * EDITFLD DS C KEYWORD 00388000
  389. * 00389000
  390. * DSECT FOR INPUT PARAMETER LIST 00390000
  391. * 00391000
  392. * PARMLIST DSECT 00392000
  393. * DS 0D ALIGNMENT 00393000
  394. * INFENTRY DS D ENTRY ADDR 00394000
  395. * INFNAME DS D FILE NAME 00395000
  396. * INFTYPE DS D FILE TYPE 00396000
  397. * INFMODE DS D FILE MODE 00397000
  398. * INOPT DS D INPUT OPTION 00398000
  399. *. 00399000
  400. EJECT 00400000
  401. DMSGRN CSECT @V200899 00401000
  402. REGEQU @V200899 00402000
  403. USING *,R12 @V200899 00403000
  404. USING *+4096,R11 @V200899 00404000
  405. LA R11,2048(R15) @V200899 00405000
  406. LA R11,2048(R11) EST. SECOND BASE REG. @V200899 00406000
  407. USING SAVEAREA,R13 @V200899 00407000
  408. LR R12,R15 SETUP BASE REG. @V200899 00408000
  409. SR R15,R15 ZERO RETURN CODE @V200899 00409000
  410. STM R14,R1,SAVEREGS SAVE INPUT REG'S @V200899 00410000
  411. B START BR AROUND SAVE AREA @V200899 00411000
  412. DC C'DMSGRN ' IDENTIFIER @V200899 00412000
  413. START DS 0H @V200899 00413000
  414. SPACE 3 00414000
  415. *********************************************************************** 00415000
  416. * 00416000
  417. * DETERMINE FILE ID 00417000
  418. * 00418000
  419. *********************************************************************** 00419000
  420. LA R2,INPFSCB LOAD ADD OF INPUT FSCB @V200899 00420000
  421. USING DFSCB,R2 @V200899 00421000
  422. USING PARMLIST,R1 @V200899 00422000
  423. CLC INFNAME,FFS HAS NAME BEEN DEFINED @V200899 00423000
  424. BE IDERROR BR IF NO - ERROR @V200899 00424000
  425. CLI INFNAME,C'(' STARTING OPTIONS? @VA04435 00425000
  426. BE IDERROR YES, FORGOT FILE ID @VA04435 00426000
  427. MVC FSCBFN,INFNAME MOVE FILE NAME TO INPUT FSCB @V200899 00427000
  428. MVC RUNLIST,INFNAME MOVE INPUT FILE NAME TO EXEC @V200899 00428000
  429. * RUN LST 00429000
  430. MVC STG1NAME(6),INFNAME SAVE FIRST 6 CHAR. OF @V200899 00430000
  431. * INPUT FILE 00431000
  432. * NAME FOR THE OUTPUT ASSEMBLER AND 00432000
  433. * LKED FILE NAMES 00433000
  434. SR R4,R4 @V200899 00434000
  435. NMLNGLOP DS 0H @V200899 00435000
  436. LA R4,1(R4) ADD 1 TO STG1 NAME @V200899 00436000
  437. LA R3,STG1NAME(R4) ADDR OF NXT CHAR. IN NAME @V200899 00437000
  438. CLI 0(R3),C' ' IS THIS END OF NAME @V200899 00438000
  439. BNE NMLNGLOP BR IF NO @V200899 00439000
  440. STH R4,NAMELNG SAVE LNGTH OF NAME @V200899 00440000
  441. CLC INFTYPE,FFS HAS TYPE BEEN DEFINED @V200899 00441000
  442. BE IDERROR BR IF NO - ERROR @V200899 00442000
  443. CLI INFTYPE,C'(' STARTING OPTIONS? @VA04435 00443000
  444. BE IDERROR YES, FORGOT FILE TYPE @VA04435 00444000
  445. MVC FSCBFT,INFTYPE MOVE FILE TYPE TO INPUT FSCB @V200899 00445000
  446. LA R4,INFMODE SET POINTER TO POSSIBLE STRT OF @V200899 00446000
  447. * OPT 00447000
  448. CLC INFMODE,FFS IS THIS THE END OF USER INPUT @V200899 00448000
  449. BE OPTEND BR IF YES @V200899 00449000
  450. SR R5,R5 SET OPTION CNT TO 0 @V200899 00450000
  451. CLI INFMODE,C'(' IS THIS THE START OF THE OPTIONS @V200899 00451000
  452. BE OPTIONS1 BR IF YES @V200899 00452000
  453. MVC FSCBFM,INFMODE MOVE FILE MODE TO INPUT FSCB @V200899 00453000
  454. CLI INFMODE+2,C' ' IS 3-RD CHARACTER A BLANK @V200899 00454000
  455. BNE MODERROR BR IF NO - ERROR @V200899 00455000
  456. LA R4,INOPT SET POINTER TO STRT OF OPTIONS @V200899 00456000
  457. DROP R1,R2 @V200899 00457000
  458. CLI 0(R4),C'(' IS THIS THE STRT OF THE OPTIONS @V200899 00458000
  459. BE OPTIONS1 BR IF YES @V200899 00459000
  460. CLC FFS,0(R4) IS THIS THE END OF OPTION LIST @V200899 00460000
  461. BE OPTEND BR IF YES @V200899 00461000
  462. B OPTERROR @V200899 00462000
  463. EJECT 00463000
  464. *********************************************************************** 00464000
  465. * 00465000
  466. * DETERMINE USER INPUT OPTIONS 00466000
  467. * 00467000
  468. *********************************************************************** 00468000
  469. OPTIONS DS 0H @V200899 00469000
  470. CLI 8(R4),C')' IS THIS THE END OF OPTIONS @V200899 00470000
  471. BE OPTEND BR IF YES @V200899 00471000
  472. CLC FFS,8(R4) END OF OPTIONS @V200899 00472000
  473. BE OPTEND BR IF YES @V200899 00473000
  474. OPTIONS1 DS 0H @V200899 00474000
  475. LA R3,OPTLIST LOAD ADDR OF OPTION LIST @V200899 00475000
  476. LA R4,8(R4) MOVE PNTR TO NXT OPTION @V200899 00476000
  477. LA R5,1(R5) SET OPTION CNT PLUS 1 @V200899 00477000
  478. LA R6,L'OPTLIST LNTH OF OPTION LIST ENTRIES @V200899 00478000
  479. LA R7,OPTLEND ENDING ADDR OF OPTION LIST @V200899 00479000
  480. OPTLOOP DS 0H @V200899 00480000
  481. CLC 0(8,R3),0(R4) VALID OPTION FOUND @V200899 00481000
  482. BE OPTFND BR IF YES @V200899 00482000
  483. BXLE R3,R6,OPTLOOP LOOP IF NOT END OF OPTION LIST @V200899 00483000
  484. B OPTERROR @V200899 00484000
  485. OPTFND DS 0H @V200899 00485000
  486. STC R5,8(R3) SET OPTION 'ON' AND INCLUDE @V200899 00486000
  487. * SEQUENCE 00487000
  488. B OPTIONS @V200899 00488000
  489. IDERROR DS 0H @V200899 00489000
  490. LA R15,24 ID ERROR RETURN CODE @V200899 00490000
  491. ST R15,SVREG15 SAVE RETURN CODE @V200899 00491000
  492. LA R2,DMSGRN54 ADDR OF ID ERROR MSG @V200899 00492000
  493. B PRMERR @V200899 00493000
  494. MODERROR DS 0H @V200899 00494000
  495. LA R2,DMSGRN48 LOAD ADDR OF INVALID MODE MSG @V200899 00495000
  496. B OPTERR01 @V200899 00496000
  497. OPTERROR DS 0H @V200899 00497000
  498. LA R2,DMSGRN03 ADDR OF INVALID OPTION MSG @V200899 00498000
  499. OPTERR01 DS 0H @V200899 00499000
  500. LA R15,24 INVALID OPTION RETURN CODE @V200899 00500000
  501. ST R15,SVREG15 SAVE RETURN CODE @V200899 00501000
  502. ST R4,0(R2) STORE VARIABLE ADDR @V200899 00502000
  503. PRMERR DS 0H @V200899 00503000
  504. BAL R14,GENMSG @V200899 00504000
  505. B RETURN1 @V200899 00505000
  506. OPTEND DS 0H @V200899 00506000
  507. FSSTATE FSCB=INPFSCB,ERROR=OPENERR @V200899 00507000
  508. PRIMEDIT DS 0H @V200899 00508000
  509. LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 00509000
  510. BAL R14,FSCBRD READ FSCB @V200899 00510000
  511. B FINDEXEC NORMAL RETURN @V200899 00511000
  512. B INPEND EOF @V200899 00512000
  513. B RETURN READ ERROR @V200899 00513000
  514. * 00514000
  515. FINDEXEC DS 0H @V200899 00515000
  516. CLC SLASHAST,INPUT IS INPUT = /* @V200899 00516000
  517. BE PRIMEDIT BR IF YES @V200899 00517000
  518. CLI INPUT,C'*' IS INPUT A COMMENT @V200899 00518000
  519. BE PRIMEDIT BR IF YES @V200899 00519000
  520. CLC SLASHS,INPUT IS INPUT JCL @V200899 00520000
  521. BNE INPERROR BR IF NO - ERROR @V200899 00521000
  522. LA R2,EXEC ADDR OF EXEC KEYWORD @V200899 00522000
  523. BAL R14,EDITIN KEYWORD EDIT @V200899 00523000
  524. B FINDASM FOUND @V200899 00524000
  525. B PRIMEDIT NOT FOUND @V200899 00525000
  526. FINDASM DS 0H @V200899 00526000
  527. LA R2,PGMIFKAM ADDR OF PGM=IFKASM KEYWORD @V200899 00527000
  528. BAL R14,EDITIN KEYWORD EDIT @V200899 00528000
  529. B ASMFND FOUND @VA04257 00529000
  530. LA R2,PGMCWAXF ADDR OF PGM=CWAX00 KEYWORD @VA04257 00530000
  531. BAL R14,EDITIN KEYWORD EDIT @VA04257 00531000
  532. B ASMFND FOUND @VA04257 00532000
  533. B FINDIEWL NOT FOUND @VA04257 00533000
  534. ASMFND DS 0H @VA04257 00534000
  535. BAL R14,IFKASM EDIT ASSEMBLER INPUT @V200899 00535000
  536. B FINDEXEC NORMAL RETURN @V200899 00536000
  537. B INPERROR DATA ERROR DURING ASM EDIT @V200899 00537000
  538. B RETURN I/O ERROR DURING ASM EDIT @V200899 00538000
  539. FINDIEWL DS 0H @V200899 00539000
  540. LA R2,PGMIEWL ADDR OF PGM=IEWL KEYWORD @V200899 00540000
  541. BAL R14,EDITIN KEYWORD EDIT @V200899 00541000
  542. B IEWLFND FOUND @V200899 00542000
  543. B INPERROR NOT FOUND @V200899 00543000
  544. IEWLFND DS 0H @V200899 00544000
  545. BAL R14,IEWL EDIT LINKAGE-EDIT INPUT @V200899 00545000
  546. B FINDEXEC NORMAL RETURN @V200899 00546000
  547. B INPERROR DATA ERROR DURING IEWL EDIT @V200899 00547000
  548. B RETURN I/O ERROR DURING IEWL EDIT @V200899 00548000
  549. EJECT 00549000
  550. *********************************************************************** 00550000
  551. * * 00551000
  552. * HERE IF END OF INPUT DUE TO EOF OR ERROR * 00552000
  553. * * 00553000
  554. *********************************************************************** 00554000
  555. OPENERR DS 0H @V200899 00555000
  556. ST R15,SVREG15 SAVE THE RETURN CODE @V200899 00556000
  557. CH R15,INVMODE IS MODE INVALID @V200899 00557000
  558. BE RETURN1 YES - 'STATE' ALREADY GAVE MSG @V200899 00558000
  559. LA R2,DMSGRN02 ADDR OF FILE NOT FOUND MSG @V200899 00559000
  560. OPENERR9 DS 0H @V200899 00560000
  561. BAL R14,GENMSG @V200899 00561000
  562. B RETURN1 @V200899 00562000
  563. INPEND DS 0H @V200899 00563000
  564. TM PROCSW1,NEWJCL IF NEWJCL WE DO NOT NEED @VA10299 00563300
  565. BO PROCEND2 ..... THE ERASE CMD @VA10299 00563600
  566. LA R2,ERASECMD ADDR OF NCPTEMP FILE ERASE @V200899 00564000
  567. * COMMAND 00565000
  568. BAL R14,PROCWT WRT CMD TO EXEC MACRO FILE @V200899 00566000
  569. B PROCEND2 NORMAL RETURN @V200899 00567000
  570. NOP 0(0) ERROR RETURN-IGNORE IT @V200899 00568000
  571. PROCEND2 DS 0H @V200899 00569000
  572. CLC SAVE+8(1),NOSAVE+8 TEST LAST OPTION SAVE/NOSAVE @V200899 00570000
  573. BNH PROCEND1 BR IF NOSAVE LAST OR DEFAULT @V200899 00571000
  574. BAL R14,CLOSTACK WRITE SAVENCP CMD TO EXEC PROC @V200899 00572000
  575. B PROCEND1 NORMAL RETURN @V200899 00573000
  576. B RETURN1 ERROR RETURN @V200899 00574000
  577. PROCEND1 DS 0H @V200899 00575000
  578. BAL R14,PROCEND CLOSE STG2 EXEC PROC @V200899 00576000
  579. CLC RUN+8(1),NORUN+8 WAS RUN OPTION REQUESTED @V200899 00577000
  580. BNH RETURN1 BR IF DEFAULT OR NORUN @V200899 00578000
  581. LA R1,EXECRUN ADDR OF EXEC MACRO CMD @V200899 00579000
  582. SVC 202 EXECUTE EXEC MACRO @V200899 00580000
  583. DC AL4(*+4) IGNORE ERRORS @V200899 00581000
  584. ST R15,SVREG15 SAVE RETURN CODE @V200899 00582000
  585. B RETURN1 @V200899 00583000
  586. INPERROR DS 0H @V200899 00584000
  587. LA R15,24 LOAD RETURN CODE @V200899 00585000
  588. ST R15,SVREG15 STORE RETURN CODE @V200899 00586000
  589. LA R2,DMSGRN78 ADDR OF DATA ERROR MSG @V200899 00587000
  590. BAL R14,GENMSG @V200899 00588000
  591. B RETURN @V200899 00589000
  592. * 00590000
  593. RETURN DS 0H @V200899 00591000
  594. BAL R14,PROCEND CLOSE EXEC MACRO FILE @V200899 00592000
  595. RETURN1 DS 0H @V200899 00593000
  596. LM R14,R15,SVREG14 LOAD RET ADDR & RET CODE @V200899 00594000
  597. BR R14 RETURN @V200899 00595000
  598. * 00596000
  599. *********************************************************************** 00597000
  600. * * 00598000
  601. * EDIT THE ASSEMBLE JCL & STATEMENTS * 00599000
  602. * * 00600000
  603. *********************************************************************** 00601000
  604. IFKASM DS 0H @V200899 00602000
  605. ST R14,IFKASMSV SAVE RETURN ADDR @V200899 00603000
  606. LA R2,DUMMYFCB ADDR OF DUMMY FSCB @V200899 00604000
  607. USING DFSCB,R2 @V200899 00605000
  608. MVC FSCBFT,ASM3705 SET FILE TYPE TO ASM3705 @V200899 00606000
  609. DROP R2 @V200899 00607000
  610. IFKASM10 DS 0H @V200899 00608000
  611. LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 00609000
  612. BAL R14,FSCBRD READ FSCB @V200899 00610000
  613. B IFKASM20 NORMAL RETURN @V200899 00611000
  614. B IFKDERR ERROR-EOF @V200899 00612000
  615. B IFKERR ERROR @V200899 00613000
  616. IFKASM20 DS 0H @V200899 00614000
  617. CLC SLASHS,INPUT IS INPUT STILL JCL @V200899 00615000
  618. BNE IFKDERR BR IF NO - ERROR @V200899 00616000
  619. TM SYSPCHSW,CONT IS THIS SYSPUNCH CONT. CARD @V200899 00617000
  620. BO IFKASM30 BR IF YES @V200899 00618000
  621. CLC SYSPCH,INPUT+2 IS THIS THE SYSPUNCH CARD @V200899 00619000
  622. BE IFKASM30 BR IF YES @V200899 00620000
  623. B IFKASM10 @V200899 00621000
  624. * 00622000
  625. * DDNAME=SYSPUNCH 00623000
  626. * 00624000
  627. IFKASM30 DS 0H @V200899 00625000
  628. NI SYSPCHSW,FF-CONT TURN SYSPUNCH CONT. SW. OFF @V200899 00626000
  629. LA R2,DSN LOAD ADDR OF DSN KEYWORD @V200899 00627000
  630. BAL R14,EDITIN EDIT INPUT @V200899 00628000
  631. B IFKASM34 FOUND @V200899 00629000
  632. NOP 0(0) @V200899 00630000
  633. IFKASM31 DS 0H @V200899 00631000
  634. LA R2,COMMA ADDR OF COMMA KEYWORD @V200899 00632000
  635. BAL R14,EDITIN EDIT INPUT @V200899 00633000
  636. B IFKASM32 FOUND @V200899 00634000
  637. B IFKDERR NOT FOUND - ERROR @V200899 00635000
  638. IFKASM32 DS 0H @V200899 00636000
  639. MVI 0(R3),C'*' DESTROY COMMA @V200899 00637000
  640. LA R2,INPUT+70 ADDR OF LAST VALID INPUT BYTE @V200899 00638000
  641. CR R2,R3 TEST IF ALL INPUT BYTES EDITED @V200899 00639000
  642. BNH IFKDERR BR IF YES - DATA ERROR @V200899 00640000
  643. BE IFKASM33 END OF INPUT @V200899 00641000
  644. CLI 1(R3),C' ' IS NXT CHAR. BLANK @V200899 00642000
  645. BNE IFKASM31 BR IF NO @V200899 00643000
  646. IFKASM33 DS 0H @V200899 00644000
  647. OI SYSPCHSW,CONT SET SYSPUNCH CONTINUE CARD SW. ON@V200899 00645000
  648. B IFKASM10 READ SYSPUNCH CONT. CARD @V200899 00646000
  649. IFKASM34 DS 0H @V200899 00647000
  650. CLC DSNEQU,0(R3) IS THIS A DSN= KEYWORD @V200899 00648000
  651. BE IFKASM35 BR IF YES @V200899 00649000
  652. CLC DSNAME,0(R3) IS IT A DSNAME= THEN @V200899 00650000
  653. BNE IFKDERR BR IF NO - ERROR @V200899 00651000
  654. LA R3,3(R3) MOVE @V200899 00652000
  655. IFKASM35 DS 0H POINTER @V200899 00653000
  656. LA R3,4(R3) PAST KEYWORD @V200899 00654000
  657. LA R2,ASMMEM POINT GR2 TO RECIEVER FIELD @V200899 00655000
  658. BAL R14,DSNEDIT EDIT THE DSNAME @V200899 00656000
  659. B IFKASM40 NORMAL RETURN @V200899 00657000
  660. B IFKDERR INVALID MEMBER NAME @V200899 00658000
  661. * 00659000
  662. * 00660000
  663. * 00661000
  664. IFKASM40 DS 0H @V200899 00662000
  665. LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 00663000
  666. BAL R14,FSCBRD READ FSCB @V200899 00664000
  667. B IFKASM42 NORMAL RETURN @V200899 00665000
  668. B IFKDERR EOF - ERROR @V200899 00666000
  669. B IFKERR ERROR @V200899 00667000
  670. IFKASM42 DS 0H @V200899 00668000
  671. CLI INPUT,C'*' IS INPUT A COMMENT @V200899 00669000
  672. BE IFKASM40 BR IF YES @V200899 00670000
  673. CLC SLASHS,INPUT IS INPUT STILL JCL @V200899 00671000
  674. BNE IFKDERR BR IF NO - ERROR @V200899 00672000
  675. CLC SYSIN,INPUT+2 IS THIS THE SYSIN CARD @V200899 00673000
  676. BNE IFKASM40 BR IF NO - READ NXT CARD @V200899 00674000
  677. * 00675000
  678. * EDIT ASSEMBLER INPUT STATEMENTS AFTER SYSIN CARD 00676000
  679. * 00677000
  680. IFKASMA0 DS 0H @V200899 00678000
  681. LA R2,INPFSCB LOAD ADDR OF THE INPUT FSCB @V200899 00679000
  682. BAL R14,FSCBRD READ FSCB @V200899 00680000
  683. B IFKASMC0 NORMAL RETURN @V200899 00681000
  684. B IFKASMK0 EOF @V200899 00682000
  685. B IFKERR ERROR @V200899 00683000
  686. IFKASMC0 DS 0H @V200899 00684000
  687. CLC SLASHS,INPUT TEST END OF ASSM. INPUT @V200899 00685000
  688. BE IFKASMK0 BR IF YES @V200899 00686000
  689. CLC SLASHAST,INPUT TEST END OF ASSM. INPUT @V200899 00687000
  690. BE IFKASMK0 BR IF YES @V200899 00688000
  691. BAL R14,FSCBWT WRITE INPUT TO OUTPUT @V200899 00689000
  692. B IFKASMA0 NORMAL RETURN @V200899 00690000
  693. B IFKERR ERROR @V200899 00691000
  694. * 00692000
  695. * HERE IF END OF ASSEMBLER STATEMENTS 00693000
  696. * 00694000
  697. IFKASMK0 DS 0H @V200899 00695000
  698. BAL R14,FSCBCLOS CLOSE CUR. MEMBER FILE @V200899 00696000
  699. B IFKASMK2 NORMAL RETURN @V200899 00697000
  700. NOP 0(0) ERROR-IGNORE CLOSE ERROR @V200899 00698000
  701. IFKASMK2 DS 0H @V200899 00699000
  702. BAL R14,ASMSTAK GEN ASM3705 CMD FOR MEMBER NNN @V200899 00700000
  703. B IFKASMK4 NORMAL RETURN @V200899 00701000
  704. B IFKERR ERROR RETURN @V200899 00702000
  705. IFKASMK4 DS 0H @V200899 00703000
  706. L R14,IFKASMSV LOAD RETURN ADDR @V200899 00704000
  707. B IFKNORM(R14) @V200899 00705000
  708. * 00706000
  709. SYSPCHSW DC X'00' SYSPUNCH CONTROL SW'S @V200899 00707000
  710. CONT EQU X'01' SYSPUNCH CONTINUE SWITCH @V200899 00708000
  711. * 00709000
  712. * EXIT FROM I/O ERRORS 00710000
  713. * 00711000
  714. IFKERR DS 0H @V200899 00712000
  715. L R14,IFKASMSV LOAD RETURN ADDR @V200899 00713000
  716. B IFKIOEND(R14) ERROR RETURN @V200899 00714000
  717. * 00715000
  718. * EXIT FROM DATA ERRORS 00716000
  719. * 00717000
  720. IFKDERR DS 0H @V200899 00718000
  721. L R14,IFKASMSV LOAD RETURN ADDR @V200899 00719000
  722. B IFKDEND(R14) ERROR RETURN - DATA RETURN @V200899 00720000
  723. * 00721000
  724. IFKASMSV DC F'0' @V200899 00722000
  725. * 00723000
  726. IFKNORM EQU X'00' NORMAL RETURN DISP. @V200899 00724000
  727. IFKDEND EQU X'04' DATA ERROR RETURN CODE @V200899 00725000
  728. IFKIOEND EQU X'08' ERROR RETURN DISP. @V200899 00726000
  729. EJECT 00727000
  730. *********************************************************************** 00728000
  731. * * 00729000
  732. * EDIT THE LINKAGE-EDITOR JCL & CONTROL STATEMENTS 00730000
  733. * * 00731000
  734. *********************************************************************** 00732000
  735. IEWL DS 0H @V200899 00733000
  736. ST R14,IEWLSV SAVE RETURN ADDR @V200899 00734000
  737. LA R2,DUMMYFCB ADDR OF DUMMY FSCB @V200899 00735000
  738. USING DFSCB,R2 @V200899 00736000
  739. MVC FSCBFT,TEXT SET FILE TYPE TO TEXT @V200899 00737000
  740. DROP R2 @V200899 00738000
  741. IEWLJCLA DS 0H @V200899 00739000
  742. LA R2,PARM ADDR OF THE PARM= KEYWORD @V200899 00740000
  743. BAL R14,EDITIN KEYWORD EDIT @V200899 00741000
  744. B IEWLJCLB FOUND @V200899 00742000
  745. B IEWLJCLD NOT FOUND @V200899 00743000
  746. IEWLJCLB DS 0H @V200899 00744000
  747. LA R3,5(R3) MOVE POINTER PAST KEYWORD @V200899 00745000
  748. NI PROCSW1,FF-APOSTSW TURN OFF APOSTROPHE SW. @V200899 00746000
  749. TM PROCSW1,LKD1 1ST OR 2ND LKED STEP? @V200899 00747000
  750. BZ STOPT1 MUST BE FIRST... @V200899 00748000
  751. LA R2,OPTION2 @V200899 00749000
  752. B CKAPOST @V200899 00750000
  753. STOPT1 DS 0H @V200899 00751000
  754. LA R2,OPTION1 SET RECEIVING POINTER @V200899 00752000
  755. CKAPOST DS 0H @V200899 00753000
  756. CLI 0(R3),C'''' ARE PARMS ENCLOSED IN APOST. @V200899 00754000
  757. BNE IEWLJCLC BR IF NO @V200899 00755000
  758. OI PROCSW1,APOSTSW TURN APOST. SW. ON @V200899 00756000
  759. LA R3,1(R3) MOVE POINTER PAST APOST. @V200899 00757000
  760. IEWLJCLC DS 0H @V200899 00758000
  761. MVC 0(1,R2),0(R3) MOVE LKED PARM'S 1 BYTE AT A TIME@V200899 00759000
  762. LA R2,1(R2) MOVE TO NXT OPTION BYTE FIELD @V200899 00760000
  763. LA R3,1(R3) MOVE TO NXT LKED PARM BYTE @V200899 00761000
  764. CLI 0(R3),C' ' IS BYTE A BLANK @V200899 00762000
  765. BE IEWLJCL1 BR IF YES-ASSUME END OF PARM @V200899 00763000
  766. CLI 0(R3),C'''' IS BYTE AN APOSTROPHE @V200899 00764000
  767. BE IEWLJCL1 BR IF YES-ASSUME END OF PARM @V200899 00765000
  768. CLI 0(R3),C',' IS BYTE A COMMA @V200899 00766000
  769. BE IEWLJC1 YES - REPLACE IT @V200899 00767000
  770. CLI 0(R3),C'=' EQUAL SIGN? @V200899 00768000
  771. BE IEWLJC1 YES - @V200899 00769000
  772. CLI 0(R3),C'(' LEFT PARENTHESIS? @V200899 00770000
  773. BE IEWLJC1 YES - @V200899 00771000
  774. CLI 0(R3),C')' RIGHT PARENTHESIS? @V200899 00772000
  775. BNE IEWLJCLC NONE OF THE ABOVE - MOVE IT @V200899 00773000
  776. IEWLJC1 DS 0H @V200899 00774000
  777. MVI 0(R3),C' ' BLANK CHAR. IN CASE APOSTSW ON @V200899 00775000
  778. TM PROCSW1,APOSTSW IS APOST. SW ON @V200899 00776000
  779. BO IEWLJCLC BR IF YES TO MOVE BLANK @V200899 00777000
  780. B IEWLJCL1 IF APOST. SW OFF COMMA IS @V200899 00778000
  781. * DELIMITER 00779000
  782. IEWLJCLD DS 0H @V200899 00780000
  783. LA R2,INPFSCB ADDR OF INPUT FSCB @V200899 00781000
  784. BAL R14,FSCBRD READ FSCB @V200899 00782000
  785. B IEWLJCLE NORMAL RETURN @V200899 00783000
  786. B IEWLDERR ERROR RETUTN - EOF @V200899 00784000
  787. B IEWLERR ERROR RETURN @V200899 00785000
  788. IEWLJCLE DS 0H @V200899 00786000
  789. CLI INPUT,C'*' INPUT= * @V200899 00787000
  790. BE IEWLJCL1 BR IF YES @V200899 00788000
  791. CLC SLASHS,INPUT INPUT = // @V200899 00789000
  792. BNE IEWLDERR BR IF NO DATA ERROR @V200899 00790000
  793. CLI INPUT+2,C' ' IS IT EXEC CONTINUE CARD @V200899 00791000
  794. BE IEWLJCLA BR IF YES - START AGAIN @V200899 00792000
  795. B IEWLJCL2 @V200899 00793000
  796. IEWLJCL1 DS 0H @V200899 00794000
  797. LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 00795000
  798. BAL R14,FSCBRD READ FSCB @V200899 00796000
  799. B IEWLJCL2 NORMAL RETURN @V200899 00797000
  800. B IEWLDERR ERROR RETURN - EOF @V200899 00798000
  801. B IEWLERR ERROR @V200899 00799000
  802. IEWLJCL2 DS 0H @V200899 00800000
  803. CLI INPUT,C'*' IS INPUT = * @V200899 00801000
  804. BE IEWLJCL1 BR IF YES @V200899 00802000
  805. CLC SLASHS,INPUT IS INPUT = // @V200899 00803000
  806. BNE IEWLDERR BR IF NO - ERROR @V200899 00804000
  807. CLC SYSLIB,INPUT+2 IS THIS A 'SYSLIB' CARD? @V200899 00805000
  808. BNE IEWLJ1 NO - TRY NEXT TYPE @V200899 00806000
  809. BAL R7,IEWLSLIB YES - CHECK THE SYSLIB INFO. @V200899 00807000
  810. B IEWLJCL1 NORMAL RETURN (READ ANOTHER CARD)@V200899 00808000
  811. B IEWLDERR RETURN POINT FOR DATA ERROR. @V200899 00809000
  812. IEWLJ1 DS 0H @V200899 00810000
  813. CLC SYSLMOD,INPUT+2 IS THIS A 'SYSLMOD' CARD? @V200899 00811000
  814. BNE IEWLJ2 NO - KEEP TRYING.. @V200899 00812000
  815. BAL R7,IEWLSMOD YES - PROCESS THE SYSLMOD INFO. @V200899 00813000
  816. B IEWLJCL1 NORMAL RETURN. @V200899 00814000
  817. B IEWLDERR RETURN POINT IF DATA ERROR. @V200899 00815000
  818. IEWLJ2 DS 0H @V200899 00816000
  819. CLC SYSPCH(8),INPUT+2 IS IT SYSPUNCH? @VA10299 00816100
  820. BNE IEWLJ2D NO - KEEP ON TRUCKING @VA10299 00816200
  821. TM PROCSW1,LKDFIRST PASSED THIS WAY BEFOR? @VA10299 00816300
  822. BNZ IEWLJ2D YES - NOT SINGLE JCL @VA10299 00816400
  823. MVC PCH3NM,NCPNM SAVE NCPNAME @VA10299 00816500
  824. IEWLJ2D DS 0H @VA10299 00816600
  825. LA R2,OBJ3705 SEE IF SYS1.OBJ3705 IS HERE @V200899 00817000
  826. BAL R14,EDITIN . . . @V200899 00818000
  827. B IEWLJ3 FOUND IT. @V200899 00819000
  828. B IEWLJ4 NOT FOUND - TRY NEXT TYPE @V200899 00820000
  829. IEWLJ3 DS 0H @V200899 00821000
  830. BAL R7,IEWLOBJ3 GO RETRIEVE DDNAME @V200899 00822000
  831. B IEWLJ3A NORMAL RETURN @VM08696 00823000
  832. B IEWLDERR DATA ERROR RETURN @VM08696 00824000
  833. IEWLJ3A EQU * N.B. R10 CONTAINS (8-LENGTH) @VM08696 00825000
  834. LA R8,9 FIGURE OUT WHERE TO SAVE THE @VA10299 00826000
  835. SR R8,R10 COUNT..... @VM08696 00827000
  836. SR R9,R8 . . . @VM08696 00828000
  837. LA R8,9 AND THEN CALCULATE THE COUNT @VA10299 00829000
  838. SR R8,R10 . . . @VM08696 00830000
  839. BCTR R8,0 LESS 1 FOR EX'D MVC'S @VM08696 00831000
  840. BCTR R9,0 POINT TO CORRECT SPOT FOR COUNT @VA10299 00831500
  841. STC R8,0(R9) AND SAVE.... @VM08696 00832000
  842. TM PROCSW1,CKINCL ARE THERE 2 NAMES?? @VM08696 00833000
  843. BZ IEWLJCL1 NO - GO ON TO NEXT REC. @VM08696 00834000
  844. CLC OBJNM1+3(1),OBJNM2+3 WHICH IS LONGER?? @VM08696 00835000
  845. BNL IEWLJCL1 IF 1ST OR EQUAL OK @VM08696 00836000
  846. MVC SHRTR(4),=A(OBJNM1) REVERSE POINTERS @VM08696 00837000
  847. MVC LNGR(4),=A(OBJNM2) . . . @VM08696 00838000
  848. B IEWLJCL1 PROCESS NEXT RECORD. @VM08696 00839000
  849. IEWLJ4 DS 0H @V200899 00840000
  850. LA R2,DSN LOCATE DSNAME KEYWORD @V200899 00841000
  851. BAL R14,EDITIN . . . @V200899 00842000
  852. B IEWLJ5 FOUND IT @V200899 00843000
  853. B IEWLJ7 NO DSN - CHECK FOR SYSLIN @V200899 00844000
  854. IEWLJ5 DS 0H @V200899 00845000
  855. CLC DSNEQU,0(R3) IS IT 'DSN='?? @V200899 00846000
  856. BE IEWLJ6 YES - @V200899 00847000
  857. CLC DSNAME,0(R3) NO - IS IT 'DSNAME='? @V200899 00848000
  858. BNE IEWLDERR IF NEITHER, THAT'S AN ERROR @V200899 00849000
  859. LA R3,3(,R3) STEP AROUND THE KEYWORD. @V200899 00850000
  860. IEWLJ6 DS 0H . . . @V200899 00851000
  861. CLI 4(R3),C'&&' DOES DSNAME START WITH AMPERSAND?@V200899 00852000
  862. BNE IEWLJCL1 NO, DON'T SAVE DDNAME @VA05242 00853000
  863. BAL R7,IEWLAMP YES - PROCESS THE DDNAME @V200899 00854000
  864. B IEWLJCL1 NORMAL RETURN @V200899 00855000
  865. B IEWLDERR DATA ERROR RETURN @V200899 00856000
  866. IEWLJ7 DS 0H @V200899 00857000
  867. CLC SYSLIN,INPUT+2 INPUT = SYSLIN @V200899 00858000
  868. BNE IEWLJCL1 BR IF YES - IGNORE DD STATEMENTS @V200899 00859000
  869. BAL R14,IEWLSIN PROCESS SYSIN CONTROL CARDS @V200899 00860000
  870. B IEWLJCL3 NORMAL RETURN @V200899 00861000
  871. B IEWLDERR DATA ERROR RETURN @V200899 00862000
  872. B IEWLERR ERROR RETURN @V200899 00863000
  873. IEWLJCL3 DS 0H @V200899 00864000
  874. BAL R14,LKDSTACK STACK LKED CMDS. IN EXEC MACRO @V200899 00865000
  875. B IEWLJCLX NORMAL RETURN @V200899 00866000
  876. B IEWLERR ERROR RETURN @V200899 00867000
  877. IEWLJCLX DS 0H @V200899 00868000
  878. L R14,IEWLSV LOAD RETURN ADDR @V200899 00869000
  879. BR R14 NORMAL RETURN @V200899 00870000
  880. IEWLDERR DS 0H @V200899 00871000
  881. L R14,IEWLSV LOAD RETURN ADDR @V200899 00872000
  882. B DATERR(R14) DATA ERROR RETURN @V200899 00873000
  883. IEWLERR DS 0H @V200899 00874000
  884. L R14,IEWLSV LOAD RETURN ADDR @V200899 00875000
  885. B IOERRC(R14) I/O ERROR RETURN @V200899 00876000
  886. * 00877000
  887. * 00878000
  888. IEWLSV DC F'0' @V200899 00879000
  889. * 00880000
  890. EJECT 00881000
  891. *********************************************************************** 00882000
  892. * * 00883000
  893. * PROCESS DD CARDS ASSOCIATED WITH LKED STEPS * 00884000
  894. * * 00885000
  895. *********************************************************************** 00886000
  896. IEWLSLIB DS 0H PROCESS 'SYSLIB' DD CARDS @V200899 00887000
  897. BAL R10,FNDDSN LOCATE THE DATASET NAME @V200899 00888000
  898. SR R8,R8 CLR REG. FOR IC @V200899 00889000
  899. LA R9,20 TO CALC LENGTH OF NAME @V200899 00890000
  900. IC R8,SYSPCHSV GET (20-LENGTH+1) @V200899 00891000
  901. SR R9,R8 ==>GIVES DSN LENGTH-1 @V200899 00892000
  902. * COMPARE DSN SPECIFIED FOR ASSEMBLIES WITH THAT SPECIFIED HERE 00893000
  903. EX R9,CKSYSPCH DO THEY MATCH?? @V200899 00894000
  904. BNE 4(R7) NOPE - BYE @V200899 00895000
  905. CLI DEF1NM,X'40' ARE THE FILEDEF'S SET UP? @V200899 00896000
  906. BCR 7,R7 YES - LEAVE @V200899 00897000
  907. LA R10,INPFSCB NO - SET 'NCPNAME' INTO FILEDEFS @V200899 00898000
  908. MVC DEF1NM(8),FSCBFN-DFSCB(R10) . . . @V200899 00899000
  909. MVC DEF2NM(8),FSCBFN-DFSCB(R10) . . . @V200899 00900000
  910. BR R7 RETURN @V200899 00901000
  911. CKSYSPCH CLC 0(0,R3),SYSPCHSV+1 EXECUTED CLC FOR DSN COMPARE @V200899 00902000
  912. SPACE 5 00903000
  913. IEWLSMOD DS 0H PROCESS 'SYSLMOD' INFO. @V200899 00904000
  914. BAL R10,FNDDSN LOCATE THE DATASET NAME @V200899 00905000
  915. CLI 0(R3),C'&&' BEGIN WITH AMPERSAND?? @V200899 00906000
  916. BNE CKSMODSW NO - @V200899 00907000
  917. OI PROCSW1,LKD1 YES - THIS IS 1ST LKED STEP @V200899 00908000
  918. BR R7 @V200899 00909000
  919. CKSMODSW DS 0H @V200899 00910000
  920. LA R5,FISMODNM 2 STEP FILEDEF @VA13288 00910500
  921. TM PROCSW1,LKD1 HAVE WE SEEN 1ST LKED YET? @V200899 00911000
  922. BNZ SMODSWCK OK - NOT A DATA ERROR @VA10299 00912000
  923. TM PROCSW1,LKDFIRST 1ST TIME THRU LNKEDT @VA10299 00912030
  924. BNZ 4(R7) NOT OLD OR NEW JCL - ERROR @VA10299 00912060
  925. LA R2,SYS1 LOCATE CHARS. 'SYS1.' @VA10299 00912090
  926. BAL R14,EDITIN @VA10299 00912120
  927. B SLMODA HURRAY - WE FOUND IT @VA10299 00912150
  928. B 4(R7) RETURN POINT IF DATA ERROR @VA10299 00912180
  929. SLMODA EQU * @VA10299 00912210
  930. LA R5,LDM3NM DSN FIELD OF FILEDEF @VA10299 00912270
  931. OI PROCSW1,NEWJCL SET ON NEWJCL SWITCH @VA10299 00912720
  932. SMODSWCK EQU * @VA10299 00912780
  933. LA R10,INPFSCB YES - MOVE 'NCPNAME' INTO FILEDEF@V200899 00913000
  934. MVC 0(8,R5),FSCBFN-DFSCB(R10) . . . @VA13288 00914000
  935. BR R7 RETURN @V200899 00915000
  936. SPACE 5 00916000
  937. IEWLOBJ3 DS 0H RETRIEVE DDNAME FOR SYS1.OBJ3705 @V200899 00917000
  938. LA R8,INPUT+2 POINT TO START OF DDNAME @V200899 00918000
  939. LA R9,OBJNM1+4 POINT TO RECEIVING FIELD @VM08696 00919000
  940. CLI 0(R9),X'40' SOMETHING THERE ALREADY? @VM08696 00920000
  941. BE STMX1 NO - GO ON @VA10299 00921000
  942. LA R9,OBJNM2+4 YES - POINT TO SECOND SLOT @VM08696 00922000
  943. OI PROCSW1,CKINCL TURN ON 2-NAME FLAG @VM08696 00923000
  944. B STMX1 SET JCL3 IN CASE ONLY LKD STEP @VA10299 00923500
  945. STMX EQU * @VM08696 00924000
  946. LA R10,9 MAX. NUMBER OF CHARS. @VA10299 00925000
  947. CKBLNK CLI 0(R8),X'40' IS IT A BLANK? @V200899 00926000
  948. BCR 8,R7 YES - RETURN @V200899 00927000
  949. MVC 0(1,R9),0(R8) NO - MOVE INTO THE FILEDEF @V200899 00928000
  950. LA R8,1(,R8) UPDATE POINTERS AND @V200899 00929000
  951. LA R9,1(,R9) CHECK THE COUNT @V200899 00930000
  952. BCT R10,CKBLNK . . . @V200899 00931000
  953. B 4(R7) DDNAME > 8 CHAR. - ERROR @V200899 00932000
  954. SPACE 2 @VA10299 00933000
  955. STMX1 DS 0H @VA10299 00933060
  956. TM PROCSW1,LKDFIRST FIRST TIME THRU LKEDSTACK @VA10299 00933120
  957. BNZ STMX GO - THIS IS 2ND TIME THRU @VA10299 00933180
  958. CLC OBJTST(7),INPUT+2 IS THIS OBJ3705? @VA10299 00933240
  959. BNE STMX2 NO - WELL WHAT IS IT? @VA10299 00933300
  960. MVC OBJ3NM(7),OBJTST MOVE TO JCL3 JUST IN CASE @VA10299 00933360
  961. B STMX RETURN @VA10299 00933420
  962. STMX2 EQU * @VA10299 00933480
  963. CLI OBJ3NM,X'40' HAVE WE FILLED A OBJ FILEDEF? @VA10299 00933540
  964. BNE STMX YES-THEN IGNORE THIS TURKEY @VA10299 00933600
  965. MVC OBJ3NM(8),INPUT+2 FILL DD NAME IN CASE ONLY JCL@VA10299 00933660
  966. B STMX RETURN - DON'T CHANGE NORMAL FLOW @VA10299 00933720
  967. OBJTST DC C'OBJ3705' @VA10299 00933780
  968. SPACE 2 @VA10299 00933840
  969. IEWLAMP DS 0H RETRIEVE DDNAME FOR OUTPUT OF @V200899 00934000
  970. * 1ST LKED 00935000
  971. LA R8,INPUT+2 POINT TO START OF NAME @V200899 00936000
  972. LA R9,FITEMPNM POINT TO RECEIVING FIELD @V200899 00937000
  973. LA R10,9 MAX. COUNT @VA10299 00938000
  974. B CKBLNK GO MOVE THE NAME @V200899 00939000
  975. SPACE 2 @VA10299 00940000
  976. IEWLSIN DS 0H PROCESS SYSLIN INFO. @V200899 00941000
  977. ST R14,IEWLSNSV SAVE RETURN ADDR @V200899 00942000
  978. IEWLSN10 DS 0H @V200899 00943000
  979. LA R2,INPFSCB ADDR OF INPUT FSCB @V200899 00944000
  980. BAL R14,FSCBRD READ INPUT @V200899 00945000
  981. B IEWLSN20 NORMAL RETURN @V200899 00946000
  982. B IEWLSEOF EOF @V200899 00947000
  983. B IEWLSNER ERROR @V200899 00948000
  984. IEWLSN20 DS 0H @V200899 00949000
  985. CLC SLASHAST,INPUT IS THIS THE END OF SYSLIN @V200899 00950000
  986. BE IEWLSEOF BR IF YES @V200899 00951000
  987. CLC SLASHS,INPUT INPUT = // @V200899 00952000
  988. BE IEWLSEOF BR IF YES @V200899 00953000
  989. TM PROCSW1,NEWJCL IF NEW JCL IGNORE CKINCL SW @VA10299 00953300
  990. BO WRTSIN ....AND GO WRITE THE INCLUDE CARD @VA10299 00953600
  991. TM PROCSW1,CKINCL CHECK 'INCLUDE' CARDS?? @VM08696 00954000
  992. BZ WRTSIN NO - GO WRITE THE RECORD. @VM08696 00955000
  993. LA R2,INCLUDE YES - IS THIS ONE?? @VM08696 00956000
  994. BAL R14,EDITIN . . . @VM08696 00957000
  995. B IEWLSN22 YES - CHECK FURTHER @VM08696 00958000
  996. B WRTSIN NO - GO WRITE @VM08696 00959000
  997. IEWLSN22 EQU * @VM08696 00960000
  998. L R2,LNGR GET POINTER TO LONGER NAME INFO. @VM08696 00961000
  999. BAL R14,EDITIN IS THIS IT? @VM08696 00962000
  1000. B IEWLSN25 YES - @VM08696 00963000
  1001. B WRTSIN NO - GO WRITE @VM08696 00964000
  1002. IEWLSN25 EQU * @VM08696 00965000
  1003. L R2,SHRTR @VM08696 00966000
  1004. MVI 0(R3),X'40' BLANK OUT FIRST CHAR. @VM08696 00967000
  1005. LA R3,1(,R3) POINT TO REMAINDER OF NAME @VM08696 00968000
  1006. LA R4,4(,R2) POINT TO NEW NAME @VM08696 00969000
  1007. SR R5,R5 CLEAR @VM08696 00970000
  1008. IC R5,3(R2) GET (COUNT-1) @VM08696 00971000
  1009. EX R5,SWAPMVC MOVE IN NEW NAME @VM08696 00972000
  1010. WRTSIN EQU * @VM08696 00973000
  1011. BAL R14,FSCBWT WRITE INPUT TO OUTPUT @V200899 00974000
  1012. B IEWLSN30 NORMAL RETURN @V200899 00975000
  1013. B IEWLSNER ERROR RETURN @V200899 00976000
  1014. IEWLSN30 DS 0H @V200899 00977000
  1015. LA R2,ENTRY ADDR OF ENTRY KEYWORD @V200899 00978000
  1016. BAL R14,EDITIN EDIT KEYWORD @V200899 00979000
  1017. B IEWLSN40 FOUND @V200899 00980000
  1018. B IEWLSN10 NOT FOUND @V200899 00981000
  1019. IEWLSN40 DS 0H @V200899 00982000
  1020. BAL R14,IEWLENT PROCESS ENTRY CONTROL CARD @V200899 00983000
  1021. B IEWLSN10 NORMAL RETURN @V200899 00984000
  1022. B IEWLSNDR DATA ERROR RETURN @V200899 00985000
  1023. B IEWLSNER ERROR RETURN @V200899 00986000
  1024. IEWLSEOF DS 0H @V200899 00987000
  1025. BAL R14,FSCBCLOS @V200899 00988000
  1026. B IEWLSNXT NORMAL RETURN @V200899 00989000
  1027. NOP 0(0) ERROR RETURN IGNORE @V200899 00990000
  1028. IEWLSNXT DS 0H @V200899 00991000
  1029. L R14,IEWLSNSV LOAD RETURN ADDR @V200899 00992000
  1030. BR R14 NORMAL RETURN @V200899 00993000
  1031. IEWLSNDR DS 0H @V200899 00994000
  1032. L R14,IEWLSNSV LOAD RETURN ADDR @V200899 00995000
  1033. B DATERR(R14) DATA ERROR RETURN @V200899 00996000
  1034. IEWLSNER DS 0H @V200899 00997000
  1035. L R14,IEWLSNSV LOAD RETURN ADDR @V200899 00998000
  1036. B IOERRC(R14) I/O ERROR RETURN @V200899 00999000
  1037. * 01000000
  1038. SPACE 01001000
  1039. SWAPMVC MVC 0(0,R3),0(R4) EXECUTED MVC @VM08696 01002000
  1040. IEWLSNSV DC F'0' @V200899 01003000
  1041. EJECT 01004000
  1042. *********************************************************************** 01005000
  1043. * 01006000
  1044. * PROCESS INPUT ENTRY CARD 01007000
  1045. * 01008000
  1046. *********************************************************************** 01009000
  1047. IEWLENT DS 0H @V200899 01010000
  1048. ST R14,IEWLENSV SAVE RETURN ADDR @V200899 01011000
  1049. LA R3,7(R3) MOVE PNTR PAST KEYWORD @V200899 01012000
  1050. LA R1,60 MAX. LNTH OF INPUT FROM ENTRY @V200899 01013000
  1051. IEWLEN02 DS 0H @V200899 01014000
  1052. CLI 0(R3),C' ' IS CHAR. A BLANK @V200899 01015000
  1053. BNE IEWLEN10 BR IF NO-MUST BE ENTRY NAME @V200899 01016000
  1054. LA R3,1(R3) MOVE PNTR. TO NXT CHAR. @V200899 01017000
  1055. BCT R1,IEWLEN02 BR TO TEST NXT CHAR. @V200899 01018000
  1056. B IEWLENXX IF FALL THRU - ERROR @V200899 01019000
  1057. IEWLEN10 DS 0H @V200899 01020000
  1058. MVC ENTRYNAM,BLANKS BLANK NAME FIELD @V200899 01021000
  1059. LA R2,ENTRYNAM ADDR TO RECIEVE NAME @V200899 01022000
  1060. LA R4,8 MAX LNGTH OF ENTRY NAME @V200899 01023000
  1061. IEWLEN12 DS 0H @V200899 01024000
  1062. MVC 0(1,R2),0(R3) MOVE 1 CHAR. AT A TIME @V200899 01025000
  1063. LA R2,1(R2) MOVE PNTR TO NAME REC. BYTE @V200899 01026000
  1064. LA R3,1(R3) MOVE PNTR TO NXT INPUT BYTE @V200899 01027000
  1065. CLI 0(R3),C' ' TEST END OF NAME @V200899 01028000
  1066. BE IEWLEN14 @V200899 01029000
  1067. BCT R4,IEWLEN12 TEST IF MAX HAS BEEN REACHED @V200899 01030000
  1068. B IEWLENXX IF FALL THRU - ERROR @V200899 01031000
  1069. IEWLEN14 DS 0H @V200899 01032000
  1070. L R14,IEWLENSV LOAD RETURN ADDR @V200899 01033000
  1071. BR R14 NORMAL RETURN @V200899 01034000
  1072. IEWLENXX DS 0H @V200899 01035000
  1073. LA R15,24 LOAD RETURN CODE @V200899 01036000
  1074. ST R15,SVREG15 STORE RETURN CODE @V200899 01037000
  1075. LA R2,DMSGRN78 ADDR OF ERROR MSG @V200899 01038000
  1076. BAL R14,GENMSG @V200899 01039000
  1077. L R14,IEWLENSV LOAD RETURN ADDR @V200899 01040000
  1078. B DATERR(R14) DATA ERROR RETURN @V200899 01041000
  1079. * 01042000
  1080. SPACE 01043000
  1081. IEWLENSV DC F'0' @V200899 01044000
  1082. EJECT 01045000
  1083. *********************************************************************** 01046000
  1084. * 01047000
  1085. * EXEC MACRO COMMAND STACKER 01048000
  1086. * 01049000
  1087. *********************************************************************** 01050000
  1088. ASMSTAK DS 0H @V200899 01051000
  1089. ST R14,STACKSV SAVE RETURN ADDR @V200899 01052000
  1090. TM PROCSW1,ASMFIRST FIRST TIME IN @V200899 01053000
  1091. BZ ASMSTAK2 BR IF YES @V200899 01054000
  1092. MVC GENADD,ADD CHANGE TXTLIB GEN TO ADD @V200899 01055000
  1093. ASMSTAK2 DS 0H @V200899 01056000
  1094. LA R2,OUTFSCB ADDR OF OUTPUT FSCB @V200899 01057000
  1095. USING DFSCB,R2 @V200899 01058000
  1096. MVC ASMFNM,FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01059000
  1097. MVC ASMNAME,FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01060000
  1098. MVC FILENM,FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01061000
  1099. MVC ERSFNAM(8),FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01062000
  1100. * 01063000
  1101. * 01064000
  1102. * SWAP FSCB'S 01065000
  1103. * 01066000
  1104. * 01067000
  1105. LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 01068000
  1106. MVC NCPNM,FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01069000
  1107. DROP R2 @V200899 01070000
  1108. OI PROCSW1,ASMFIRST SET SW TO NOT 1-ST TIME @V200899 01071000
  1109. MVC ASMSTKNM,ASMMEM MOVE MEMBER NAME TO LKED FIELD @V200899 01072000
  1110. LM R1,R2,STACKASM INIT. REG'S @V200899 01073000
  1111. B STACK30 BEG TO STACK BEG CMD'S @V200899 01074000
  1112. EJECT 01075000
  1113. LKDSTACK DS 0H @V200899 01076000
  1114. ST R14,STACKSV SAVE RETURN ADDR @V200899 01077000
  1115. LA R2,OUTFSCB ADDR OF OUTPUT FSCB @V200899 01078000
  1116. USING DFSCB,R2 @V200899 01079000
  1117. TM PROCSW1,LKDFIRST 1-ST TIME THRU LKDSTACK @V200899 01080000
  1118. BO LKDSTK1 BR IF NO @V200899 01081000
  1119. OI PROCSW1,LKDFIRST SET SW. NOT FIRST TIME @V200899 01082000
  1120. MVC FNAME1(8),FSCBFN MOVE FILENAME INTO CMD @V200899 01083000
  1121. MVC FNAME3(8),FNAME1 ......ALSO FOR SINGLE JCL @VA10299 01083500
  1122. * 01084000
  1123. * SWAP FSCB'S 01085000
  1124. * 01086000
  1125. LA R2,INPFSCB ADDR OF INPUT FSCB @V200899 01087000
  1126. TM PROCSW1,NEWJCL DO WE HAVE NEW JCL? @VA10299 01087100
  1127. BNO LKDSTK2 NOT NEW JCL @VA10299 01087200
  1128. MVC OPTION3(51),OPTION1 LKED OPTIONS @VA10299 01087300
  1129. LM R1,R2,STAKLKD3 INIT. REG'S @VA10299 01087400
  1130. B STACK30 BEG TO STACK END @VA10299 01087500
  1131. LKDSTK2 DS 0H @VA10299 01087600
  1132. LM R1,R2,STAKLKD1 INIT. REG'S @V200899 01088000
  1133. B STACK30 BEG TO STACK END @V200899 01089000
  1134. LKDSTK1 DS 0H @V200899 01090000
  1135. MVC FNAME2(8),FSCBFN MOVE NAME INTO CMD. @V200899 01091000
  1136. LA R3,FIOBJ3NM WHERE THE NAME WILL GO @VM08696 01092000
  1137. LA R4,OBJNM1 POINT TO FIRST NAME INFO. @VM08696 01093000
  1138. TM PROCSW1,CKINCL WERE THERE 2 NAMES? @VM08696 01094000
  1139. BZ BMP4 NOPE @VM08696 01095000
  1140. L R4,SHRTR YES - POINT TO THE SHORTER NAME @VM08696 01096000
  1141. BMP4 EQU * @VM08696 01097000
  1142. LA R4,4(,R4) POINT TO THE NAME @VM08696 01098000
  1143. LA R5,7 MAX LENGTH - 1 @VM08696 01099000
  1144. EX R5,SWAPMVC MOVE NAME INTO FILEDEF @VM08696 01100000
  1145. LM R1,R2,STAKLKD2 INIT. REG'S @V200899 01101000
  1146. B STACK30 @V200899 01102000
  1147. * 01103000
  1148. * 01104000
  1149. * 01105000
  1150. CLOSTACK DS 0H @V200899 01106000
  1151. ST R14,STACKSV SAVE RETURN ADDR @V200899 01107000
  1152. LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 01108000
  1153. MVC SVNCPNAM,FSCBFN MOVE INPUT FILE NAME TO SAVE @V200899 01109000
  1154. * CMD. 01110000
  1155. LM R1,R2,ENDCMD INIT. REG'S @V200899 01111000
  1156. B STACK30 @V200899 01112000
  1157. DROP R2 @V200899 01113000
  1158. EJECT 01114000
  1159. STACK10 DS 0H @V200899 01115000
  1160. LM R1,R2,STACKCNT LOAD REG'S FROM STACK CONTROL @V200899 01116000
  1161. BCT R1,STACK20 IF END OF STACK NOT REACHED @V200899 01117000
  1162. * CONTINUE 01118000
  1163. B STACKXT IF FALL THRU END OF STACK- EXIT @V200899 01119000
  1164. STACK20 DS 0H @V200899 01120000
  1165. SR R3,R3 @V200899 01121000
  1166. IC R3,0(R2) INSERT LNTH OF LAST CMD STACKED @V200899 01122000
  1167. LA R2,1(R2,R3) MOVE PNTR TO NXT CMD @V200899 01123000
  1168. STACK30 DS 0H @V200899 01124000
  1169. STM R1,R2,STACKCNT SAVE REG'S FOR STACK CNT @V200899 01125000
  1170. BAL R14,PROCWT WRT CMD TO STG2 EXEC PROC @V200899 01126000
  1171. B STACK10 NORMAL RETURN @V200899 01127000
  1172. B STACKERR ERROR RETURN @V200899 01128000
  1173. STACKXT DS 0H @V200899 01129000
  1174. L R14,STACKSV LOAD RETURN ADDR @V200899 01130000
  1175. BR R14 @V200899 01131000
  1176. STACKERR DS 0H @V200899 01132000
  1177. L R14,STACKSV LOAD RETURN ADDR @V200899 01133000
  1178. B STKERROR(R14) ERROR RETURN @V200899 01134000
  1179. * 01135000
  1180. SPACE 1 01136000
  1181. STACKSV DC F'0' @V200899 01137000
  1182. STACKCNT DC 2F'0' STACK CONTROL SAVE AREA @V200899 01138000
  1183. STKERROR EQU X'04' STACK ERROR RETURN DISP. @V200899 01139000
  1184. EJECT 01140000
  1185. * 01141000
  1186. * START STACK OF ASM & EDIT CMD'S 01142000
  1187. * 01143000
  1188. STACKASM DC A(10),A(STACKBEG) INIT. ASM STACK CMD'S @V200899 01144000
  1189. STACKBEG DS 0C @V200899 01145000
  1190. DC X'18',C'ASM3705 ' @V200899 01146000
  1191. ASMFNM DC C' ' ASSEMBLER FILE NAME @V200899 01147000
  1192. DC C' (PRINT)' ASSEMBLER OPTIONS @V200899 01148000
  1193. * 01149000
  1194. DC X'0E',X'50',C'BEGSTACK LIFO' @V200899 01150000
  1195. * 01151000
  1196. DC X'04',C'FILE' @V200899 01152000
  1197. * 01153000
  1198. DC X'10',C'I NAME ' @V200899 01154000
  1199. ASMSTKNM DC C' ' TXTLIB FILE NAME @V200899 01155000
  1200. * 01156000
  1201. DC X'03',C'BOT' @V200899 01157000
  1202. * 01158000
  1203. DC X'08',C'VER OFF ' @V200899 01159000
  1204. * 01160000
  1205. DC X'04',X'50',C'END' @V200899 01161000
  1206. * 01162000
  1207. DC X'15',C'EDIT ' @V200899 01163000
  1208. ASMNAME DC C' ' @V200899 01164000
  1209. DC C' TEXT A1' @V200899 01165000
  1210. * 01166000
  1211. DC X'1C',C'TXTLIB ' @V200899 01167000
  1212. GENADD DC C'GEN' FIRST TIME IS GEN AFTERWARD @V200899 01168000
  1213. * IT'S AN ADD 01169000
  1214. DC C' ' BLANK @V200899 01170000
  1215. NCPNM DC C' ' NAME OF INPUT FILE @V200899 01171000
  1216. DC C' ' BLANK @V200899 01172000
  1217. FILENM DC C' ' ASM3705 FILE NAME @V200899 01173000
  1218. * 01174000
  1219. DC X'14',C'ERASE ' @V200899 01175000
  1220. ERSFNAM DC C' ' ASM3705 FILE NAME @V200899 01176000
  1221. DC C' TEXT ' @V200899 01177000
  1222. * 01178000
  1223. * LKED COMMANDS 01179000
  1224. * 01180000
  1225. STAKLKD1 DC A(4),A(LKEDCMSA) @V200899 01181000
  1226. LKEDCMSA DS 0C @V200899 01182000
  1227. ERASECMD DC X'17',C'ERASE NCPTEMP LOADLIB A' @V200899 01183000
  1228. DC X'27',C'FILEDEF SYSLIB DISK ' @V200899 01184000
  1229. DEF1NM DC C' ' NCP NAME @V200899 01185000
  1230. DC C' TXTLIB A1' @V200899 01186000
  1231. DC X'3A',C'FILEDEF SYSLMOD DISK NCPTEMP LOADLIB ' @V200899 01187000
  1232. DC C'A1 (RECFM U BLOCK 260' @V200899 01188000
  1233. LKEDCMS1 DC X'50',C'LKED ' @V200899 01189000
  1234. FNAME1 DC CL9' ' @V200899 01190000
  1235. DC C'( PRINT NOTERM ' @V200899 01191000
  1236. OPTION1 DC CL51' ' @V200899 01192000
  1237. * 01193000
  1238. STAKLKD2 DC A(5),A(LKEDCMSB) INIT. LKED STACK CMDS @V200899 01194000
  1239. LKEDCMSB DS 0C @V200899 01195000
  1240. DC X'26',C'FILEDEF SYSLIB DISK ' @V200899 01196000
  1241. DEF2NM DC C' ' NCP NAME @V200899 01197000
  1242. DC C' TXTLIB A1' @V200899 01198000
  1243. FIOBJ3 DC X'27',C'FILEDEF ' @V200899 01199000
  1244. FIOBJ3NM DC CL9' ' DDNAME GOES HERE @V200899 01200000
  1245. DC C'DISK OBJ3705 TXTLIB A1' @V200899 01201000
  1246. FITEMP DC X'3C',C'FILEDEF ' @V200899 01202000
  1247. FITEMPNM DC CL9' ' DDNAME GOES HERE @V200899 01203000
  1248. DC C'DISK NCPTEMP LOADLIB A1 ( RECFM U BLOCK 260' @V200899 01204000
  1249. FISMOD DC X'3C',C'FILEDEF SYSLMOD DISK ' @V200899 01205000
  1250. FISMODNM DC CL9' ' PLUG LIBRARY NAME IN HERE @V200899 01206000
  1251. DC C'LOADLIB A1 ( RECFM U BLOCK 260' @V200899 01207000
  1252. LKEDCMS2 DC X'50',C'LKED ' @V200899 01208000
  1253. FNAME2 DC CL9' ' @V200899 01209000
  1254. DC C'( PRINT NOTERM ' @V200899 01210000
  1255. OPTION2 DC CL51' ' @V200899 01211000
  1256. STAKLKD3 DC A(4),A(LKEDCMSC) @VA10299 01211060
  1257. LKEDCMSC DS 0C @VA10299 01211120
  1258. DC X'28',C'FILEDEF OBJ3705 DISK ' @VA10299 01211180
  1259. OBJ3NM DC C' ' NCP NAME @VA10299 01211240
  1260. DC C' TXTLIB A1' @VA10299 01211300
  1261. DC X'29',C'FILEDEF SYSPUNCH DISK ' @VA10299 01211360
  1262. PCH3NM DC C' ' ASM3705 OBJ FILE @VA10299 01211420
  1263. DC C' TXTLIB A1' @VA10299 01211480
  1264. DC X'3B',C'FILEDEF SYSLMOD DISK ' @VA10299 01211540
  1265. LDM3NM DC C' ' SYSLMOD DSN @VA10299 01211600
  1266. DC C' LOADLIB A1 (RECFM U BLOCK 260' @VA10299 01211660
  1267. LKEDCMS3 DC X'50',C'LKED ' @VA10299 01211720
  1268. FNAME3 DC CL9' ' @VA10299 01211780
  1269. DC C'( PRINT NOTERM ' @VA10299 01211840
  1270. OPTION3 DC CL51' ' @VA10299 01211900
  1271. * 01212000
  1272. * SAVE NCP COMMANDS 01213000
  1273. * 01214000
  1274. SPACE 1 01215000
  1275. ENDCMD DC A(1),A(SAVE3705) INIT. STG2 SAVE CMD'S @V200899 01216000
  1276. SAVE3705 DC X'21',C'SAVENCP ' SAVENCP CMD @V200899 01217000
  1277. SVNCPNAM DC C' ' NCP SAVE NAME @V200899 01218000
  1278. DC C' ( ENTRY ' OPTIONS @V200899 01219000
  1279. ENTRYNAM DC C' ' NAME OF MODULE ENTRY POINT @V200899 01220000
  1280. EJECT 01221000
  1281. *********************************************************************** 01222000
  1282. * 01223000
  1283. * FOLLOWING ARE A NUMBER OF SUB-ROUTINES 01224000
  1284. * 01225000
  1285. *********************************************************************** 01226000
  1286. SPACE 3 01227000
  1287. * 01228000
  1288. * EDIT INPUT RECORDS FOR KEYWORD 01229000
  1289. * ENTRY: 01230000
  1290. * R2 ADDR OF KEYWORD DEFINITION 01231000
  1291. * 01232000
  1292. * WORK REG'S 01233000
  1293. * R3 WORK REG. 01234000
  1294. * R4 WORK REG. 01235000
  1295. * R5 WORK REG. 01236000
  1296. * R6 WORK REG. 01237000
  1297. * EXIT: 01238000
  1298. * R2 ADDR OF KEYWORD 01239000
  1299. * R3 POINTS TO FIRST CHARACTER OF KEYWORD IN INPUT 01240000
  1300. * 01241000
  1301. EDITIN DS 0H @V200899 01242000
  1302. USING DEDIT,R2 @V200899 01243000
  1303. LA R3,INPUT LOAD ADDR OF INPUT REC @V200899 01244000
  1304. LH R4,EDITMAX LOAD MAX. NU. BYTES TO EDIT @V200899 01245000
  1305. LH R5,EDITFLDL LOAD LNTH OF KEYWORD @V200899 01246000
  1306. LA R6,EDITFLD LOAD ADDR OF KEYWORD @V200899 01247000
  1307. DROP R2 @V200899 01248000
  1308. BCTR R5,0 DEC. LNTH BY 1 FOR EXECUTE @V200899 01249000
  1309. EDITLOOP DS 0H @V200899 01250000
  1310. EX R5,EDITTEST EXECUTE COMPARE OF KEYWORD AND @V200899 01251000
  1311. * INPUT 01252000
  1312. BE FIND(R14) EXIT IF KEYWORD FOUND @V200899 01253000
  1313. LA R3,1(R3) MOVE OVER 1 BYTE IN INPUT @V200899 01254000
  1314. BCT R4,EDITLOOP DEC. MAX. LNTH OF SCAN - IS IT @V200899 01255000
  1315. * = 0 01256000
  1316. B NOFIND(R14) RETURN NOT FOUND @V200899 01257000
  1317. * 01258000
  1318. EDITTEST CLC 0(0,R3),0(R6) COMPARE KEYWORD & INPUT @V200899 01259000
  1319. * 01260000
  1320. FIND EQU X'00' FOUND RETURN DISP. @V200899 01261000
  1321. NOFIND EQU X'04' NOT FOUND RETURN DISP. @V200899 01262000
  1322. EJECT 01263000
  1323. * 01264000
  1324. * EDIT DSN AND IF DSN ENDS WITH '(' THEN MEMBER 01265000
  1325. * CAN NO EXCEDE 8 CHARACTER'S 01266000
  1326. * 01267000
  1327. * ENTRY/EXIT: 01268000
  1328. * R2 ADDR OF FIELD TO REC. THE DSN 01269000
  1329. * R3 ADDR OF START OF DSN 01270000
  1330. * 01271000
  1331. * WORK REG'S: 01272000
  1332. * R4 WORK REG. 01273000
  1333. * R5 WORK REG. 01274000
  1334. * R6 WORK REG. 01275000
  1335. * R7 WORK REG. 01276000
  1336. * 01277000
  1337. DSNEDIT DS 0H @V200899 01278000
  1338. LR R4,R2 INIT. R4 @V200899 01279000
  1339. LR R5,R3 INIT. R5 @V200899 01280000
  1340. MVC 0(8,R4),BLANKS BLANK REC. FIELD @V200899 01281000
  1341. LA R6,20 MAX. LNTH OF DSN @V200899 01282000
  1342. MVC SYSPCHSV+1(1),0(R5) SAVE 1ST CHAR. @V200899 01283000
  1343. LA R7,SYSPCHSV+2 POINT TO NEXT CHAR. @V200899 01284000
  1344. DSNEDIT1 DS 0H @V200899 01285000
  1345. LA R5,1(R5) MOVE TO NEXT DSN BYTE @V200899 01286000
  1346. CLI 0(R5),C'(' TEXT FOR MEMBER NAME @V200899 01287000
  1347. BE MEMEDIT BR IF YES - @V200899 01288000
  1348. CLI 0(R5),C',' TEST END OF DSN @V200899 01289000
  1349. BE DSNEDIT2 BR IF YES @V200899 01290000
  1350. CLI 0(R5),C' ' TEST END OF DSN @V200899 01291000
  1351. BE DSNEDIT2 BR IF YES @V200899 01292000
  1352. MVC 0(1,R7),0(R5) SAVE THE CHARACTER @V200899 01293000
  1353. LA R7,1(,R7) BUMP THE POINTER @V200899 01294000
  1354. BCT R6,DSNEDIT1 HHAS MAX. BEEN REACHED - BR IF NO@V200899 01295000
  1355. B 4(R14) ERROR RETURN @V200899 01296000
  1356. DSNEDIT2 DS 0H @V200899 01297000
  1357. BR R14 RETURN @V200899 01298000
  1358. * 01299000
  1359. * EDIT MEMBER NAME 01300000
  1360. * 01301000
  1361. MEMEDIT DS 0H @V200899 01302000
  1362. STC R6,SYSPCHSV SAVE REMAINING COUNT @V200899 01303000
  1363. LA R5,1(R5) MOVE POINTER PASSED '(' @V200899 01304000
  1364. LA R6,L'ASMMEM EST. MAX. LNTH OF MEMBER NAME @V200899 01305000
  1365. MEMEDIT1 DS 0H @V200899 01306000
  1366. MVC 0(1,R4),0(R5) MOVE MEMBER NAME 1 BYTE AT A TIME@V200899 01307000
  1367. LA R4,1(R4) MOVE TO NXT BYTE TO REC. NAME @V200899 01308000
  1368. LA R5,1(R5) MOVE TO NXT BYTE OF MEM. NAME @V200899 01309000
  1369. CLI 0(R5),C')' END OF MEMBER NAME @V200899 01310000
  1370. BE 0(R14) BR IF YES @V200899 01311000
  1371. BCT R6,MEMEDIT1 HAS MAX. BEEN REACHED @V200899 01312000
  1372. B 4(R14) ERROR RETURN @V200899 01313000
  1373. BR R14 RETURN @V200899 01314000
  1374. EJECT 01315000
  1375. * 01316000
  1376. * SET POINTER IN R3 TO START OF DATASET NAME 01317000
  1377. * 01318000
  1378. FNDDSN DS 0H @V200899 01319000
  1379. LA R2,DSN LOCATE CHARS. 'DSN' @V200899 01320000
  1380. BAL R14,EDITIN . . . @V200899 01321000
  1381. B FNDDSN1 FOUND IT @V200899 01322000
  1382. B 4(R7) NOT FOUND - ERROR @V200899 01323000
  1383. FNDDSN1 DS 0H @V200899 01324000
  1384. CLC DSNEQU,0(R3) IS IT 'DSN='? @V200899 01325000
  1385. B FNDDSN2 YES - OK @V200899 01326000
  1386. CLC DSNAME,0(R3) NOPE - IS IT 'DSNAME='? @V200899 01327000
  1387. BNE 4(R7) NO - TAKE ERROR RTN PATH @V200899 01328000
  1388. LA R3,3(,R3) YES - STEP AROUND THE KEYWORD @V200899 01329000
  1389. FNDDSN2 DS 0H @V200899 01330000
  1390. LA R3,4(,R3) . . . @V200899 01331000
  1391. BR R10 RETURN @V200899 01332000
  1392. SPACE 5 01333000
  1393. * 01334000
  1394. * READ THE FILE DEFINED BY THE FSCB 01335000
  1395. * ENTRY/EXIT: 01336000
  1396. * R2 ADDR OF THE FSCB TO BE USED FOR THE READ 01337000
  1397. * 01338000
  1398. * WORK REG'S: 01339000
  1399. * R1 01340000
  1400. * R15 01341000
  1401. * 01342000
  1402. FSCBRD DS 0H @V200899 01343000
  1403. ST R14,FSCBRDSV SAVE RETURN ADDR @V200899 01344000
  1404. TM SWINFILE,EOF HAS EOF BEEN REACHED ON INPUT @V200899 01345000
  1405. * FILE 01346000
  1406. BO ENDRTCD(R14) EOF RETURN @V200899 01347000
  1407. FSREAD FSCB=(R2),ERROR=FSCBRDER @V200899 01348000
  1408. B NORM(R14) @V200899 01349000
  1409. FSCBRDER DS 0H @V200899 01350000
  1410. CH R15,ENDCODE IS ERROR CODE = EOF @V200899 01351000
  1411. BNE FSCBRDR1 BR IF NO ERROR @V200899 01352000
  1412. OI SWINFILE,EOF TURN INPUT FILE EOF ON @V200899 01353000
  1413. B ENDRTCD(R14) EOF RETURN @V200899 01354000
  1414. FSCBRDR1 DS 0H @V200899 01355000
  1415. ST R15,SVREG15 SAVE RETURN CODE @V200899 01356000
  1416. CH R15,INVFORM IS THE FORMAT INVALID @V200899 01357000
  1417. BE FSCBRDR2 BR IF YES @V200899 01358000
  1418. CH R15,INVLNTH IS THE RECORD LNTH INVALID @V200899 01359000
  1419. BNE ERROR(R14) BR IF NO @V200899 01360000
  1420. FSCBRDR2 DS 0H @V200899 01361000
  1421. LA R2,DMSGRN07 ADDR OF INVALID RECORD @V200899 01362000
  1422. * FORMAT/LENGTH 01363000
  1423. BAL R14,GENMSG @V200899 01364000
  1424. L R14,FSCBRDSV LOAD RETURN ADDR @V200899 01365000
  1425. B ERROR(R14) ERROR RETURN @V200899 01366000
  1426. * 01367000
  1427. FSCBRDSV DC F'0' @V200899 01368000
  1428. * 01369000
  1429. INVFORM DC H'07' INVALID FORMAT @V200899 01370000
  1430. INVLNTH DC H'08' INCORRECT LENGTH @V200899 01371000
  1431. ENDCODE DC H'12' EOF ERROR RETURN CODE @V200899 01372000
  1432. INVMODE DC H'24' INVALID MODE @V200899 01373000
  1433. * 01374000
  1434. NORM EQU X'00' NORMAL RETURN @V200899 01375000
  1435. ENDRTCD EQU X'04' EOF RETURN @V200899 01376000
  1436. ERROR EQU X'08' ERROR RETURN @V200899 01377000
  1437. SWINFILE DC X'00' INPUT FILE CONTROL SW'S @V200899 01378000
  1438. EOF EQU X'01' EOF ON IN INPUT FILE SW. @V200899 01379000
  1439. EJECT 01380000
  1440. * 01381000
  1441. * BUILD & OPEN AN FSCB & THEN WRITE TO THE FILE. TEST NEW FILE 01382000
  1442. * VIA THE FSSTATE MACRO. 01383000
  1443. * 01384000
  1444. * ALL OUTPUT RECORDS ARE IN THE INPUT FIELD 01385000
  1445. * 01386000
  1446. * 01387000
  1447. FSCBWT DS 0H @V200899 01388000
  1448. ST R14,FSCBWTSV SAVE RETURN ADDR @V200899 01389000
  1449. LA R3,OUTFSCB ADDR OF OUTPUT FSCB @V200899 01390000
  1450. TM SWFILE,OLD TEXT IF FILE IS OPEN @V200899 01391000
  1451. BO FSCBWT40 BR IF YES - FSCB ALREADY BUILT & @V200899 01392000
  1452. * OPEN. 01393000
  1453. USING DFSCB,R3 @V200899 01394000
  1454. MVC OUTFSCB(L'ASMFSCB),DUMMYFCB MOVE SKELTON FSCB TO@V200899 01395000
  1455. MVC FSCBFN,STG1NAME UPDATE FILE NAME IN FSCB @V200899 01396000
  1456. LA R4,FSCBFN ADDR OF OUTPUT FILE NAME @V200899 01397000
  1457. AH R4,NAMELNG ADDR THE LNTH OF THE NAME @V200899 01398000
  1458. CLC FSCBFT,TEXT IS FILE TYPE TEXT @V200899 01399000
  1459. BE FSCBWT04 BR IF YES @V200899 01400000
  1460. UNPK 0(2,R4),IFKCNT UNPACK IFKASM CNT IN TO NAME @V200899 01401000
  1461. AP IFKCNT,DECONE ADD 1 TO CNT @V200899 01402000
  1462. B FSCBWT06 @V200899 01403000
  1463. FSCBWT04 DS 0H @V200899 01404000
  1464. MVI 0(R4),C'L' PUT AN 'L' INTO NCP NAME @V200899 01405000
  1465. UNPK 1(1,R4),IEWLCNT UNPACK CNT INTO NAME @V200899 01406000
  1466. AP IEWLCNT,DECONE ADD 1 TO CNT @V200899 01407000
  1467. FSCBWT06 DS 0H @V200899 01408000
  1468. OI 1(R4),X'F0' INSURE LAST BYTE IS NUMERIC @V200899 01409000
  1469. FSCBWT10 DS 0H @V200899 01410000
  1470. FSSTATE FSCB=(R3) @V200899 01411000
  1471. CH R15,NOFILE TEST ERROR RETURN FOR NOT FOUND @V200899 01412000
  1472. BE FSCBWT32 BR IF EQU - NO FILE @V200899 01413000
  1473. B FSCBWT30 @V200899 01414000
  1474. FSCBWT30 DS 0H @V200899 01415000
  1475. FSERASE FSCB=(R3) @V200899 01416000
  1476. CH R15,ERASERR ERROR DURING ERASE @V200899 01417000
  1477. BE FSCBWTER BR IF YES @V200899 01418000
  1478. FSCBWT32 DS 0H @V200899 01419000
  1479. OI SWFILE,OLD SET FILE OPEN/OLD @V200899 01420000
  1480. DROP R3 @V200899 01421000
  1481. FSCBWT40 DS 0H @V200899 01422000
  1482. FSWRITE FSCB=(R3),ERROR=FSCBWTER @V200899 01423000
  1483. L R14,FSCBWTSV RESTORE RETURN ADDR @V200899 01424000
  1484. BR R14 NORMAL RETURN @V200899 01425000
  1485. FSCBWTER DS 0H @V200899 01426000
  1486. ST R15,SVREG15 SAVE ERROR CODE @V200899 01427000
  1487. L R14,FSCBWTSV RESTORE RETURN ADDR @V200899 01428000
  1488. B WTERROR(R14) ERROR RETURN @V200899 01429000
  1489. * 01430000
  1490. FSCBWTSV DC F'0' @V200899 01431000
  1491. NOFILE DC H'28' FILE NOT FOUND @V200899 01432000
  1492. ERASERR DC H'24' ERASE PARAMETER LIST ERROR @V200899 01433000
  1493. * 01434000
  1494. SWFILE DC X'00' SW. FOR ASSEMBLER OUTPUT FILES @V200899 01435000
  1495. OLD EQU X'01' SET FILE TO OPEN/OLD @V200899 01436000
  1496. * 01437000
  1497. WTERROR EQU X'04' RETYRN ERROR DISP. @V200899 01438000
  1498. SPACE 2 01439000
  1499. * 01440000
  1500. * CLOSE CURRENT ASSEMBLE FILE - IGNOR ANY CLOSE ERROR'S 01441000
  1501. * 01442000
  1502. * WORK REG'S: 01443000
  1503. * R1 WORK REG. 01444000
  1504. * R2 WORK REG. 01445000
  1505. * R3 WORK REG. 01446000
  1506. * R15 WORK REG. 01447000
  1507. * 01448000
  1508. FSCBCLOS DS 0H @V200899 01449000
  1509. TM SWFILE,OLD IS FILE OPEN @V200899 01450000
  1510. BZ 0(R14) BR IF NO - NOT NECES. TO CLOSE @V200899 01451000
  1511. ST R14,FSCBCLSV SAVE RETURN ADDR @V200899 01452000
  1512. LA R3,OUTFSCB ADDR OF ASM OUTPUT FSCB @V200899 01453000
  1513. FSCLOSE FSCB=(R3) @V200899 01454000
  1514. NI SWFILE,FF-OLD SET SW. NEW/CLOSED @V200899 01455000
  1515. L R14,FSCBCLSV RESTORE RETURN ADDR @V200899 01456000
  1516. BR R14 RETURN @V200899 01457000
  1517. * 01458000
  1518. SPACE 1 01459000
  1519. FSCBCLSV DC F'0' @V200899 01460000
  1520. EJECT 01461000
  1521. *********************************************************************** 01462000
  1522. * 01463000
  1523. * WRITE COMMAND TO STG2 EXEC PROC FILE 01464000
  1524. * 01465000
  1525. *********************************************************************** 01466000
  1526. PROCWT DS 0H @V200899 01467000
  1527. ST R14,PROCWTSV SAVE RETURN ADDR @V200899 01468000
  1528. TM PROCSW1,PROCOPEN HAS FILE BEEN OPENED @V200899 01469000
  1529. BO PROCWT10 BR IF YES @V200899 01470000
  1530. LA R3,PROC ADDR OF EXEC PROC FSCB @V200899 01471000
  1531. LA R4,INPFSCB ADDR OF INPUT FSCB @V200899 01472000
  1532. MVC 8(8,R3),8(R4) MOVE INPUT FILE NAME TO EXEC PROC@V200899 01473000
  1533. FSERASE FSCB=PROC @V200899 01474000
  1534. CH R15,ERASERR ERASE PARAMETER LIST ERROR @V200899 01475000
  1535. BE PROCERR BR IF YES @V200899 01476000
  1536. OI PROCSW1,PROCOPEN SET SW. FILE OPEN @V200899 01477000
  1537. PROCWT10 DS 0H @V200899 01478000
  1538. MVI PROCBUF,C' ' BLANK PROC OUTPUT BUFFER @V200899 01479000
  1539. MVC PROCBUF+1(L'PROCBUF-1),PROCBUF @V200899 01480000
  1540. SR R1,R1 ZERO REG @V200899 01481000
  1541. IC R1,0(R2) LOAD LNTH OF OUTPUT CMD @V200899 01482000
  1542. BCTR R1,R0 SUBT. 1 @V200899 01483000
  1543. EX R1,CMDMOVE EXECUTE MOVE CMD-CMD @V200899 01484000
  1544. FSWRITE FSCB=PROC,ERROR=PROCERR @V200899 01485000
  1545. L R14,PROCWTSV LOAD RETURN ADDR @V200899 01486000
  1546. BR R14 RETURN @V200899 01487000
  1547. PROCERR DS 0H @V200899 01488000
  1548. ST R15,SVREG15 SAVE RETURN CODE @V200899 01489000
  1549. L R14,PROCWTSV LOAD RETURN ADDR @V200899 01490000
  1550. B WTERROR(R14) PROC. WRITE ERROR RETURN @V200899 01491000
  1551. * 01492000
  1552. SPACE 1 01493000
  1553. PROCWTSV DC F'00' @V200899 01494000
  1554. * 01495000
  1555. CMDMOVE MVC PROCBUF(0),1(R2) MOVE PROC OUTPUT CMD TO OUTPUT @V200899 01496000
  1556. * 01497000
  1557. PROCBUF DC CL80' ' PROC WRITE OUTPUT AREA @V200899 01498000
  1558. EJECT 01499000
  1559. * 01500000
  1560. * CLOSE THE STG2 EXEC PROC 01501000
  1561. * 01502000
  1562. PROCEND DS 0H @V200899 01503000
  1563. ST R14,PROCNDSV SAVE RETURN ADDRESS @V200899 01504000
  1564. TM PROCSW1,PROCOPEN IS THE EXEC PROC OPEN @V200899 01505000
  1565. BCR 8,R14 BR IF NO - NOT OPEN WHY CLOSE IT @V200899 01506000
  1566. PROCNDXT DS 0H @V200899 01507000
  1567. NI PROCSW1,FF-PROCOPEN TURN OFF OPEN SW @V200899 01508000
  1568. FSCLOSE FSCB=PROC @V200899 01509000
  1569. L R14,PROCNDSV LOAD RETURN ADDRESS @V200899 01510000
  1570. BR R14 RETURN @V200899 01511000
  1571. * 01512000
  1572. SPACE 1 01513000
  1573. PROCNDSV DC F'0' @V200899 01514000
  1574. * 01515000
  1575. PROCSW1 DC X'00' SWITCHES PROC CONTROL @V200899 01516000
  1576. PROCOPEN EQU X'01' EXEC PROC OPEN/CLOSED @V200899 01517000
  1577. ASMFIRST EQU X'02' FIRST TIME THRU ASMSTAK @V200899 01518000
  1578. LKDFIRST EQU X'04' FIRST TIME THRU LKDSTAK @V200899 01519000
  1579. APOSTSW EQU X'08' SW. FOR APOSTROPHE IN LKED PARM= @V200899 01520000
  1580. LKD1 EQU X'10' FIRST 'LKED' PROCESSED @V200899 01521000
  1581. CKINCL EQU X'20' 2 NAMES REFERENCE SYS1.OBJ3705 @VM08696 01522000
  1582. NEWJCL EQU X'40' SINGLE LNKED STEP SWITCH @VA10299 01522500
  1583. * 01523000
  1584. FF EQU X'FF' MASK TO TURN SW'S OFF @V200899 01524000
  1585. EJECT 01525000
  1586. *********************************************************************** 01526000
  1587. * 01527000
  1588. * GENERATE ERROR MESSAGES 01528000
  1589. * 01529000
  1590. *********************************************************************** 01530000
  1591. SPACE 1 01531000
  1592. GENMSG DS 0H @V200899 01532000
  1593. ST R14,GENMSGSV SAVE RETURN ADDR @V200899 01533000
  1594. L R3,0(R2) LOAD VARIABLE ADDR @V200899 01534000
  1595. LH R4,4(R2) LOAD MSG NUMBER @V200899 01535000
  1596. LA R2,6(R2) ADDR OF MSG TEXT @V200899 01536000
  1597. DMSERR RENT=NO,TEXTA=(R2),SUB=(CHAR8A,(R3)),LET=E, @V200899X01537000
  1598. NUM=(R4) @V200899 01538000
  1599. L R14,GENMSGSV RETURN ADDR @V200899 01539000
  1600. BR R14 RETURN @V200899 01540000
  1601. * 01541000
  1602. SPACE 1 01542000
  1603. GENMSGSV DC F'0' @V200899 01543000
  1604. SPACE 2 01544000
  1605. * 01545000
  1606. * ERROR MESSAGES 01546000
  1607. DMSGRN54 DC A(0),AL2(54),AL1(GRN54L) @V200899 01547000
  1608. DC C'INCOMPLETE FILE ID SPECIFIED' @V200899 01548000
  1609. GRN54L EQU *-DMSGRN54-7 @V200899 01549000
  1610. SPACE 1 01550000
  1611. DMSGRN48 DC A(0),AL2(48),AL1(GRN48L) @V200899 01551000
  1612. DC C'INVALID MODE ''........''' @V200899 01552000
  1613. GRN48L EQU *-DMSGRN48-7 @V200899 01553000
  1614. SPACE 1 01554000
  1615. DMSGRN02 DC A(INPFSCB+8),AL2(02),AL1(GRN02L) @V200899 01555000
  1616. DC C'FILE ''..................'' NOT FOUND' @V200899 01556000
  1617. GRN02L EQU *-DMSGRN02-7 @V200899 01557000
  1618. SPACE 1 01558000
  1619. DMSGRN03 DC A(0),AL2(03),AL1(GRN03L) @V200899 01559000
  1620. DC C'INVALID OPTION ''........''' @V200899 01560000
  1621. GRN03L EQU *-DMSGRN03-7 @V200899 01561000
  1622. SPACE 1 01562000
  1623. DMSGRN07 DC A(INPFSCB+8),AL2(07),AL1(GRN07L) @V200899 01563000
  1624. DC C'FILE ''..................'' IS NOT FIXED,' @V200899 01564000
  1625. DC C'80 CHAR. RECORDS' @V200899 01565000
  1626. GRN07L EQU *-DMSGRN07-7 @V200899 01566000
  1627. SPACE 1 01567000
  1628. DMSGRN78 DC A(INPUT),AL2(78),AL1(GRN78L) @V200899 01568000
  1629. DC C'INVALID CARD IN INPUT FILE''',80C'.' @V200899 01569000
  1630. GRN78L EQU *-DMSGRN78-7 @V200899 01570000
  1631. EJECT 01571000
  1632. *********************************************************************** 01572000
  1633. * 01573000
  1634. * FSCB'S 01574000
  1635. * 01575000
  1636. *********************************************************************** 01576000
  1637. SPACE 1 01577000
  1638. INPFSCB FSCB ' ',BUFFER=INPUT,BSIZE=80 @V200899 01578000
  1639. SPACE 1 01579000
  1640. * 01580000
  1641. * ASSEMBLER OUTPUT FSCB 01581000
  1642. * 01582000
  1643. OUTFSCB FSCB 'DUMMY DUMMY A1',BUFFER=OUTPUT,BSIZE=80 @V200899 01583000
  1644. SPACE 1 01584000
  1645. * 01585000
  1646. * EXEC PROC FILE FSCB 01586000
  1647. * 01587000
  1648. PROC FSCB 'STG2 EXEC A1',BUFFER=PROCBUF,BSIZE=80 @V200899 01588000
  1649. SPACE 1 01589000
  1650. * 01590000
  1651. * SKELTON FSCB 01591000
  1652. * 01592000
  1653. DUMMYFCB FSCB 'DUMMY ASSEMBLE A1',BUFFER=OUTPUT,BSIZE=80 @V200899 01593000
  1654. EJECT 01594000
  1655. *********************************************************************** 01595000
  1656. * 01596000
  1657. * JCL, ASSEMBLE AND LINKAGE-EDITOR KEYWORDS AND CONTROLS 01597000
  1658. * 01598000
  1659. *********************************************************************** 01599000
  1660. SLASHS DS 0CL2 USED TO REF. 2 SLASHS @V200899 01600000
  1661. SLASH DC C'/' USED TO REF. 1 SLASH @V200899 01601000
  1662. SLASHAST DS 0CL2 USED TO REF. /* @V200899 01602000
  1663. DC C'/' SECOND/FIRST/ @V200899 01603000
  1664. DC C'*' @V200899 01604000
  1665. SYSPCH DC C'SYSPUNCH' SYSPUNCH KEYWORD @V200899 01605000
  1666. SYSIN DC C'SYSIN' SYSIN KEYWORD @V200899 01606000
  1667. DSNAME DC C'DSNAME=' DSNAME= KEYWORD @V200899 01607000
  1668. DSNEQU DC C'DSN=' DSN= KEYWORD @V200899 01608000
  1669. SYSPRINT DC C'SYSPRINT' SYSPRINT KEYWORD @V200899 01609000
  1670. SYSUT DC C'SYSUT' SYSUTX KEYWORD @V200899 01610000
  1671. SYSLIB DC C'SYSLIB' SYSLIB KEYWORD @V200899 01611000
  1672. SYSLIN DC C'SYSLIN' SYSLIN KEYWORD @V200899 01612000
  1673. SYSLMOD DC C'SYSLMOD' SYSLMOD KEYWORD @V200899 01613000
  1674. ASM3705 DC C'ASM3705 ' ASM3705 OUTPUT FILE TYPE @V200899 01614000
  1675. TEXT DC C'TEXT ' LKED TEXT OUTPUT FILE TYPE @V200899 01615000
  1676. ADD DC C'ADD' PARAMETER FOR TXTLIB CMD @V200899 01616000
  1677. BLANKS DC C' ' EIGHT BLANKS @V200899 01617000
  1678. FFS DC X'FFFFFFFFFFFFFFFF' FF'S @V200899 01618000
  1679. SPACE 2 01619000
  1680. *********************************************************************** 01620000
  1681. * 01621000
  1682. * COMMON EQUATES 01622000
  1683. * 01623000
  1684. *********************************************************************** 01624000
  1685. DATERR EQU X'04' DATA ERROR RETURN DISPLACEMENT @V200899 01625000
  1686. IOERRC EQU X'08' I/O ERROR RETURN DISPLACEMENT @V200899 01626000
  1687. SPACE 2 01627000
  1688. *********************************************************************** 01628000
  1689. * 01629000
  1690. * OPTION PARMATER LIST 01630000
  1691. * 01631000
  1692. *********************************************************************** 01632000
  1693. OPTLIST DS 0CL9 OPTION KEYWORD & LIST @V200899 01633000
  1694. RUN DC C'RUN ',X'00' @V200899 01634000
  1695. NORUN DC C'NORUN ',X'00' @V200899 01635000
  1696. SAVE DC C'SAVE ',X'00' @V200899 01636000
  1697. NOSAVE DC C'NOSAVE ',X'00' @V200899 01637000
  1698. DC C') ',X'00' @V200899 01638000
  1699. OPTLEND EQU * END OF OPTION LIST @V200899 01639000
  1700. EJECT 01640000
  1701. *********************************************************************** 01641000
  1702. * 01642000
  1703. * RUN EXEC LIST 01643000
  1704. * 01644000
  1705. *********************************************************************** 01645000
  1706. EXECRUN DS 0D @V200899 01646000
  1707. DC CL8'ATTN' @V200899 01647000
  1708. DC CL4'LIFO' @V200899 01648000
  1709. DC AL1(16) LENGTH @V200899 01649000
  1710. DC AL3(EXECMD) @V200899 01650000
  1711. DC 8X'FF' @V200899 01651000
  1712. EXECMD DC CL8'EXEC' @V200899 01652000
  1713. RUNLIST DC D'0' EXEC PROC MACRO NAME @V200899 01653000
  1714. * 01654000
  1715. *********************************************************************** 01655000
  1716. * 01656000
  1717. * KEYWORDS WITH EDIT CONTROL 01657000
  1718. * 01658000
  1719. *********************************************************************** 01659000
  1720. LNGR DC A(OBJNM1) @VM08696 01660000
  1721. SHRTR DC A(OBJNM2) @VM08696 01661000
  1722. COMMA DC H'71',H'01',C',' COMMA KEYWORD @V200899 01662000
  1723. SPACE 1 01663000
  1724. DSN DC H'60',H'03',C'DSN' DSN KEYWORD @V200899 01664000
  1725. SPACE 1 @VA10299 01664300
  1726. SYS1 DC H'60',H'05',C'SYS1.' SYS1 KEYWORD @VA10299 01664600
  1727. SPACE 1 01665000
  1728. EXEC DC H'60',H'06',C' EXEC ' EXEC KEYWORD @V200899 01666000
  1729. SPACE 1 01667000
  1730. PGMIEWL DC H'60',H'09',C' PGM=IEWL' IEWL KEYWORD @V200899 01668000
  1731. SPACE 1 01669000
  1732. PGMIFKAM DC H'60',H'11',C' PGM=IFKASM' IFKASM KEYWORD @V200899 01670000
  1733. SPACE 1 01671000
  1734. PGMCWAXF DC H'60',H'11',C' PGM=CWAX00' CWAX00 KEYWORD @VA04257 01672000
  1735. SPACE 1 01673000
  1736. ENTRY DC H'60',H'07',C' ENTRY ' ENTRY KEYWORD @V200899 01674000
  1737. SPACE 1 01675000
  1738. PARM DC H'70',H'05',C'PARM=' LKED PARM= KEYWORD @V200899 01676000
  1739. SPACE 1 01677000
  1740. OBJ3705 DC H'70',H'12',C'SYS1.OBJ3705' SPEC. DSN @V200899 01678000
  1741. SPACE 01679000
  1742. OBJNM1 DC H'70',H'0',CL9' ' @VM08696 01680000
  1743. SPACE 01681000
  1744. OBJNM2 DC H'70',H'0',CL9' ' @VM08696 01682000
  1745. SPACE 01683000
  1746. INCLUDE DC H'70',H'8',CL8'INCLUDE' @VM08696 01684000
  1747. EJECT 01685000
  1748. *********************************************************************** 01686000
  1749. * 01687000
  1750. * ASSEMBLE AND LINKAGE-EDITOR CONTROL LISTS 01688000
  1751. * 01689000
  1752. *********************************************************************** 01690000
  1753. ASMMEM DC C' ' SYSPUNCH MEMBER NAME @V200899 01691000
  1754. * 01692000
  1755. STG1NAME DC C' ' INPUT NCP NAME @V200899 01693000
  1756. * 01694000
  1757. SYSPCHSV DC X'00',CL20' ' SAVE SYSPUNCH DSN AND LENGTH @V200899 01695000
  1758. NAMELNG DC H'0000' LENGTH OF NAME - NOT TO EXCEED 6 @V200899 01696000
  1759. IFKCNT DC P'00' ASM3705 CNT @V200899 01697000
  1760. IEWLCNT DC P'0' LKED CNT @V200899 01698000
  1761. DECONE DC P'1' DEC 1 USED TO BUMP CNT'S @V200899 01699000
  1762. EJECT 01700000
  1763. *********************************************************************** 01701000
  1764. * 01702000
  1765. * INPUT/OUTPUT AREAS 01703000
  1766. * 01704000
  1767. *********************************************************************** 01705000
  1768. INPUT DS 0CL80 OUTPUT AND INPUT THE SAME FIELD @V200899 01706000
  1769. OUTPUT DC CL80' ' INPUT FROM NCP SYSGEN FILE @V200899 01707000
  1770. * 01708000
  1771. TERMIN DC CL130' ' TERMINAL INPUT FIELD @V200899 01709000
  1772. * 01710000
  1773. EJECT 01711000
  1774. LTORG @V200899 01712000
  1775. EJECT 01713000
  1776. *********************************************************************** 01714000
  1777. * 01715000
  1778. * DSECT FOR INPUT SAVE AREA 01716000
  1779. * 01717000
  1780. *********************************************************************** 01718000
  1781. SAVEAREA DSECT @V200899 01719000
  1782. SAVEREGS DS 0F SAVE INPUT REG'S @V200899 01720000
  1783. SVREG14 DS F REG 14 SAVE @V200899 01721000
  1784. SVREG15 DS F REG 15 SAVE @V200899 01722000
  1785. SVREG0 DS F REG 0 SAVE @V200899 01723000
  1786. SVREG1 DS F REG 1 SAVE @V200899 01724000
  1787. DS 20F 20 FULLWORDS OF SAVE AREA @V200899 01725000
  1788. SPACE 2 01726000
  1789. ASMFSCB DS 0CL44 FSCB FOR ASSEMBLER OUTPUT FILE @V200899 01727000
  1790. DFSCB @V200899 01728000
  1791. SPACE 2 01729000
  1792. *********************************************************************** 01730000
  1793. * 01731000
  1794. * DSECT FOR EDIT INPUT KEYWORD & EDIT CONTROL 01732000
  1795. * 01733000
  1796. *********************************************************************** 01734000
  1797. DEDIT DSECT @V200899 01735000
  1798. EDITMAX DS H MAX. NO. OF CHAR TO SCAN IN INPUT@V200899 01736000
  1799. EDITFLDL DS H LNTH OF KEYWORD FIELD @V200899 01737000
  1800. EDITFLD DS C KEYWORD @V200899 01738000
  1801. SPACE 2 01739000
  1802. *********************************************************************** 01740000
  1803. * 01741000
  1804. * DSECT FOR INPUT PARAMETER LIST 01742000
  1805. * 01743000
  1806. *********************************************************************** 01744000
  1807. PARMLIST DSECT @V200899 01745000
  1808. DS 0D ALIGNMENT @V200899 01746000
  1809. INFENTRY DS D ENTRY ADDR @V200899 01747000
  1810. INFNAME DS D FILE NAME @V200899 01748000
  1811. INFTYPE DS D FILE TYPE @V200899 01749000
  1812. INFMODE DS D FILE MODE @V200899 01750000
  1813. INOPT DS D INPUT OPTION @V200899 01751000
  1814. END DMSGRN 01752000