GRN TITLE 'DMSGRN (CMS) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE SERIALIZATION OF INPUT @V200899 00002000 MACRO @V200899 00003000 DFSCB , @V200899 00004000 DFSCB DSECT @V200899 00005000 DS 0F ALIGNMENT @V200899 00006000 FSCBFNCT DS CL8 CONTROL FIELD FOR I/O FUNCTION @V200899 00007000 FSCBID DS 0CL18 FILE IDENTIFIER @V200899 00008000 FSCBFN DS CL8 FILE NAME @V200899 00009000 FSCBFT DS CL8 FILE TYPE @V200899 00010000 FSCBFM DS CL2 FILE MODE @V200899 00011000 FSCBRECN DS H RELATIVE REC. NO. @V200899 00012000 FSCBBUFA DS A BUFFER ADDRESS @V200899 00013000 FSCBSIZE DS F BUFFER SIZE @V200899 00014000 FSCBFRMT DS CL2 FILE FORMAT @V200899 00015000 FSCBNOR DS 0H NO. OF REC'S TO READ @V200899 00016000 FSCBLIOB DS A @V200899 00017000 MEND @V200899 00018000 EJECT 00019000 *. 00020000 * 00021000 * MODULE NAME - DMSGRN 00022000 * 00023000 * FUNCTION - TO EDIT STAGE1 OUTPUT (STAGE2 INPUT), 00024000 * BUILD 3705 ASSEMBLER FILES, LKED TEXT 00025000 * FILES AND AN EXEC MACRO FILE. 00026000 * 00027000 * ATTRIBUTES - RUNS IN A VIRTUAL MACHINE UNDER 00028000 * CMS CONTROL RUNS IN THE CMS @VA01926 00029000 * USER AREA - NON-REENTRANT, NON-REUSABLE @VA01926 00030000 * 00031000 * ENTRY POINTS - DMSGRN 00032000 * 00033000 * ENTRY CONDITIONS - GPR 1 - ADDRESS OF INPUT PARAMETER 00034000 * LIST. 00035000 * GPR 13 - ADDRESS OF SAVE AREA. 00036000 * GPR 14 - RETURN ADDRESS. 00037000 * GPR 15 - CSECT BASE ADDRESS. 00038000 * 00039000 * EXIT CONDITIONS - GPR 0 - GPR 11 NOT PREDICTABLE. 00040000 * GPR 12 - CSECT BASE ADDRESS. 00041000 * GPR 13 - ADDRESS OF INPUT SAVE AREA. 00042000 * GPR 14 - RETURN ADDRESS. 00043000 * GPR 15 - RETURN CODE NON-ZERO 00044000 * INDICATES AN ERROR OCCURED. 00045000 * CALLS TO OTHER - NONE. 00046000 * ROUTINES 00047000 * 00048000 * EXTERNAL REFERENCES - NONE. 00049000 * 00050000 * TABLES & WORK AREAS - 00051000 * 00052000 * DSECT FOR INPUT SAVE AREA 00053000 * 00054000 * SAVEAREA DSECT 00055000 * SAVEREGS DS 0F SAVE INPUT REG'S 00056000 * SVREG14 DS F REG 14 SAVE 00057000 * SVREG15 DS F REG 15 SAVE 00058000 * SVREG0 DS F REG 0 SAVE 00059000 * SVREG1 DS F REG 1 SAVE 00060000 * 00061000 * OPTION PARAMETER LIST 00062000 * 00063000 * OPTLIST DS 0CL9 OPTION KEYWORD & SWITCH 00064000 * RUN DC C'RUN ',X'00' 00065000 * NORUN DC C'NORUN ',X'00' 00066000 * SAVE DC C'SAVE ',X'00' 00067000 * NOSAVE DC C'NOSAVE ',X'00' 00068000 * DC C') ',X'00' 00069000 * DC X'FF' END OF OPTION LIST 00070000 * 00071000 * DSECT FOR FILE SYSTEM CONTROL BLOCK (FSCB) 00072000 * 00073000 * DFSCB DSECT 00074000 * DS 0F ALIGNMENT 00075000 * FSCBFNCT DS CL8 CONTROL FIELD FOR I/O FUNCTION 00076000 * FSCBID DS 0CL18 FILE IDENTIFIER 00077000 * FSCBFN DS CL8 FILE NAME 00078000 * FSCBFT DS CL8 FILE TYPE 00079000 * FSCBFM DS CL2 FILE MODE 00080000 * FSCBRECN DS H RELATIVE REC. NO. 00081000 * FSCBBUFA DS A BUFFER ADDRESS 00082000 * FSCBSIZE DS F BUFFER SIZE 00083000 * FSCBFRMT DS CL2 FILE FORMAT 00084000 * FSCBNOR DS 0H NO. OF REC'S TO READ 00085000 * FSCBLIOB DS A 00086000 * 00087000 * FSCB'S 00088000 * 00089000 * INPFSCB FSCB ' ',BUFFER=INPUT,BSIZE=80 00090000 * 00091000 * ASSEMBLER OUTPUT FSCB 00092000 * 00093000 * OUTFSCB FSCB 'DUMMY DUMMY A1',BUFFER=OUTPUT,BSIZE=80 00094000 * 00095000 * EXEC PROC FILE FSCB 00096000 * 00097000 * PROC FSCB 'STG2 EXEC A1',BUFFER=PROCBUF,BSIZE=80 00098000 * 00099000 * SKELTON FSCB 00100000 * 00101000 * DUMMYFCB FSCB 'DUMMY ASSEMBLE A1',BUFFER=OUTPUT,BSIZE=80 00102000 * 00103000 * REGISTER USAGE - GPR 0 - NOT USED. 00104000 * GPR 1 - WORK REGISTER. 00105000 * GPR 2 - WORK REGISTER. 00106000 * GPR 3 - WORK REGISTER. 00107000 * GPR 4 - WORK REGISTER. 00108000 * GPR 5 - WORK REGISTER 00109000 * GPR 6 - WORK REGISTER. 00110000 * GPR 7 - WORK REGISTER. 00111000 * GPR 8 - WORK REGISTER. 00112000 * GPR 9 - WORK REGISTER. 00113000 * GPR 10 - WORK REGISTER. 00114000 * GPR 11 - SECONDARY BASE REGISTER. 00115000 * GPR 12 - CSECT BASE REGISTER. 00116000 * GPR 13 - BASE ADDRESS OF SAVE AREA. 00117000 * GPR 14 - SUBROUTINE LINKAGE 00118000 * REGISTER. 00119000 * GPR 15 - RETURN CODE REGISTER. 00120000 * 00121000 * NOTES - THIS MODULE IS NOT RE-ENTERENT 00122000 * OR RE-USABLE. 00123000 EJECT 00124000 * COMMAND LINE FORMAT - 00125000 * 00126000 * +---------+-----------------------------------------------+ 00127000 * | | ** ** | 00128000 * | GEN3705 | FNAME FTYPE * FMODE (RUN/NORUN SAVE/NOSAVE) * | 00129000 * | | ** ** | 00130000 * +---------+-----------------------------------------------+ 00131000 * 00132000 * OPERATION - FOLLOWING IS A DISCRIPTION OF ROUTINES, 00133000 * SUB-ROUTINES AND GENERAL SUB-ROUTINES. 00134000 * 00135000 * 00136000 * GENERAL COMMENTS: 00137000 * 00138000 * I/O AND DATA ERRORS WILL CAUSE PROCESSING TO TERMINATE, 00139000 * APPROPRIATE ERROR MESSAGES 00140000 * TO BE GENERATED AND PROCESSING TO TERMINATE. 00141000 * A NORMAL RETURN CODE IS HEX '0000. 00142000 * 00143000 * 00144000 * ROUTINES: 00145000 * 00146000 * INITIALIZATION - 00147000 * 00148000 * REGISTER 1 POINTS TO A PARAMETER CONTAINING THE INPUT FILE 00149000 * ID (NAME AND TYPE) AND OPTIONALLY MODE AND GEN3705 OPTION (SAVE 00150000 * NOSAVE RUN NORUN) 00151000 * 00152000 * PRIMEDIT - 00153000 * 00154000 * THE INPUT FILE IS READ USING THE INPUT FILE READ GENERAL 00155000 * SUB-ROUTINE (FSCBRD) AND EDITED FOR THE EXEC JCL CARD. ALL 00156000 * CARDS READ IN THE PRIMEDIT ROUTINE MUST HAVE A // OR /* 00157000 * IN COLUMNS 1 AND 2 OR AN * IN COLUMN 1. ALL // CARDS ARE 00158000 * EDITED USING THE EDIT INPUT GENERAL SUB-ROUTINE (EDITIN) 00159000 * FOR THE KEYWORD EXEC. IF EXEC IS NOT FOUND THE NEXT CARD IS 00160000 * READ AND EDITED UNTIL AN EXEC IS FOUND. 00161000 * 00162000 * ONCE THE // EXEC JCL CARD IS FOUND THE NEXT KEYWORD IN THE 00163000 * CARD IS EDITED PGM=. IF THE KEYWORD IS NOT FOUND IT IS A DATA 00164000 * ERROR. THE PROGRAM NAME IFKASM, CWAX00 OR IEWL MUST FOLLOW 00165000 * THE KEYWORD PRG= ON THE EXEC CARD OR IT IS A DATA ERROR. 00166000 * 00167000 * THE PROGRAM NAME IS USED TO PASS CONTROL TO EITHER THE IFKASM 00168000 * OR IEWL SUB-ROUTINES. 00169000 * THREE POSSIBLE RETURNS FROM THESE 00170000 * SUB-ROUTINES; NORMAL HEX '00' DISPLACEMENT, DATA ERROR HEX 00171000 * '04' DISPLACEMENT OR I/O ERROR HEX '08' DISPLACEMENT FROM THE 00172000 * RETURN ADDRESS. 00173000 * 00174000 * UPON A NORMAL RETURN FROM THE SUB-ROUTINES PRIMEDIT CONTINUES 00175000 * TO EDIT FOR THE NEXT // EXEC PGM= JCL STATEMENT UNTIL THE 00176000 * END-OF-FILE (EOF) OCCURES. 00177000 * 00178000 * WHEN AN ERROR RETURN IS USED BY EITHER IFKASM OR IEWL PROCESSING 00179000 * IS TERMINATED. 00180000 * 00181000 * WHEN PROCESSING TERMINATES, EITHER NORMALLY OR BY AN ERROR, 00182000 * THE EXEC MACRO FILE IS CLOSED BY THE PROCEDURE END GENERAL 00183000 * SUB-ROUTINE (PROCEND). 00184000 * 00185000 * SUB-ROUTINES: 00186000 * 00187000 * IFKASM - 00188000 * 00189000 * THE JCL FOLLOWING THE EXEC JCL CARD IS READ AND EDITED FOR 00190000 * A //SYSPUNCH AND //SYSIN JCL DD CARD. 00191000 * 00192000 * THE SYSPUNCH DD STATEMENT MUST BE FOUND BEFORE THE SYSIN DD 00193000 * STATEMENT, IF NOT IT WILL BE CONCIDERED A DATA ERROR. OTHERWISE, 00194000 * THE MEMBER NAME OF THE SYSPUNCH DSNAME IS USED FOR THE TXTLIB 00195000 * FILE. 00196000 * 00197000 * THE SYSIN DD STATEMENTS INDICATES THE BEGINING OF THE ASSEMBLER 00198000 * INPUT. EVERY RECORD FOLLOWING THE SYSIN STATEMENT IS TESTED FOR 00199000 * A // OR /* IN COLUMNS 1 AND 2. IF A // OR /* IS NOT FOUND IN 00200000 * THE RECORD THE RECORD IS WRITTEN TO THE ASSEMBLE FILE. 00201000 * WHEN A // OR /* IS 00202000 * FOUND IN COLUMNS 1 AND 2 OR IF AN EOF OCCURES DURING THE READING 00203000 * OF THE INPUT FILE THE ASSEMBLE FILE IS CLOSED USING THE FSCB CLOSE 00204000 * GENERAL SUB-ROUTINE (FSCBCLOS). THE ASMSTAK SUB-ROUTINE IS GIVEN 00205000 * CONTROL TO WRITE THE ASM3705 COMMANDS TO THE EXEC MACRO FILE. 00206000 * 00207000 * INPUT RECORDS ARE READ BY THE FSCBRD AND WRITTEN BY FSCB WRITE 00208000 * GENERAL SUB-ROUTINE (FSCBWT). 00209000 * 00210000 * IEWL - 00211000 * 00212000 * THE JCL FOLLOWING THE EXEC STATEMENT IS READ AND EDITED FOR A 00213000 * //SYSLIN DD CARD. THE RECORDS BETWEEN THE EXEC AND THE SYSLIN CARD 00214000 * MUST CONTAIN A // IN COLUMNS 1 AND 2 OR AN * IN COLUMN 1, IF NOT 00215000 * THIS IS CONCIDERED A DATA ERROR. ALSO, IF AN EOF OCCURES BEFORE THE 00216000 * SYSLIN THIS IS A DATA ERROR. THE DDNAMES OF DATASETS USED 00217000 * BY THE LINK EDIT STEPS ARE EDITED OUT AND PLACED IN THE 00218000 * APPROPRIATE FILEDEF COMMANDS TO BE EXECUTED. 00219000 * 00220000 * WHEN THE //SYSLIN IS FOUND THE SYSLIN SUB-ROUTINE (IEWLSIN) 00221000 * IS GIVEN CONTROL TO PROCESS THE LINKAGE EDITOR INPUT. 00222000 * 00223000 * THREE POSSIBLE RETURNS FROM IEWLSIN ARE; NORMAL, DATA ERROR 00224000 * AND I/O ERROR. 00225000 * 00226000 * THE LKDSTACK SUB-ROUTINE IS GIVEN CONTROL TO WRITE 00227000 * THE LINKAGE EDITOR COMMANDS TO THE EXEC MACRO FILE. 00228000 * 00229000 * IEWLSIN - 00230000 * 00231000 * THE INPUT AFTER THE SYSLIN CARD IS CONCIDERED LINKAGE EDITOR 00232000 * INPUT CONTROL STATEMENTS UNTIL EITHER A // OR /* IS FOUND IN COLUMN 00233000 * 1 AND 2 OR AN EOF OCCURES IN THE INPUT FILE. EACH RECORD IS 00234000 * WRITTEN TO THE NCPXYZLN TEXT FILE VIA THE FSCBWT SUB-ROUTINE. 00235000 * 00236000 * THE SYSLIN INPUT IS EDITED BY THE EDITIN FOR THE KEYWORD 00237000 * ENTRY. WHEN THE EDITOR FINDS THE KEYWORD, 00238000 * CONTROL IS PASSED TO THE SUB-ROUTINE IEWLENT. 00239000 * THREE POSSIBLE RETURNS FROM IEWLENT ARE; NORMAL, DATA ERROR 00240000 * OR I/O ERROR. 00241000 * 00242000 * IEWLENT - 00243000 * 00244000 * THE SYMBOLIC ENTRY NAME IS FOUND AND PLACED IN THE CI3705 COMMAND 00245000 * ENTRYNAM FIELD. 00246000 * 00247000 * GENERAL SUB-ROUTINES: 00248000 * 00249000 * ASMSTAK - 00250000 * 00251000 * THIS ROUTINE BUILDS AND CAUSES THE REQUIRED ASSEMBLER COMMANDS 00252000 * TO BE STACKED IN THE STG2 EXEC MACRO FILE TO PERFORM THE 00253000 * 370X ASSEMBLE. 00254000 * 00255000 * LKDSTACK - 00256000 * 00257000 * THIS ROUTINE BUILDS AND CAUSES THE LKED COMMANDS TO BE STACKED 00258000 * IN THE STG2 EXEC MACRO FILE. 00259000 * 00260000 * CLOSTACK - 00261000 * THIS ROUTINE BUILDS AND CAUSE THE SAVE COMMAND TO BE BUILT IN 00262000 * THE STG2 EXEC MACRO FILE. 00263000 * 00264000 * EDITIN - 00265000 * REGISTER 2 CONTAINS A POINTER TO THE KEYWORD AND CONTROLS FOR 00266000 * EDITING THE INPUT FIELD. 00267000 * 00268000 * WHEN THE KEYWORD IS FOUND THE ADDRESS IS RETURNED IN REGISTER 3 00269000 * AND CONTROL IS RETURN EMMIDIATELY AFTER THE ENTRY BRANCH AND 00270000 * LINK. 00271000 * 00272000 * IF THE KEYWORD IS NOT FOUND THE RETURN IS 4 BYTES BEYOND THE BRANCH 00273000 * AND LINK. 00274000 * 00275000 * DSNEDIT/MEMEDIT - 00276000 * 00277000 * REGISTER 2 CONTAINS THE ADDRESS OF THE FIELD TO RECIEVE 00278000 * THE DSNAME-MEMBER-NAME. REGISTER 3 THE START OF THE DATA SET NAME. 00279000 * THE ROUTINE SCANS FOR AN OPEN PARENTHESIS, INDICATING THE START OF 00280000 * THE MEMBER NAME. THE NAME IS THEN MOVE INTO THE FIELD POINTED TO 00281000 * BY REGISTER 2. IF THE OPEN OR CLOSE PARENTHESIS ARE MISSING THE 00282000 * ERROR RETURN IS USED. 00283000 * 00284000 * FSCBRD - 00285000 * 00286000 * REGISTER 2 CONTAINS THE ADDRESS OF THE FSCB TO BE USED FOR 00287000 * THE FSREAD MACRO. IF AN END-OF-FILE OCCURES DUE TO THE READ THE EOF 00288000 * SWITCH IN SWINFILE IS TURN 'ON' SO THE FSREAD WILL NOT BE 00289000 * ALLOWED TO OCCUR AGAIN. 00290000 * 00291000 * AN I/O ERROR WILL CAUSE THE ERROR RETURN TO BE TAKEN. 00292000 * 00293000 * RETURN POINTS: 00294000 * 00295000 * R14 + 0 NORMAL RETURN 00296000 * R14 + 4 ERROR RETURN 00297000 * R14 + 8 END-OF-FILE 00298000 * 00299000 * FSCBWT - 00300000 * 00301000 * 00302000 * THE OLD SWITCH IN THE SWFILE IS TEST TO DETERMINE IF THE FSCB HAS 00303000 * BEEN OPEN YET. IF NOT THE DUMMY FSCB IS MOVED IN OVER THE OUTFSCB 00304000 * TO INITIALIZE IT. THE FILE TYPE IS CHECKED TO SEE IF THE FILE IS THE 00305000 * LINKAGE EDITOD INPUT TEXT OR THE ASM3705 ASM3705 FILE. 00306000 * THE NCP NAME (OR THE FIRST 6 CHARACTERS) ARE MOVE TI THE FSCB FILE 00307000 * NAME FIELD. THE NUMBERING SEQUENCE, LN OR NN, IS INSTERED 00308000 * AFTER THE NCP NAME. THE FSSTATE MACRO IS USED TO TEST 00309000 * THE FILE STATUS, IF IT EXISTS IT IS ERASED AND THE OLD 00310000 * 'SWITCH' IS TURN ON. 00311000 * 00312000 * THE FSWRITE MACRO IS USED TO WRITE THE RECORDS TOM THE OUTPUT 00313000 * FILE. 00314000 * 00315000 * ERRORS DURING THE WRITE WILL CAUSE THE ERROR RETURN TO BE USED. 00316000 * 00317000 * FSCBCLOS - 00318000 * 00319000 * THIS ROUTINE CLOSES THE OUTFSCB IF IT IS OPEN. THE OLD SWITCH 00320000 * IN THE 'SWFILE' IS TURN 'OFF' AFTER THE FILE IS CLOSED. 00321000 * 00322000 * ERRORS ARE IGNORED. 00323000 * 00324000 * PROCWT - 00325000 * 00326000 * THE 'PROCSW1' IS TEST TO SEE IF THE EXEC MACRO FILE HAS ALREADY BEEN 00327000 * INITIALIZED. IF NOT INITIALIZED THE FILE IS ERASED BY THE FSERASE 00328000 * MACRO AND THE PROCOPEN SWITCH IN 'PROCSW1' IS TURN 'ON'. 00329000 * 00330000 * THE OUTPUT FIELD, PROCBUF, IS BLANKED OUT AND THE FILED POINTED 00331000 * TO BY REGISER 2 IS MOVED INTO PROCBUF. THE FIRST BYTE OF THE REGISTER 00332000 * 2 FIELD CONTAINS THE LENGTH OF TEXT TO BE MOVED. 00333000 * THE DATA IS THEN WRITTEN TO THE NCP NAME EXEC MACRO FILE VIA THE 00334000 * FSWRITE MACRO. 00335000 * 00336000 * ERRORS DURING THE WRITE WILL CAUSE THE ERROR RETURN TO BE USED. 00337000 * 00338000 * RETURN POINTS: 00339000 * 00340000 * R14 + 0 NORMAL RETURN 00341000 * R14 + 4 ERROR RETURN 00342000 * 00343000 * PROCEND - 00344000 * 00345000 * IF THE EXEC MACRO FILE IS OPEN (PROCOPEN SWITCH IN PROCSW1 'ON) 00346000 * THE FSCB IS CLOSED BY ISSUING THE FSCLOSE MACRO. 00347000 * 00348000 * ERRORS DURING THE CLOSE ARE IGNORED. 00349000 * 00350000 * GENMSG - 00351000 * 00352000 * REGISTER 2 CONTAINS A POINTER TO THE MESSAGE TO BE RETURNED 00353000 * TO THE USER. THERE ARE CONTROLS IMBEDDED IN THE MESSAGE TEXT. 00354000 * 00355000 * ERROR MESSAGES 00356000 * 00357000 * DMSGRN054E INCOMPLETE FILE ID SPECIFIED 00358000 * RETURN CODE - 24 00359000 * DMSGRN048E INVALID MODE '........' 00360000 * RETURN CODE - 24 00361000 * DMSGRN002E FILE '....................' NOT FOUND 00362000 * RETURN CODE - 28 00363000 * DMSGRN003E INVALID OPTION '........' 00364000 * RETURN CODE - 24 00365000 * DMSGRN007E FILE '....................' IS NOT FIXED, 00366000 * 80 CHAR. RECORDS 00367000 * RETURN CODE - REFERENCE FSREAD 00368000 * DMSGRN078E INVALID CARD IN INPUT FILE '.... ....' 00369000 * RETURN CODE - 24 00370000 * 00371000 * RUN EXEC LIST 00372000 * 00373000 * EXECRUN DS 0D 00374000 * DC CL8'ATTN' 00375000 * DC CL4'LIFO' 00376000 * DC AL1(16) LENGTH 00377000 * DC AL3(EXECMD) BUFFER ADDR 00378000 * 00379000 * EXECMD DC CL8'EXEC' 00380000 * RUNLIST DC D'0' EXEC PROC MACRO NAME 00381000 * 00382000 * DSECT FOR EDIT INPUT KEYWORD &KEYWORD EDIT CONTROL 00383000 * 00384000 * DEDIT DSECT 00385000 * EDITMAX DS H MAX. NO. OF CHAR TO SCAN IN INPUT 00386000 * EDITFLDL DS H LNTH OF KEYWORD FIELD 00387000 * EDITFLD DS C KEYWORD 00388000 * 00389000 * DSECT FOR INPUT PARAMETER LIST 00390000 * 00391000 * PARMLIST DSECT 00392000 * DS 0D ALIGNMENT 00393000 * INFENTRY DS D ENTRY ADDR 00394000 * INFNAME DS D FILE NAME 00395000 * INFTYPE DS D FILE TYPE 00396000 * INFMODE DS D FILE MODE 00397000 * INOPT DS D INPUT OPTION 00398000 *. 00399000 EJECT 00400000 DMSGRN CSECT @V200899 00401000 REGEQU @V200899 00402000 USING *,R12 @V200899 00403000 USING *+4096,R11 @V200899 00404000 LA R11,2048(R15) @V200899 00405000 LA R11,2048(R11) EST. SECOND BASE REG. @V200899 00406000 USING SAVEAREA,R13 @V200899 00407000 LR R12,R15 SETUP BASE REG. @V200899 00408000 SR R15,R15 ZERO RETURN CODE @V200899 00409000 STM R14,R1,SAVEREGS SAVE INPUT REG'S @V200899 00410000 B START BR AROUND SAVE AREA @V200899 00411000 DC C'DMSGRN ' IDENTIFIER @V200899 00412000 START DS 0H @V200899 00413000 SPACE 3 00414000 *********************************************************************** 00415000 * 00416000 * DETERMINE FILE ID 00417000 * 00418000 *********************************************************************** 00419000 LA R2,INPFSCB LOAD ADD OF INPUT FSCB @V200899 00420000 USING DFSCB,R2 @V200899 00421000 USING PARMLIST,R1 @V200899 00422000 CLC INFNAME,FFS HAS NAME BEEN DEFINED @V200899 00423000 BE IDERROR BR IF NO - ERROR @V200899 00424000 CLI INFNAME,C'(' STARTING OPTIONS? @VA04435 00425000 BE IDERROR YES, FORGOT FILE ID @VA04435 00426000 MVC FSCBFN,INFNAME MOVE FILE NAME TO INPUT FSCB @V200899 00427000 MVC RUNLIST,INFNAME MOVE INPUT FILE NAME TO EXEC @V200899 00428000 * RUN LST 00429000 MVC STG1NAME(6),INFNAME SAVE FIRST 6 CHAR. OF @V200899 00430000 * INPUT FILE 00431000 * NAME FOR THE OUTPUT ASSEMBLER AND 00432000 * LKED FILE NAMES 00433000 SR R4,R4 @V200899 00434000 NMLNGLOP DS 0H @V200899 00435000 LA R4,1(R4) ADD 1 TO STG1 NAME @V200899 00436000 LA R3,STG1NAME(R4) ADDR OF NXT CHAR. IN NAME @V200899 00437000 CLI 0(R3),C' ' IS THIS END OF NAME @V200899 00438000 BNE NMLNGLOP BR IF NO @V200899 00439000 STH R4,NAMELNG SAVE LNGTH OF NAME @V200899 00440000 CLC INFTYPE,FFS HAS TYPE BEEN DEFINED @V200899 00441000 BE IDERROR BR IF NO - ERROR @V200899 00442000 CLI INFTYPE,C'(' STARTING OPTIONS? @VA04435 00443000 BE IDERROR YES, FORGOT FILE TYPE @VA04435 00444000 MVC FSCBFT,INFTYPE MOVE FILE TYPE TO INPUT FSCB @V200899 00445000 LA R4,INFMODE SET POINTER TO POSSIBLE STRT OF @V200899 00446000 * OPT 00447000 CLC INFMODE,FFS IS THIS THE END OF USER INPUT @V200899 00448000 BE OPTEND BR IF YES @V200899 00449000 SR R5,R5 SET OPTION CNT TO 0 @V200899 00450000 CLI INFMODE,C'(' IS THIS THE START OF THE OPTIONS @V200899 00451000 BE OPTIONS1 BR IF YES @V200899 00452000 MVC FSCBFM,INFMODE MOVE FILE MODE TO INPUT FSCB @V200899 00453000 CLI INFMODE+2,C' ' IS 3-RD CHARACTER A BLANK @V200899 00454000 BNE MODERROR BR IF NO - ERROR @V200899 00455000 LA R4,INOPT SET POINTER TO STRT OF OPTIONS @V200899 00456000 DROP R1,R2 @V200899 00457000 CLI 0(R4),C'(' IS THIS THE STRT OF THE OPTIONS @V200899 00458000 BE OPTIONS1 BR IF YES @V200899 00459000 CLC FFS,0(R4) IS THIS THE END OF OPTION LIST @V200899 00460000 BE OPTEND BR IF YES @V200899 00461000 B OPTERROR @V200899 00462000 EJECT 00463000 *********************************************************************** 00464000 * 00465000 * DETERMINE USER INPUT OPTIONS 00466000 * 00467000 *********************************************************************** 00468000 OPTIONS DS 0H @V200899 00469000 CLI 8(R4),C')' IS THIS THE END OF OPTIONS @V200899 00470000 BE OPTEND BR IF YES @V200899 00471000 CLC FFS,8(R4) END OF OPTIONS @V200899 00472000 BE OPTEND BR IF YES @V200899 00473000 OPTIONS1 DS 0H @V200899 00474000 LA R3,OPTLIST LOAD ADDR OF OPTION LIST @V200899 00475000 LA R4,8(R4) MOVE PNTR TO NXT OPTION @V200899 00476000 LA R5,1(R5) SET OPTION CNT PLUS 1 @V200899 00477000 LA R6,L'OPTLIST LNTH OF OPTION LIST ENTRIES @V200899 00478000 LA R7,OPTLEND ENDING ADDR OF OPTION LIST @V200899 00479000 OPTLOOP DS 0H @V200899 00480000 CLC 0(8,R3),0(R4) VALID OPTION FOUND @V200899 00481000 BE OPTFND BR IF YES @V200899 00482000 BXLE R3,R6,OPTLOOP LOOP IF NOT END OF OPTION LIST @V200899 00483000 B OPTERROR @V200899 00484000 OPTFND DS 0H @V200899 00485000 STC R5,8(R3) SET OPTION 'ON' AND INCLUDE @V200899 00486000 * SEQUENCE 00487000 B OPTIONS @V200899 00488000 IDERROR DS 0H @V200899 00489000 LA R15,24 ID ERROR RETURN CODE @V200899 00490000 ST R15,SVREG15 SAVE RETURN CODE @V200899 00491000 LA R2,DMSGRN54 ADDR OF ID ERROR MSG @V200899 00492000 B PRMERR @V200899 00493000 MODERROR DS 0H @V200899 00494000 LA R2,DMSGRN48 LOAD ADDR OF INVALID MODE MSG @V200899 00495000 B OPTERR01 @V200899 00496000 OPTERROR DS 0H @V200899 00497000 LA R2,DMSGRN03 ADDR OF INVALID OPTION MSG @V200899 00498000 OPTERR01 DS 0H @V200899 00499000 LA R15,24 INVALID OPTION RETURN CODE @V200899 00500000 ST R15,SVREG15 SAVE RETURN CODE @V200899 00501000 ST R4,0(R2) STORE VARIABLE ADDR @V200899 00502000 PRMERR DS 0H @V200899 00503000 BAL R14,GENMSG @V200899 00504000 B RETURN1 @V200899 00505000 OPTEND DS 0H @V200899 00506000 FSSTATE FSCB=INPFSCB,ERROR=OPENERR @V200899 00507000 PRIMEDIT DS 0H @V200899 00508000 LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 00509000 BAL R14,FSCBRD READ FSCB @V200899 00510000 B FINDEXEC NORMAL RETURN @V200899 00511000 B INPEND EOF @V200899 00512000 B RETURN READ ERROR @V200899 00513000 * 00514000 FINDEXEC DS 0H @V200899 00515000 CLC SLASHAST,INPUT IS INPUT = /* @V200899 00516000 BE PRIMEDIT BR IF YES @V200899 00517000 CLI INPUT,C'*' IS INPUT A COMMENT @V200899 00518000 BE PRIMEDIT BR IF YES @V200899 00519000 CLC SLASHS,INPUT IS INPUT JCL @V200899 00520000 BNE INPERROR BR IF NO - ERROR @V200899 00521000 LA R2,EXEC ADDR OF EXEC KEYWORD @V200899 00522000 BAL R14,EDITIN KEYWORD EDIT @V200899 00523000 B FINDASM FOUND @V200899 00524000 B PRIMEDIT NOT FOUND @V200899 00525000 FINDASM DS 0H @V200899 00526000 LA R2,PGMIFKAM ADDR OF PGM=IFKASM KEYWORD @V200899 00527000 BAL R14,EDITIN KEYWORD EDIT @V200899 00528000 B ASMFND FOUND @VA04257 00529000 LA R2,PGMCWAXF ADDR OF PGM=CWAX00 KEYWORD @VA04257 00530000 BAL R14,EDITIN KEYWORD EDIT @VA04257 00531000 B ASMFND FOUND @VA04257 00532000 B FINDIEWL NOT FOUND @VA04257 00533000 ASMFND DS 0H @VA04257 00534000 BAL R14,IFKASM EDIT ASSEMBLER INPUT @V200899 00535000 B FINDEXEC NORMAL RETURN @V200899 00536000 B INPERROR DATA ERROR DURING ASM EDIT @V200899 00537000 B RETURN I/O ERROR DURING ASM EDIT @V200899 00538000 FINDIEWL DS 0H @V200899 00539000 LA R2,PGMIEWL ADDR OF PGM=IEWL KEYWORD @V200899 00540000 BAL R14,EDITIN KEYWORD EDIT @V200899 00541000 B IEWLFND FOUND @V200899 00542000 B INPERROR NOT FOUND @V200899 00543000 IEWLFND DS 0H @V200899 00544000 BAL R14,IEWL EDIT LINKAGE-EDIT INPUT @V200899 00545000 B FINDEXEC NORMAL RETURN @V200899 00546000 B INPERROR DATA ERROR DURING IEWL EDIT @V200899 00547000 B RETURN I/O ERROR DURING IEWL EDIT @V200899 00548000 EJECT 00549000 *********************************************************************** 00550000 * * 00551000 * HERE IF END OF INPUT DUE TO EOF OR ERROR * 00552000 * * 00553000 *********************************************************************** 00554000 OPENERR DS 0H @V200899 00555000 ST R15,SVREG15 SAVE THE RETURN CODE @V200899 00556000 CH R15,INVMODE IS MODE INVALID @V200899 00557000 BE RETURN1 YES - 'STATE' ALREADY GAVE MSG @V200899 00558000 LA R2,DMSGRN02 ADDR OF FILE NOT FOUND MSG @V200899 00559000 OPENERR9 DS 0H @V200899 00560000 BAL R14,GENMSG @V200899 00561000 B RETURN1 @V200899 00562000 INPEND DS 0H @V200899 00563000 TM PROCSW1,NEWJCL IF NEWJCL WE DO NOT NEED @VA10299 00563300 BO PROCEND2 ..... THE ERASE CMD @VA10299 00563600 LA R2,ERASECMD ADDR OF NCPTEMP FILE ERASE @V200899 00564000 * COMMAND 00565000 BAL R14,PROCWT WRT CMD TO EXEC MACRO FILE @V200899 00566000 B PROCEND2 NORMAL RETURN @V200899 00567000 NOP 0(0) ERROR RETURN-IGNORE IT @V200899 00568000 PROCEND2 DS 0H @V200899 00569000 CLC SAVE+8(1),NOSAVE+8 TEST LAST OPTION SAVE/NOSAVE @V200899 00570000 BNH PROCEND1 BR IF NOSAVE LAST OR DEFAULT @V200899 00571000 BAL R14,CLOSTACK WRITE SAVENCP CMD TO EXEC PROC @V200899 00572000 B PROCEND1 NORMAL RETURN @V200899 00573000 B RETURN1 ERROR RETURN @V200899 00574000 PROCEND1 DS 0H @V200899 00575000 BAL R14,PROCEND CLOSE STG2 EXEC PROC @V200899 00576000 CLC RUN+8(1),NORUN+8 WAS RUN OPTION REQUESTED @V200899 00577000 BNH RETURN1 BR IF DEFAULT OR NORUN @V200899 00578000 LA R1,EXECRUN ADDR OF EXEC MACRO CMD @V200899 00579000 SVC 202 EXECUTE EXEC MACRO @V200899 00580000 DC AL4(*+4) IGNORE ERRORS @V200899 00581000 ST R15,SVREG15 SAVE RETURN CODE @V200899 00582000 B RETURN1 @V200899 00583000 INPERROR DS 0H @V200899 00584000 LA R15,24 LOAD RETURN CODE @V200899 00585000 ST R15,SVREG15 STORE RETURN CODE @V200899 00586000 LA R2,DMSGRN78 ADDR OF DATA ERROR MSG @V200899 00587000 BAL R14,GENMSG @V200899 00588000 B RETURN @V200899 00589000 * 00590000 RETURN DS 0H @V200899 00591000 BAL R14,PROCEND CLOSE EXEC MACRO FILE @V200899 00592000 RETURN1 DS 0H @V200899 00593000 LM R14,R15,SVREG14 LOAD RET ADDR & RET CODE @V200899 00594000 BR R14 RETURN @V200899 00595000 * 00596000 *********************************************************************** 00597000 * * 00598000 * EDIT THE ASSEMBLE JCL & STATEMENTS * 00599000 * * 00600000 *********************************************************************** 00601000 IFKASM DS 0H @V200899 00602000 ST R14,IFKASMSV SAVE RETURN ADDR @V200899 00603000 LA R2,DUMMYFCB ADDR OF DUMMY FSCB @V200899 00604000 USING DFSCB,R2 @V200899 00605000 MVC FSCBFT,ASM3705 SET FILE TYPE TO ASM3705 @V200899 00606000 DROP R2 @V200899 00607000 IFKASM10 DS 0H @V200899 00608000 LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 00609000 BAL R14,FSCBRD READ FSCB @V200899 00610000 B IFKASM20 NORMAL RETURN @V200899 00611000 B IFKDERR ERROR-EOF @V200899 00612000 B IFKERR ERROR @V200899 00613000 IFKASM20 DS 0H @V200899 00614000 CLC SLASHS,INPUT IS INPUT STILL JCL @V200899 00615000 BNE IFKDERR BR IF NO - ERROR @V200899 00616000 TM SYSPCHSW,CONT IS THIS SYSPUNCH CONT. CARD @V200899 00617000 BO IFKASM30 BR IF YES @V200899 00618000 CLC SYSPCH,INPUT+2 IS THIS THE SYSPUNCH CARD @V200899 00619000 BE IFKASM30 BR IF YES @V200899 00620000 B IFKASM10 @V200899 00621000 * 00622000 * DDNAME=SYSPUNCH 00623000 * 00624000 IFKASM30 DS 0H @V200899 00625000 NI SYSPCHSW,FF-CONT TURN SYSPUNCH CONT. SW. OFF @V200899 00626000 LA R2,DSN LOAD ADDR OF DSN KEYWORD @V200899 00627000 BAL R14,EDITIN EDIT INPUT @V200899 00628000 B IFKASM34 FOUND @V200899 00629000 NOP 0(0) @V200899 00630000 IFKASM31 DS 0H @V200899 00631000 LA R2,COMMA ADDR OF COMMA KEYWORD @V200899 00632000 BAL R14,EDITIN EDIT INPUT @V200899 00633000 B IFKASM32 FOUND @V200899 00634000 B IFKDERR NOT FOUND - ERROR @V200899 00635000 IFKASM32 DS 0H @V200899 00636000 MVI 0(R3),C'*' DESTROY COMMA @V200899 00637000 LA R2,INPUT+70 ADDR OF LAST VALID INPUT BYTE @V200899 00638000 CR R2,R3 TEST IF ALL INPUT BYTES EDITED @V200899 00639000 BNH IFKDERR BR IF YES - DATA ERROR @V200899 00640000 BE IFKASM33 END OF INPUT @V200899 00641000 CLI 1(R3),C' ' IS NXT CHAR. BLANK @V200899 00642000 BNE IFKASM31 BR IF NO @V200899 00643000 IFKASM33 DS 0H @V200899 00644000 OI SYSPCHSW,CONT SET SYSPUNCH CONTINUE CARD SW. ON@V200899 00645000 B IFKASM10 READ SYSPUNCH CONT. CARD @V200899 00646000 IFKASM34 DS 0H @V200899 00647000 CLC DSNEQU,0(R3) IS THIS A DSN= KEYWORD @V200899 00648000 BE IFKASM35 BR IF YES @V200899 00649000 CLC DSNAME,0(R3) IS IT A DSNAME= THEN @V200899 00650000 BNE IFKDERR BR IF NO - ERROR @V200899 00651000 LA R3,3(R3) MOVE @V200899 00652000 IFKASM35 DS 0H POINTER @V200899 00653000 LA R3,4(R3) PAST KEYWORD @V200899 00654000 LA R2,ASMMEM POINT GR2 TO RECIEVER FIELD @V200899 00655000 BAL R14,DSNEDIT EDIT THE DSNAME @V200899 00656000 B IFKASM40 NORMAL RETURN @V200899 00657000 B IFKDERR INVALID MEMBER NAME @V200899 00658000 * 00659000 * 00660000 * 00661000 IFKASM40 DS 0H @V200899 00662000 LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 00663000 BAL R14,FSCBRD READ FSCB @V200899 00664000 B IFKASM42 NORMAL RETURN @V200899 00665000 B IFKDERR EOF - ERROR @V200899 00666000 B IFKERR ERROR @V200899 00667000 IFKASM42 DS 0H @V200899 00668000 CLI INPUT,C'*' IS INPUT A COMMENT @V200899 00669000 BE IFKASM40 BR IF YES @V200899 00670000 CLC SLASHS,INPUT IS INPUT STILL JCL @V200899 00671000 BNE IFKDERR BR IF NO - ERROR @V200899 00672000 CLC SYSIN,INPUT+2 IS THIS THE SYSIN CARD @V200899 00673000 BNE IFKASM40 BR IF NO - READ NXT CARD @V200899 00674000 * 00675000 * EDIT ASSEMBLER INPUT STATEMENTS AFTER SYSIN CARD 00676000 * 00677000 IFKASMA0 DS 0H @V200899 00678000 LA R2,INPFSCB LOAD ADDR OF THE INPUT FSCB @V200899 00679000 BAL R14,FSCBRD READ FSCB @V200899 00680000 B IFKASMC0 NORMAL RETURN @V200899 00681000 B IFKASMK0 EOF @V200899 00682000 B IFKERR ERROR @V200899 00683000 IFKASMC0 DS 0H @V200899 00684000 CLC SLASHS,INPUT TEST END OF ASSM. INPUT @V200899 00685000 BE IFKASMK0 BR IF YES @V200899 00686000 CLC SLASHAST,INPUT TEST END OF ASSM. INPUT @V200899 00687000 BE IFKASMK0 BR IF YES @V200899 00688000 BAL R14,FSCBWT WRITE INPUT TO OUTPUT @V200899 00689000 B IFKASMA0 NORMAL RETURN @V200899 00690000 B IFKERR ERROR @V200899 00691000 * 00692000 * HERE IF END OF ASSEMBLER STATEMENTS 00693000 * 00694000 IFKASMK0 DS 0H @V200899 00695000 BAL R14,FSCBCLOS CLOSE CUR. MEMBER FILE @V200899 00696000 B IFKASMK2 NORMAL RETURN @V200899 00697000 NOP 0(0) ERROR-IGNORE CLOSE ERROR @V200899 00698000 IFKASMK2 DS 0H @V200899 00699000 BAL R14,ASMSTAK GEN ASM3705 CMD FOR MEMBER NNN @V200899 00700000 B IFKASMK4 NORMAL RETURN @V200899 00701000 B IFKERR ERROR RETURN @V200899 00702000 IFKASMK4 DS 0H @V200899 00703000 L R14,IFKASMSV LOAD RETURN ADDR @V200899 00704000 B IFKNORM(R14) @V200899 00705000 * 00706000 SYSPCHSW DC X'00' SYSPUNCH CONTROL SW'S @V200899 00707000 CONT EQU X'01' SYSPUNCH CONTINUE SWITCH @V200899 00708000 * 00709000 * EXIT FROM I/O ERRORS 00710000 * 00711000 IFKERR DS 0H @V200899 00712000 L R14,IFKASMSV LOAD RETURN ADDR @V200899 00713000 B IFKIOEND(R14) ERROR RETURN @V200899 00714000 * 00715000 * EXIT FROM DATA ERRORS 00716000 * 00717000 IFKDERR DS 0H @V200899 00718000 L R14,IFKASMSV LOAD RETURN ADDR @V200899 00719000 B IFKDEND(R14) ERROR RETURN - DATA RETURN @V200899 00720000 * 00721000 IFKASMSV DC F'0' @V200899 00722000 * 00723000 IFKNORM EQU X'00' NORMAL RETURN DISP. @V200899 00724000 IFKDEND EQU X'04' DATA ERROR RETURN CODE @V200899 00725000 IFKIOEND EQU X'08' ERROR RETURN DISP. @V200899 00726000 EJECT 00727000 *********************************************************************** 00728000 * * 00729000 * EDIT THE LINKAGE-EDITOR JCL & CONTROL STATEMENTS 00730000 * * 00731000 *********************************************************************** 00732000 IEWL DS 0H @V200899 00733000 ST R14,IEWLSV SAVE RETURN ADDR @V200899 00734000 LA R2,DUMMYFCB ADDR OF DUMMY FSCB @V200899 00735000 USING DFSCB,R2 @V200899 00736000 MVC FSCBFT,TEXT SET FILE TYPE TO TEXT @V200899 00737000 DROP R2 @V200899 00738000 IEWLJCLA DS 0H @V200899 00739000 LA R2,PARM ADDR OF THE PARM= KEYWORD @V200899 00740000 BAL R14,EDITIN KEYWORD EDIT @V200899 00741000 B IEWLJCLB FOUND @V200899 00742000 B IEWLJCLD NOT FOUND @V200899 00743000 IEWLJCLB DS 0H @V200899 00744000 LA R3,5(R3) MOVE POINTER PAST KEYWORD @V200899 00745000 NI PROCSW1,FF-APOSTSW TURN OFF APOSTROPHE SW. @V200899 00746000 TM PROCSW1,LKD1 1ST OR 2ND LKED STEP? @V200899 00747000 BZ STOPT1 MUST BE FIRST... @V200899 00748000 LA R2,OPTION2 @V200899 00749000 B CKAPOST @V200899 00750000 STOPT1 DS 0H @V200899 00751000 LA R2,OPTION1 SET RECEIVING POINTER @V200899 00752000 CKAPOST DS 0H @V200899 00753000 CLI 0(R3),C'''' ARE PARMS ENCLOSED IN APOST. @V200899 00754000 BNE IEWLJCLC BR IF NO @V200899 00755000 OI PROCSW1,APOSTSW TURN APOST. SW. ON @V200899 00756000 LA R3,1(R3) MOVE POINTER PAST APOST. @V200899 00757000 IEWLJCLC DS 0H @V200899 00758000 MVC 0(1,R2),0(R3) MOVE LKED PARM'S 1 BYTE AT A TIME@V200899 00759000 LA R2,1(R2) MOVE TO NXT OPTION BYTE FIELD @V200899 00760000 LA R3,1(R3) MOVE TO NXT LKED PARM BYTE @V200899 00761000 CLI 0(R3),C' ' IS BYTE A BLANK @V200899 00762000 BE IEWLJCL1 BR IF YES-ASSUME END OF PARM @V200899 00763000 CLI 0(R3),C'''' IS BYTE AN APOSTROPHE @V200899 00764000 BE IEWLJCL1 BR IF YES-ASSUME END OF PARM @V200899 00765000 CLI 0(R3),C',' IS BYTE A COMMA @V200899 00766000 BE IEWLJC1 YES - REPLACE IT @V200899 00767000 CLI 0(R3),C'=' EQUAL SIGN? @V200899 00768000 BE IEWLJC1 YES - @V200899 00769000 CLI 0(R3),C'(' LEFT PARENTHESIS? @V200899 00770000 BE IEWLJC1 YES - @V200899 00771000 CLI 0(R3),C')' RIGHT PARENTHESIS? @V200899 00772000 BNE IEWLJCLC NONE OF THE ABOVE - MOVE IT @V200899 00773000 IEWLJC1 DS 0H @V200899 00774000 MVI 0(R3),C' ' BLANK CHAR. IN CASE APOSTSW ON @V200899 00775000 TM PROCSW1,APOSTSW IS APOST. SW ON @V200899 00776000 BO IEWLJCLC BR IF YES TO MOVE BLANK @V200899 00777000 B IEWLJCL1 IF APOST. SW OFF COMMA IS @V200899 00778000 * DELIMITER 00779000 IEWLJCLD DS 0H @V200899 00780000 LA R2,INPFSCB ADDR OF INPUT FSCB @V200899 00781000 BAL R14,FSCBRD READ FSCB @V200899 00782000 B IEWLJCLE NORMAL RETURN @V200899 00783000 B IEWLDERR ERROR RETUTN - EOF @V200899 00784000 B IEWLERR ERROR RETURN @V200899 00785000 IEWLJCLE DS 0H @V200899 00786000 CLI INPUT,C'*' INPUT= * @V200899 00787000 BE IEWLJCL1 BR IF YES @V200899 00788000 CLC SLASHS,INPUT INPUT = // @V200899 00789000 BNE IEWLDERR BR IF NO DATA ERROR @V200899 00790000 CLI INPUT+2,C' ' IS IT EXEC CONTINUE CARD @V200899 00791000 BE IEWLJCLA BR IF YES - START AGAIN @V200899 00792000 B IEWLJCL2 @V200899 00793000 IEWLJCL1 DS 0H @V200899 00794000 LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 00795000 BAL R14,FSCBRD READ FSCB @V200899 00796000 B IEWLJCL2 NORMAL RETURN @V200899 00797000 B IEWLDERR ERROR RETURN - EOF @V200899 00798000 B IEWLERR ERROR @V200899 00799000 IEWLJCL2 DS 0H @V200899 00800000 CLI INPUT,C'*' IS INPUT = * @V200899 00801000 BE IEWLJCL1 BR IF YES @V200899 00802000 CLC SLASHS,INPUT IS INPUT = // @V200899 00803000 BNE IEWLDERR BR IF NO - ERROR @V200899 00804000 CLC SYSLIB,INPUT+2 IS THIS A 'SYSLIB' CARD? @V200899 00805000 BNE IEWLJ1 NO - TRY NEXT TYPE @V200899 00806000 BAL R7,IEWLSLIB YES - CHECK THE SYSLIB INFO. @V200899 00807000 B IEWLJCL1 NORMAL RETURN (READ ANOTHER CARD)@V200899 00808000 B IEWLDERR RETURN POINT FOR DATA ERROR. @V200899 00809000 IEWLJ1 DS 0H @V200899 00810000 CLC SYSLMOD,INPUT+2 IS THIS A 'SYSLMOD' CARD? @V200899 00811000 BNE IEWLJ2 NO - KEEP TRYING.. @V200899 00812000 BAL R7,IEWLSMOD YES - PROCESS THE SYSLMOD INFO. @V200899 00813000 B IEWLJCL1 NORMAL RETURN. @V200899 00814000 B IEWLDERR RETURN POINT IF DATA ERROR. @V200899 00815000 IEWLJ2 DS 0H @V200899 00816000 CLC SYSPCH(8),INPUT+2 IS IT SYSPUNCH? @VA10299 00816100 BNE IEWLJ2D NO - KEEP ON TRUCKING @VA10299 00816200 TM PROCSW1,LKDFIRST PASSED THIS WAY BEFOR? @VA10299 00816300 BNZ IEWLJ2D YES - NOT SINGLE JCL @VA10299 00816400 MVC PCH3NM,NCPNM SAVE NCPNAME @VA10299 00816500 IEWLJ2D DS 0H @VA10299 00816600 LA R2,OBJ3705 SEE IF SYS1.OBJ3705 IS HERE @V200899 00817000 BAL R14,EDITIN . . . @V200899 00818000 B IEWLJ3 FOUND IT. @V200899 00819000 B IEWLJ4 NOT FOUND - TRY NEXT TYPE @V200899 00820000 IEWLJ3 DS 0H @V200899 00821000 BAL R7,IEWLOBJ3 GO RETRIEVE DDNAME @V200899 00822000 B IEWLJ3A NORMAL RETURN @VM08696 00823000 B IEWLDERR DATA ERROR RETURN @VM08696 00824000 IEWLJ3A EQU * N.B. R10 CONTAINS (8-LENGTH) @VM08696 00825000 LA R8,9 FIGURE OUT WHERE TO SAVE THE @VA10299 00826000 SR R8,R10 COUNT..... @VM08696 00827000 SR R9,R8 . . . @VM08696 00828000 LA R8,9 AND THEN CALCULATE THE COUNT @VA10299 00829000 SR R8,R10 . . . @VM08696 00830000 BCTR R8,0 LESS 1 FOR EX'D MVC'S @VM08696 00831000 BCTR R9,0 POINT TO CORRECT SPOT FOR COUNT @VA10299 00831500 STC R8,0(R9) AND SAVE.... @VM08696 00832000 TM PROCSW1,CKINCL ARE THERE 2 NAMES?? @VM08696 00833000 BZ IEWLJCL1 NO - GO ON TO NEXT REC. @VM08696 00834000 CLC OBJNM1+3(1),OBJNM2+3 WHICH IS LONGER?? @VM08696 00835000 BNL IEWLJCL1 IF 1ST OR EQUAL OK @VM08696 00836000 MVC SHRTR(4),=A(OBJNM1) REVERSE POINTERS @VM08696 00837000 MVC LNGR(4),=A(OBJNM2) . . . @VM08696 00838000 B IEWLJCL1 PROCESS NEXT RECORD. @VM08696 00839000 IEWLJ4 DS 0H @V200899 00840000 LA R2,DSN LOCATE DSNAME KEYWORD @V200899 00841000 BAL R14,EDITIN . . . @V200899 00842000 B IEWLJ5 FOUND IT @V200899 00843000 B IEWLJ7 NO DSN - CHECK FOR SYSLIN @V200899 00844000 IEWLJ5 DS 0H @V200899 00845000 CLC DSNEQU,0(R3) IS IT 'DSN='?? @V200899 00846000 BE IEWLJ6 YES - @V200899 00847000 CLC DSNAME,0(R3) NO - IS IT 'DSNAME='? @V200899 00848000 BNE IEWLDERR IF NEITHER, THAT'S AN ERROR @V200899 00849000 LA R3,3(,R3) STEP AROUND THE KEYWORD. @V200899 00850000 IEWLJ6 DS 0H . . . @V200899 00851000 CLI 4(R3),C'&&' DOES DSNAME START WITH AMPERSAND?@V200899 00852000 BNE IEWLJCL1 NO, DON'T SAVE DDNAME @VA05242 00853000 BAL R7,IEWLAMP YES - PROCESS THE DDNAME @V200899 00854000 B IEWLJCL1 NORMAL RETURN @V200899 00855000 B IEWLDERR DATA ERROR RETURN @V200899 00856000 IEWLJ7 DS 0H @V200899 00857000 CLC SYSLIN,INPUT+2 INPUT = SYSLIN @V200899 00858000 BNE IEWLJCL1 BR IF YES - IGNORE DD STATEMENTS @V200899 00859000 BAL R14,IEWLSIN PROCESS SYSIN CONTROL CARDS @V200899 00860000 B IEWLJCL3 NORMAL RETURN @V200899 00861000 B IEWLDERR DATA ERROR RETURN @V200899 00862000 B IEWLERR ERROR RETURN @V200899 00863000 IEWLJCL3 DS 0H @V200899 00864000 BAL R14,LKDSTACK STACK LKED CMDS. IN EXEC MACRO @V200899 00865000 B IEWLJCLX NORMAL RETURN @V200899 00866000 B IEWLERR ERROR RETURN @V200899 00867000 IEWLJCLX DS 0H @V200899 00868000 L R14,IEWLSV LOAD RETURN ADDR @V200899 00869000 BR R14 NORMAL RETURN @V200899 00870000 IEWLDERR DS 0H @V200899 00871000 L R14,IEWLSV LOAD RETURN ADDR @V200899 00872000 B DATERR(R14) DATA ERROR RETURN @V200899 00873000 IEWLERR DS 0H @V200899 00874000 L R14,IEWLSV LOAD RETURN ADDR @V200899 00875000 B IOERRC(R14) I/O ERROR RETURN @V200899 00876000 * 00877000 * 00878000 IEWLSV DC F'0' @V200899 00879000 * 00880000 EJECT 00881000 *********************************************************************** 00882000 * * 00883000 * PROCESS DD CARDS ASSOCIATED WITH LKED STEPS * 00884000 * * 00885000 *********************************************************************** 00886000 IEWLSLIB DS 0H PROCESS 'SYSLIB' DD CARDS @V200899 00887000 BAL R10,FNDDSN LOCATE THE DATASET NAME @V200899 00888000 SR R8,R8 CLR REG. FOR IC @V200899 00889000 LA R9,20 TO CALC LENGTH OF NAME @V200899 00890000 IC R8,SYSPCHSV GET (20-LENGTH+1) @V200899 00891000 SR R9,R8 ==>GIVES DSN LENGTH-1 @V200899 00892000 * COMPARE DSN SPECIFIED FOR ASSEMBLIES WITH THAT SPECIFIED HERE 00893000 EX R9,CKSYSPCH DO THEY MATCH?? @V200899 00894000 BNE 4(R7) NOPE - BYE @V200899 00895000 CLI DEF1NM,X'40' ARE THE FILEDEF'S SET UP? @V200899 00896000 BCR 7,R7 YES - LEAVE @V200899 00897000 LA R10,INPFSCB NO - SET 'NCPNAME' INTO FILEDEFS @V200899 00898000 MVC DEF1NM(8),FSCBFN-DFSCB(R10) . . . @V200899 00899000 MVC DEF2NM(8),FSCBFN-DFSCB(R10) . . . @V200899 00900000 BR R7 RETURN @V200899 00901000 CKSYSPCH CLC 0(0,R3),SYSPCHSV+1 EXECUTED CLC FOR DSN COMPARE @V200899 00902000 SPACE 5 00903000 IEWLSMOD DS 0H PROCESS 'SYSLMOD' INFO. @V200899 00904000 BAL R10,FNDDSN LOCATE THE DATASET NAME @V200899 00905000 CLI 0(R3),C'&&' BEGIN WITH AMPERSAND?? @V200899 00906000 BNE CKSMODSW NO - @V200899 00907000 OI PROCSW1,LKD1 YES - THIS IS 1ST LKED STEP @V200899 00908000 BR R7 @V200899 00909000 CKSMODSW DS 0H @V200899 00910000 LA R5,FISMODNM 2 STEP FILEDEF @VA13288 00910500 TM PROCSW1,LKD1 HAVE WE SEEN 1ST LKED YET? @V200899 00911000 BNZ SMODSWCK OK - NOT A DATA ERROR @VA10299 00912000 TM PROCSW1,LKDFIRST 1ST TIME THRU LNKEDT @VA10299 00912030 BNZ 4(R7) NOT OLD OR NEW JCL - ERROR @VA10299 00912060 LA R2,SYS1 LOCATE CHARS. 'SYS1.' @VA10299 00912090 BAL R14,EDITIN @VA10299 00912120 B SLMODA HURRAY - WE FOUND IT @VA10299 00912150 B 4(R7) RETURN POINT IF DATA ERROR @VA10299 00912180 SLMODA EQU * @VA10299 00912210 LA R5,LDM3NM DSN FIELD OF FILEDEF @VA10299 00912270 OI PROCSW1,NEWJCL SET ON NEWJCL SWITCH @VA10299 00912720 SMODSWCK EQU * @VA10299 00912780 LA R10,INPFSCB YES - MOVE 'NCPNAME' INTO FILEDEF@V200899 00913000 MVC 0(8,R5),FSCBFN-DFSCB(R10) . . . @VA13288 00914000 BR R7 RETURN @V200899 00915000 SPACE 5 00916000 IEWLOBJ3 DS 0H RETRIEVE DDNAME FOR SYS1.OBJ3705 @V200899 00917000 LA R8,INPUT+2 POINT TO START OF DDNAME @V200899 00918000 LA R9,OBJNM1+4 POINT TO RECEIVING FIELD @VM08696 00919000 CLI 0(R9),X'40' SOMETHING THERE ALREADY? @VM08696 00920000 BE STMX1 NO - GO ON @VA10299 00921000 LA R9,OBJNM2+4 YES - POINT TO SECOND SLOT @VM08696 00922000 OI PROCSW1,CKINCL TURN ON 2-NAME FLAG @VM08696 00923000 B STMX1 SET JCL3 IN CASE ONLY LKD STEP @VA10299 00923500 STMX EQU * @VM08696 00924000 LA R10,9 MAX. NUMBER OF CHARS. @VA10299 00925000 CKBLNK CLI 0(R8),X'40' IS IT A BLANK? @V200899 00926000 BCR 8,R7 YES - RETURN @V200899 00927000 MVC 0(1,R9),0(R8) NO - MOVE INTO THE FILEDEF @V200899 00928000 LA R8,1(,R8) UPDATE POINTERS AND @V200899 00929000 LA R9,1(,R9) CHECK THE COUNT @V200899 00930000 BCT R10,CKBLNK . . . @V200899 00931000 B 4(R7) DDNAME > 8 CHAR. - ERROR @V200899 00932000 SPACE 2 @VA10299 00933000 STMX1 DS 0H @VA10299 00933060 TM PROCSW1,LKDFIRST FIRST TIME THRU LKEDSTACK @VA10299 00933120 BNZ STMX GO - THIS IS 2ND TIME THRU @VA10299 00933180 CLC OBJTST(7),INPUT+2 IS THIS OBJ3705? @VA10299 00933240 BNE STMX2 NO - WELL WHAT IS IT? @VA10299 00933300 MVC OBJ3NM(7),OBJTST MOVE TO JCL3 JUST IN CASE @VA10299 00933360 B STMX RETURN @VA10299 00933420 STMX2 EQU * @VA10299 00933480 CLI OBJ3NM,X'40' HAVE WE FILLED A OBJ FILEDEF? @VA10299 00933540 BNE STMX YES-THEN IGNORE THIS TURKEY @VA10299 00933600 MVC OBJ3NM(8),INPUT+2 FILL DD NAME IN CASE ONLY JCL@VA10299 00933660 B STMX RETURN - DON'T CHANGE NORMAL FLOW @VA10299 00933720 OBJTST DC C'OBJ3705' @VA10299 00933780 SPACE 2 @VA10299 00933840 IEWLAMP DS 0H RETRIEVE DDNAME FOR OUTPUT OF @V200899 00934000 * 1ST LKED 00935000 LA R8,INPUT+2 POINT TO START OF NAME @V200899 00936000 LA R9,FITEMPNM POINT TO RECEIVING FIELD @V200899 00937000 LA R10,9 MAX. COUNT @VA10299 00938000 B CKBLNK GO MOVE THE NAME @V200899 00939000 SPACE 2 @VA10299 00940000 IEWLSIN DS 0H PROCESS SYSLIN INFO. @V200899 00941000 ST R14,IEWLSNSV SAVE RETURN ADDR @V200899 00942000 IEWLSN10 DS 0H @V200899 00943000 LA R2,INPFSCB ADDR OF INPUT FSCB @V200899 00944000 BAL R14,FSCBRD READ INPUT @V200899 00945000 B IEWLSN20 NORMAL RETURN @V200899 00946000 B IEWLSEOF EOF @V200899 00947000 B IEWLSNER ERROR @V200899 00948000 IEWLSN20 DS 0H @V200899 00949000 CLC SLASHAST,INPUT IS THIS THE END OF SYSLIN @V200899 00950000 BE IEWLSEOF BR IF YES @V200899 00951000 CLC SLASHS,INPUT INPUT = // @V200899 00952000 BE IEWLSEOF BR IF YES @V200899 00953000 TM PROCSW1,NEWJCL IF NEW JCL IGNORE CKINCL SW @VA10299 00953300 BO WRTSIN ....AND GO WRITE THE INCLUDE CARD @VA10299 00953600 TM PROCSW1,CKINCL CHECK 'INCLUDE' CARDS?? @VM08696 00954000 BZ WRTSIN NO - GO WRITE THE RECORD. @VM08696 00955000 LA R2,INCLUDE YES - IS THIS ONE?? @VM08696 00956000 BAL R14,EDITIN . . . @VM08696 00957000 B IEWLSN22 YES - CHECK FURTHER @VM08696 00958000 B WRTSIN NO - GO WRITE @VM08696 00959000 IEWLSN22 EQU * @VM08696 00960000 L R2,LNGR GET POINTER TO LONGER NAME INFO. @VM08696 00961000 BAL R14,EDITIN IS THIS IT? @VM08696 00962000 B IEWLSN25 YES - @VM08696 00963000 B WRTSIN NO - GO WRITE @VM08696 00964000 IEWLSN25 EQU * @VM08696 00965000 L R2,SHRTR @VM08696 00966000 MVI 0(R3),X'40' BLANK OUT FIRST CHAR. @VM08696 00967000 LA R3,1(,R3) POINT TO REMAINDER OF NAME @VM08696 00968000 LA R4,4(,R2) POINT TO NEW NAME @VM08696 00969000 SR R5,R5 CLEAR @VM08696 00970000 IC R5,3(R2) GET (COUNT-1) @VM08696 00971000 EX R5,SWAPMVC MOVE IN NEW NAME @VM08696 00972000 WRTSIN EQU * @VM08696 00973000 BAL R14,FSCBWT WRITE INPUT TO OUTPUT @V200899 00974000 B IEWLSN30 NORMAL RETURN @V200899 00975000 B IEWLSNER ERROR RETURN @V200899 00976000 IEWLSN30 DS 0H @V200899 00977000 LA R2,ENTRY ADDR OF ENTRY KEYWORD @V200899 00978000 BAL R14,EDITIN EDIT KEYWORD @V200899 00979000 B IEWLSN40 FOUND @V200899 00980000 B IEWLSN10 NOT FOUND @V200899 00981000 IEWLSN40 DS 0H @V200899 00982000 BAL R14,IEWLENT PROCESS ENTRY CONTROL CARD @V200899 00983000 B IEWLSN10 NORMAL RETURN @V200899 00984000 B IEWLSNDR DATA ERROR RETURN @V200899 00985000 B IEWLSNER ERROR RETURN @V200899 00986000 IEWLSEOF DS 0H @V200899 00987000 BAL R14,FSCBCLOS @V200899 00988000 B IEWLSNXT NORMAL RETURN @V200899 00989000 NOP 0(0) ERROR RETURN IGNORE @V200899 00990000 IEWLSNXT DS 0H @V200899 00991000 L R14,IEWLSNSV LOAD RETURN ADDR @V200899 00992000 BR R14 NORMAL RETURN @V200899 00993000 IEWLSNDR DS 0H @V200899 00994000 L R14,IEWLSNSV LOAD RETURN ADDR @V200899 00995000 B DATERR(R14) DATA ERROR RETURN @V200899 00996000 IEWLSNER DS 0H @V200899 00997000 L R14,IEWLSNSV LOAD RETURN ADDR @V200899 00998000 B IOERRC(R14) I/O ERROR RETURN @V200899 00999000 * 01000000 SPACE 01001000 SWAPMVC MVC 0(0,R3),0(R4) EXECUTED MVC @VM08696 01002000 IEWLSNSV DC F'0' @V200899 01003000 EJECT 01004000 *********************************************************************** 01005000 * 01006000 * PROCESS INPUT ENTRY CARD 01007000 * 01008000 *********************************************************************** 01009000 IEWLENT DS 0H @V200899 01010000 ST R14,IEWLENSV SAVE RETURN ADDR @V200899 01011000 LA R3,7(R3) MOVE PNTR PAST KEYWORD @V200899 01012000 LA R1,60 MAX. LNTH OF INPUT FROM ENTRY @V200899 01013000 IEWLEN02 DS 0H @V200899 01014000 CLI 0(R3),C' ' IS CHAR. A BLANK @V200899 01015000 BNE IEWLEN10 BR IF NO-MUST BE ENTRY NAME @V200899 01016000 LA R3,1(R3) MOVE PNTR. TO NXT CHAR. @V200899 01017000 BCT R1,IEWLEN02 BR TO TEST NXT CHAR. @V200899 01018000 B IEWLENXX IF FALL THRU - ERROR @V200899 01019000 IEWLEN10 DS 0H @V200899 01020000 MVC ENTRYNAM,BLANKS BLANK NAME FIELD @V200899 01021000 LA R2,ENTRYNAM ADDR TO RECIEVE NAME @V200899 01022000 LA R4,8 MAX LNGTH OF ENTRY NAME @V200899 01023000 IEWLEN12 DS 0H @V200899 01024000 MVC 0(1,R2),0(R3) MOVE 1 CHAR. AT A TIME @V200899 01025000 LA R2,1(R2) MOVE PNTR TO NAME REC. BYTE @V200899 01026000 LA R3,1(R3) MOVE PNTR TO NXT INPUT BYTE @V200899 01027000 CLI 0(R3),C' ' TEST END OF NAME @V200899 01028000 BE IEWLEN14 @V200899 01029000 BCT R4,IEWLEN12 TEST IF MAX HAS BEEN REACHED @V200899 01030000 B IEWLENXX IF FALL THRU - ERROR @V200899 01031000 IEWLEN14 DS 0H @V200899 01032000 L R14,IEWLENSV LOAD RETURN ADDR @V200899 01033000 BR R14 NORMAL RETURN @V200899 01034000 IEWLENXX DS 0H @V200899 01035000 LA R15,24 LOAD RETURN CODE @V200899 01036000 ST R15,SVREG15 STORE RETURN CODE @V200899 01037000 LA R2,DMSGRN78 ADDR OF ERROR MSG @V200899 01038000 BAL R14,GENMSG @V200899 01039000 L R14,IEWLENSV LOAD RETURN ADDR @V200899 01040000 B DATERR(R14) DATA ERROR RETURN @V200899 01041000 * 01042000 SPACE 01043000 IEWLENSV DC F'0' @V200899 01044000 EJECT 01045000 *********************************************************************** 01046000 * 01047000 * EXEC MACRO COMMAND STACKER 01048000 * 01049000 *********************************************************************** 01050000 ASMSTAK DS 0H @V200899 01051000 ST R14,STACKSV SAVE RETURN ADDR @V200899 01052000 TM PROCSW1,ASMFIRST FIRST TIME IN @V200899 01053000 BZ ASMSTAK2 BR IF YES @V200899 01054000 MVC GENADD,ADD CHANGE TXTLIB GEN TO ADD @V200899 01055000 ASMSTAK2 DS 0H @V200899 01056000 LA R2,OUTFSCB ADDR OF OUTPUT FSCB @V200899 01057000 USING DFSCB,R2 @V200899 01058000 MVC ASMFNM,FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01059000 MVC ASMNAME,FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01060000 MVC FILENM,FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01061000 MVC ERSFNAM(8),FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01062000 * 01063000 * 01064000 * SWAP FSCB'S 01065000 * 01066000 * 01067000 LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 01068000 MVC NCPNM,FSCBFN MOVE ASM FILE NAME TO CMS CMD @V200899 01069000 DROP R2 @V200899 01070000 OI PROCSW1,ASMFIRST SET SW TO NOT 1-ST TIME @V200899 01071000 MVC ASMSTKNM,ASMMEM MOVE MEMBER NAME TO LKED FIELD @V200899 01072000 LM R1,R2,STACKASM INIT. REG'S @V200899 01073000 B STACK30 BEG TO STACK BEG CMD'S @V200899 01074000 EJECT 01075000 LKDSTACK DS 0H @V200899 01076000 ST R14,STACKSV SAVE RETURN ADDR @V200899 01077000 LA R2,OUTFSCB ADDR OF OUTPUT FSCB @V200899 01078000 USING DFSCB,R2 @V200899 01079000 TM PROCSW1,LKDFIRST 1-ST TIME THRU LKDSTACK @V200899 01080000 BO LKDSTK1 BR IF NO @V200899 01081000 OI PROCSW1,LKDFIRST SET SW. NOT FIRST TIME @V200899 01082000 MVC FNAME1(8),FSCBFN MOVE FILENAME INTO CMD @V200899 01083000 MVC FNAME3(8),FNAME1 ......ALSO FOR SINGLE JCL @VA10299 01083500 * 01084000 * SWAP FSCB'S 01085000 * 01086000 LA R2,INPFSCB ADDR OF INPUT FSCB @V200899 01087000 TM PROCSW1,NEWJCL DO WE HAVE NEW JCL? @VA10299 01087100 BNO LKDSTK2 NOT NEW JCL @VA10299 01087200 MVC OPTION3(51),OPTION1 LKED OPTIONS @VA10299 01087300 LM R1,R2,STAKLKD3 INIT. REG'S @VA10299 01087400 B STACK30 BEG TO STACK END @VA10299 01087500 LKDSTK2 DS 0H @VA10299 01087600 LM R1,R2,STAKLKD1 INIT. REG'S @V200899 01088000 B STACK30 BEG TO STACK END @V200899 01089000 LKDSTK1 DS 0H @V200899 01090000 MVC FNAME2(8),FSCBFN MOVE NAME INTO CMD. @V200899 01091000 LA R3,FIOBJ3NM WHERE THE NAME WILL GO @VM08696 01092000 LA R4,OBJNM1 POINT TO FIRST NAME INFO. @VM08696 01093000 TM PROCSW1,CKINCL WERE THERE 2 NAMES? @VM08696 01094000 BZ BMP4 NOPE @VM08696 01095000 L R4,SHRTR YES - POINT TO THE SHORTER NAME @VM08696 01096000 BMP4 EQU * @VM08696 01097000 LA R4,4(,R4) POINT TO THE NAME @VM08696 01098000 LA R5,7 MAX LENGTH - 1 @VM08696 01099000 EX R5,SWAPMVC MOVE NAME INTO FILEDEF @VM08696 01100000 LM R1,R2,STAKLKD2 INIT. REG'S @V200899 01101000 B STACK30 @V200899 01102000 * 01103000 * 01104000 * 01105000 CLOSTACK DS 0H @V200899 01106000 ST R14,STACKSV SAVE RETURN ADDR @V200899 01107000 LA R2,INPFSCB LOAD ADDR OF INPUT FSCB @V200899 01108000 MVC SVNCPNAM,FSCBFN MOVE INPUT FILE NAME TO SAVE @V200899 01109000 * CMD. 01110000 LM R1,R2,ENDCMD INIT. REG'S @V200899 01111000 B STACK30 @V200899 01112000 DROP R2 @V200899 01113000 EJECT 01114000 STACK10 DS 0H @V200899 01115000 LM R1,R2,STACKCNT LOAD REG'S FROM STACK CONTROL @V200899 01116000 BCT R1,STACK20 IF END OF STACK NOT REACHED @V200899 01117000 * CONTINUE 01118000 B STACKXT IF FALL THRU END OF STACK- EXIT @V200899 01119000 STACK20 DS 0H @V200899 01120000 SR R3,R3 @V200899 01121000 IC R3,0(R2) INSERT LNTH OF LAST CMD STACKED @V200899 01122000 LA R2,1(R2,R3) MOVE PNTR TO NXT CMD @V200899 01123000 STACK30 DS 0H @V200899 01124000 STM R1,R2,STACKCNT SAVE REG'S FOR STACK CNT @V200899 01125000 BAL R14,PROCWT WRT CMD TO STG2 EXEC PROC @V200899 01126000 B STACK10 NORMAL RETURN @V200899 01127000 B STACKERR ERROR RETURN @V200899 01128000 STACKXT DS 0H @V200899 01129000 L R14,STACKSV LOAD RETURN ADDR @V200899 01130000 BR R14 @V200899 01131000 STACKERR DS 0H @V200899 01132000 L R14,STACKSV LOAD RETURN ADDR @V200899 01133000 B STKERROR(R14) ERROR RETURN @V200899 01134000 * 01135000 SPACE 1 01136000 STACKSV DC F'0' @V200899 01137000 STACKCNT DC 2F'0' STACK CONTROL SAVE AREA @V200899 01138000 STKERROR EQU X'04' STACK ERROR RETURN DISP. @V200899 01139000 EJECT 01140000 * 01141000 * START STACK OF ASM & EDIT CMD'S 01142000 * 01143000 STACKASM DC A(10),A(STACKBEG) INIT. ASM STACK CMD'S @V200899 01144000 STACKBEG DS 0C @V200899 01145000 DC X'18',C'ASM3705 ' @V200899 01146000 ASMFNM DC C' ' ASSEMBLER FILE NAME @V200899 01147000 DC C' (PRINT)' ASSEMBLER OPTIONS @V200899 01148000 * 01149000 DC X'0E',X'50',C'BEGSTACK LIFO' @V200899 01150000 * 01151000 DC X'04',C'FILE' @V200899 01152000 * 01153000 DC X'10',C'I NAME ' @V200899 01154000 ASMSTKNM DC C' ' TXTLIB FILE NAME @V200899 01155000 * 01156000 DC X'03',C'BOT' @V200899 01157000 * 01158000 DC X'08',C'VER OFF ' @V200899 01159000 * 01160000 DC X'04',X'50',C'END' @V200899 01161000 * 01162000 DC X'15',C'EDIT ' @V200899 01163000 ASMNAME DC C' ' @V200899 01164000 DC C' TEXT A1' @V200899 01165000 * 01166000 DC X'1C',C'TXTLIB ' @V200899 01167000 GENADD DC C'GEN' FIRST TIME IS GEN AFTERWARD @V200899 01168000 * IT'S AN ADD 01169000 DC C' ' BLANK @V200899 01170000 NCPNM DC C' ' NAME OF INPUT FILE @V200899 01171000 DC C' ' BLANK @V200899 01172000 FILENM DC C' ' ASM3705 FILE NAME @V200899 01173000 * 01174000 DC X'14',C'ERASE ' @V200899 01175000 ERSFNAM DC C' ' ASM3705 FILE NAME @V200899 01176000 DC C' TEXT ' @V200899 01177000 * 01178000 * LKED COMMANDS 01179000 * 01180000 STAKLKD1 DC A(4),A(LKEDCMSA) @V200899 01181000 LKEDCMSA DS 0C @V200899 01182000 ERASECMD DC X'17',C'ERASE NCPTEMP LOADLIB A' @V200899 01183000 DC X'27',C'FILEDEF SYSLIB DISK ' @V200899 01184000 DEF1NM DC C' ' NCP NAME @V200899 01185000 DC C' TXTLIB A1' @V200899 01186000 DC X'3A',C'FILEDEF SYSLMOD DISK NCPTEMP LOADLIB ' @V200899 01187000 DC C'A1 (RECFM U BLOCK 260' @V200899 01188000 LKEDCMS1 DC X'50',C'LKED ' @V200899 01189000 FNAME1 DC CL9' ' @V200899 01190000 DC C'( PRINT NOTERM ' @V200899 01191000 OPTION1 DC CL51' ' @V200899 01192000 * 01193000 STAKLKD2 DC A(5),A(LKEDCMSB) INIT. LKED STACK CMDS @V200899 01194000 LKEDCMSB DS 0C @V200899 01195000 DC X'26',C'FILEDEF SYSLIB DISK ' @V200899 01196000 DEF2NM DC C' ' NCP NAME @V200899 01197000 DC C' TXTLIB A1' @V200899 01198000 FIOBJ3 DC X'27',C'FILEDEF ' @V200899 01199000 FIOBJ3NM DC CL9' ' DDNAME GOES HERE @V200899 01200000 DC C'DISK OBJ3705 TXTLIB A1' @V200899 01201000 FITEMP DC X'3C',C'FILEDEF ' @V200899 01202000 FITEMPNM DC CL9' ' DDNAME GOES HERE @V200899 01203000 DC C'DISK NCPTEMP LOADLIB A1 ( RECFM U BLOCK 260' @V200899 01204000 FISMOD DC X'3C',C'FILEDEF SYSLMOD DISK ' @V200899 01205000 FISMODNM DC CL9' ' PLUG LIBRARY NAME IN HERE @V200899 01206000 DC C'LOADLIB A1 ( RECFM U BLOCK 260' @V200899 01207000 LKEDCMS2 DC X'50',C'LKED ' @V200899 01208000 FNAME2 DC CL9' ' @V200899 01209000 DC C'( PRINT NOTERM ' @V200899 01210000 OPTION2 DC CL51' ' @V200899 01211000 STAKLKD3 DC A(4),A(LKEDCMSC) @VA10299 01211060 LKEDCMSC DS 0C @VA10299 01211120 DC X'28',C'FILEDEF OBJ3705 DISK ' @VA10299 01211180 OBJ3NM DC C' ' NCP NAME @VA10299 01211240 DC C' TXTLIB A1' @VA10299 01211300 DC X'29',C'FILEDEF SYSPUNCH DISK ' @VA10299 01211360 PCH3NM DC C' ' ASM3705 OBJ FILE @VA10299 01211420 DC C' TXTLIB A1' @VA10299 01211480 DC X'3B',C'FILEDEF SYSLMOD DISK ' @VA10299 01211540 LDM3NM DC C' ' SYSLMOD DSN @VA10299 01211600 DC C' LOADLIB A1 (RECFM U BLOCK 260' @VA10299 01211660 LKEDCMS3 DC X'50',C'LKED ' @VA10299 01211720 FNAME3 DC CL9' ' @VA10299 01211780 DC C'( PRINT NOTERM ' @VA10299 01211840 OPTION3 DC CL51' ' @VA10299 01211900 * 01212000 * SAVE NCP COMMANDS 01213000 * 01214000 SPACE 1 01215000 ENDCMD DC A(1),A(SAVE3705) INIT. STG2 SAVE CMD'S @V200899 01216000 SAVE3705 DC X'21',C'SAVENCP ' SAVENCP CMD @V200899 01217000 SVNCPNAM DC C' ' NCP SAVE NAME @V200899 01218000 DC C' ( ENTRY ' OPTIONS @V200899 01219000 ENTRYNAM DC C' ' NAME OF MODULE ENTRY POINT @V200899 01220000 EJECT 01221000 *********************************************************************** 01222000 * 01223000 * FOLLOWING ARE A NUMBER OF SUB-ROUTINES 01224000 * 01225000 *********************************************************************** 01226000 SPACE 3 01227000 * 01228000 * EDIT INPUT RECORDS FOR KEYWORD 01229000 * ENTRY: 01230000 * R2 ADDR OF KEYWORD DEFINITION 01231000 * 01232000 * WORK REG'S 01233000 * R3 WORK REG. 01234000 * R4 WORK REG. 01235000 * R5 WORK REG. 01236000 * R6 WORK REG. 01237000 * EXIT: 01238000 * R2 ADDR OF KEYWORD 01239000 * R3 POINTS TO FIRST CHARACTER OF KEYWORD IN INPUT 01240000 * 01241000 EDITIN DS 0H @V200899 01242000 USING DEDIT,R2 @V200899 01243000 LA R3,INPUT LOAD ADDR OF INPUT REC @V200899 01244000 LH R4,EDITMAX LOAD MAX. NU. BYTES TO EDIT @V200899 01245000 LH R5,EDITFLDL LOAD LNTH OF KEYWORD @V200899 01246000 LA R6,EDITFLD LOAD ADDR OF KEYWORD @V200899 01247000 DROP R2 @V200899 01248000 BCTR R5,0 DEC. LNTH BY 1 FOR EXECUTE @V200899 01249000 EDITLOOP DS 0H @V200899 01250000 EX R5,EDITTEST EXECUTE COMPARE OF KEYWORD AND @V200899 01251000 * INPUT 01252000 BE FIND(R14) EXIT IF KEYWORD FOUND @V200899 01253000 LA R3,1(R3) MOVE OVER 1 BYTE IN INPUT @V200899 01254000 BCT R4,EDITLOOP DEC. MAX. LNTH OF SCAN - IS IT @V200899 01255000 * = 0 01256000 B NOFIND(R14) RETURN NOT FOUND @V200899 01257000 * 01258000 EDITTEST CLC 0(0,R3),0(R6) COMPARE KEYWORD & INPUT @V200899 01259000 * 01260000 FIND EQU X'00' FOUND RETURN DISP. @V200899 01261000 NOFIND EQU X'04' NOT FOUND RETURN DISP. @V200899 01262000 EJECT 01263000 * 01264000 * EDIT DSN AND IF DSN ENDS WITH '(' THEN MEMBER 01265000 * CAN NO EXCEDE 8 CHARACTER'S 01266000 * 01267000 * ENTRY/EXIT: 01268000 * R2 ADDR OF FIELD TO REC. THE DSN 01269000 * R3 ADDR OF START OF DSN 01270000 * 01271000 * WORK REG'S: 01272000 * R4 WORK REG. 01273000 * R5 WORK REG. 01274000 * R6 WORK REG. 01275000 * R7 WORK REG. 01276000 * 01277000 DSNEDIT DS 0H @V200899 01278000 LR R4,R2 INIT. R4 @V200899 01279000 LR R5,R3 INIT. R5 @V200899 01280000 MVC 0(8,R4),BLANKS BLANK REC. FIELD @V200899 01281000 LA R6,20 MAX. LNTH OF DSN @V200899 01282000 MVC SYSPCHSV+1(1),0(R5) SAVE 1ST CHAR. @V200899 01283000 LA R7,SYSPCHSV+2 POINT TO NEXT CHAR. @V200899 01284000 DSNEDIT1 DS 0H @V200899 01285000 LA R5,1(R5) MOVE TO NEXT DSN BYTE @V200899 01286000 CLI 0(R5),C'(' TEXT FOR MEMBER NAME @V200899 01287000 BE MEMEDIT BR IF YES - @V200899 01288000 CLI 0(R5),C',' TEST END OF DSN @V200899 01289000 BE DSNEDIT2 BR IF YES @V200899 01290000 CLI 0(R5),C' ' TEST END OF DSN @V200899 01291000 BE DSNEDIT2 BR IF YES @V200899 01292000 MVC 0(1,R7),0(R5) SAVE THE CHARACTER @V200899 01293000 LA R7,1(,R7) BUMP THE POINTER @V200899 01294000 BCT R6,DSNEDIT1 HHAS MAX. BEEN REACHED - BR IF NO@V200899 01295000 B 4(R14) ERROR RETURN @V200899 01296000 DSNEDIT2 DS 0H @V200899 01297000 BR R14 RETURN @V200899 01298000 * 01299000 * EDIT MEMBER NAME 01300000 * 01301000 MEMEDIT DS 0H @V200899 01302000 STC R6,SYSPCHSV SAVE REMAINING COUNT @V200899 01303000 LA R5,1(R5) MOVE POINTER PASSED '(' @V200899 01304000 LA R6,L'ASMMEM EST. MAX. LNTH OF MEMBER NAME @V200899 01305000 MEMEDIT1 DS 0H @V200899 01306000 MVC 0(1,R4),0(R5) MOVE MEMBER NAME 1 BYTE AT A TIME@V200899 01307000 LA R4,1(R4) MOVE TO NXT BYTE TO REC. NAME @V200899 01308000 LA R5,1(R5) MOVE TO NXT BYTE OF MEM. NAME @V200899 01309000 CLI 0(R5),C')' END OF MEMBER NAME @V200899 01310000 BE 0(R14) BR IF YES @V200899 01311000 BCT R6,MEMEDIT1 HAS MAX. BEEN REACHED @V200899 01312000 B 4(R14) ERROR RETURN @V200899 01313000 BR R14 RETURN @V200899 01314000 EJECT 01315000 * 01316000 * SET POINTER IN R3 TO START OF DATASET NAME 01317000 * 01318000 FNDDSN DS 0H @V200899 01319000 LA R2,DSN LOCATE CHARS. 'DSN' @V200899 01320000 BAL R14,EDITIN . . . @V200899 01321000 B FNDDSN1 FOUND IT @V200899 01322000 B 4(R7) NOT FOUND - ERROR @V200899 01323000 FNDDSN1 DS 0H @V200899 01324000 CLC DSNEQU,0(R3) IS IT 'DSN='? @V200899 01325000 B FNDDSN2 YES - OK @V200899 01326000 CLC DSNAME,0(R3) NOPE - IS IT 'DSNAME='? @V200899 01327000 BNE 4(R7) NO - TAKE ERROR RTN PATH @V200899 01328000 LA R3,3(,R3) YES - STEP AROUND THE KEYWORD @V200899 01329000 FNDDSN2 DS 0H @V200899 01330000 LA R3,4(,R3) . . . @V200899 01331000 BR R10 RETURN @V200899 01332000 SPACE 5 01333000 * 01334000 * READ THE FILE DEFINED BY THE FSCB 01335000 * ENTRY/EXIT: 01336000 * R2 ADDR OF THE FSCB TO BE USED FOR THE READ 01337000 * 01338000 * WORK REG'S: 01339000 * R1 01340000 * R15 01341000 * 01342000 FSCBRD DS 0H @V200899 01343000 ST R14,FSCBRDSV SAVE RETURN ADDR @V200899 01344000 TM SWINFILE,EOF HAS EOF BEEN REACHED ON INPUT @V200899 01345000 * FILE 01346000 BO ENDRTCD(R14) EOF RETURN @V200899 01347000 FSREAD FSCB=(R2),ERROR=FSCBRDER @V200899 01348000 B NORM(R14) @V200899 01349000 FSCBRDER DS 0H @V200899 01350000 CH R15,ENDCODE IS ERROR CODE = EOF @V200899 01351000 BNE FSCBRDR1 BR IF NO ERROR @V200899 01352000 OI SWINFILE,EOF TURN INPUT FILE EOF ON @V200899 01353000 B ENDRTCD(R14) EOF RETURN @V200899 01354000 FSCBRDR1 DS 0H @V200899 01355000 ST R15,SVREG15 SAVE RETURN CODE @V200899 01356000 CH R15,INVFORM IS THE FORMAT INVALID @V200899 01357000 BE FSCBRDR2 BR IF YES @V200899 01358000 CH R15,INVLNTH IS THE RECORD LNTH INVALID @V200899 01359000 BNE ERROR(R14) BR IF NO @V200899 01360000 FSCBRDR2 DS 0H @V200899 01361000 LA R2,DMSGRN07 ADDR OF INVALID RECORD @V200899 01362000 * FORMAT/LENGTH 01363000 BAL R14,GENMSG @V200899 01364000 L R14,FSCBRDSV LOAD RETURN ADDR @V200899 01365000 B ERROR(R14) ERROR RETURN @V200899 01366000 * 01367000 FSCBRDSV DC F'0' @V200899 01368000 * 01369000 INVFORM DC H'07' INVALID FORMAT @V200899 01370000 INVLNTH DC H'08' INCORRECT LENGTH @V200899 01371000 ENDCODE DC H'12' EOF ERROR RETURN CODE @V200899 01372000 INVMODE DC H'24' INVALID MODE @V200899 01373000 * 01374000 NORM EQU X'00' NORMAL RETURN @V200899 01375000 ENDRTCD EQU X'04' EOF RETURN @V200899 01376000 ERROR EQU X'08' ERROR RETURN @V200899 01377000 SWINFILE DC X'00' INPUT FILE CONTROL SW'S @V200899 01378000 EOF EQU X'01' EOF ON IN INPUT FILE SW. @V200899 01379000 EJECT 01380000 * 01381000 * BUILD & OPEN AN FSCB & THEN WRITE TO THE FILE. TEST NEW FILE 01382000 * VIA THE FSSTATE MACRO. 01383000 * 01384000 * ALL OUTPUT RECORDS ARE IN THE INPUT FIELD 01385000 * 01386000 * 01387000 FSCBWT DS 0H @V200899 01388000 ST R14,FSCBWTSV SAVE RETURN ADDR @V200899 01389000 LA R3,OUTFSCB ADDR OF OUTPUT FSCB @V200899 01390000 TM SWFILE,OLD TEXT IF FILE IS OPEN @V200899 01391000 BO FSCBWT40 BR IF YES - FSCB ALREADY BUILT & @V200899 01392000 * OPEN. 01393000 USING DFSCB,R3 @V200899 01394000 MVC OUTFSCB(L'ASMFSCB),DUMMYFCB MOVE SKELTON FSCB TO@V200899 01395000 MVC FSCBFN,STG1NAME UPDATE FILE NAME IN FSCB @V200899 01396000 LA R4,FSCBFN ADDR OF OUTPUT FILE NAME @V200899 01397000 AH R4,NAMELNG ADDR THE LNTH OF THE NAME @V200899 01398000 CLC FSCBFT,TEXT IS FILE TYPE TEXT @V200899 01399000 BE FSCBWT04 BR IF YES @V200899 01400000 UNPK 0(2,R4),IFKCNT UNPACK IFKASM CNT IN TO NAME @V200899 01401000 AP IFKCNT,DECONE ADD 1 TO CNT @V200899 01402000 B FSCBWT06 @V200899 01403000 FSCBWT04 DS 0H @V200899 01404000 MVI 0(R4),C'L' PUT AN 'L' INTO NCP NAME @V200899 01405000 UNPK 1(1,R4),IEWLCNT UNPACK CNT INTO NAME @V200899 01406000 AP IEWLCNT,DECONE ADD 1 TO CNT @V200899 01407000 FSCBWT06 DS 0H @V200899 01408000 OI 1(R4),X'F0' INSURE LAST BYTE IS NUMERIC @V200899 01409000 FSCBWT10 DS 0H @V200899 01410000 FSSTATE FSCB=(R3) @V200899 01411000 CH R15,NOFILE TEST ERROR RETURN FOR NOT FOUND @V200899 01412000 BE FSCBWT32 BR IF EQU - NO FILE @V200899 01413000 B FSCBWT30 @V200899 01414000 FSCBWT30 DS 0H @V200899 01415000 FSERASE FSCB=(R3) @V200899 01416000 CH R15,ERASERR ERROR DURING ERASE @V200899 01417000 BE FSCBWTER BR IF YES @V200899 01418000 FSCBWT32 DS 0H @V200899 01419000 OI SWFILE,OLD SET FILE OPEN/OLD @V200899 01420000 DROP R3 @V200899 01421000 FSCBWT40 DS 0H @V200899 01422000 FSWRITE FSCB=(R3),ERROR=FSCBWTER @V200899 01423000 L R14,FSCBWTSV RESTORE RETURN ADDR @V200899 01424000 BR R14 NORMAL RETURN @V200899 01425000 FSCBWTER DS 0H @V200899 01426000 ST R15,SVREG15 SAVE ERROR CODE @V200899 01427000 L R14,FSCBWTSV RESTORE RETURN ADDR @V200899 01428000 B WTERROR(R14) ERROR RETURN @V200899 01429000 * 01430000 FSCBWTSV DC F'0' @V200899 01431000 NOFILE DC H'28' FILE NOT FOUND @V200899 01432000 ERASERR DC H'24' ERASE PARAMETER LIST ERROR @V200899 01433000 * 01434000 SWFILE DC X'00' SW. FOR ASSEMBLER OUTPUT FILES @V200899 01435000 OLD EQU X'01' SET FILE TO OPEN/OLD @V200899 01436000 * 01437000 WTERROR EQU X'04' RETYRN ERROR DISP. @V200899 01438000 SPACE 2 01439000 * 01440000 * CLOSE CURRENT ASSEMBLE FILE - IGNOR ANY CLOSE ERROR'S 01441000 * 01442000 * WORK REG'S: 01443000 * R1 WORK REG. 01444000 * R2 WORK REG. 01445000 * R3 WORK REG. 01446000 * R15 WORK REG. 01447000 * 01448000 FSCBCLOS DS 0H @V200899 01449000 TM SWFILE,OLD IS FILE OPEN @V200899 01450000 BZ 0(R14) BR IF NO - NOT NECES. TO CLOSE @V200899 01451000 ST R14,FSCBCLSV SAVE RETURN ADDR @V200899 01452000 LA R3,OUTFSCB ADDR OF ASM OUTPUT FSCB @V200899 01453000 FSCLOSE FSCB=(R3) @V200899 01454000 NI SWFILE,FF-OLD SET SW. NEW/CLOSED @V200899 01455000 L R14,FSCBCLSV RESTORE RETURN ADDR @V200899 01456000 BR R14 RETURN @V200899 01457000 * 01458000 SPACE 1 01459000 FSCBCLSV DC F'0' @V200899 01460000 EJECT 01461000 *********************************************************************** 01462000 * 01463000 * WRITE COMMAND TO STG2 EXEC PROC FILE 01464000 * 01465000 *********************************************************************** 01466000 PROCWT DS 0H @V200899 01467000 ST R14,PROCWTSV SAVE RETURN ADDR @V200899 01468000 TM PROCSW1,PROCOPEN HAS FILE BEEN OPENED @V200899 01469000 BO PROCWT10 BR IF YES @V200899 01470000 LA R3,PROC ADDR OF EXEC PROC FSCB @V200899 01471000 LA R4,INPFSCB ADDR OF INPUT FSCB @V200899 01472000 MVC 8(8,R3),8(R4) MOVE INPUT FILE NAME TO EXEC PROC@V200899 01473000 FSERASE FSCB=PROC @V200899 01474000 CH R15,ERASERR ERASE PARAMETER LIST ERROR @V200899 01475000 BE PROCERR BR IF YES @V200899 01476000 OI PROCSW1,PROCOPEN SET SW. FILE OPEN @V200899 01477000 PROCWT10 DS 0H @V200899 01478000 MVI PROCBUF,C' ' BLANK PROC OUTPUT BUFFER @V200899 01479000 MVC PROCBUF+1(L'PROCBUF-1),PROCBUF @V200899 01480000 SR R1,R1 ZERO REG @V200899 01481000 IC R1,0(R2) LOAD LNTH OF OUTPUT CMD @V200899 01482000 BCTR R1,R0 SUBT. 1 @V200899 01483000 EX R1,CMDMOVE EXECUTE MOVE CMD-CMD @V200899 01484000 FSWRITE FSCB=PROC,ERROR=PROCERR @V200899 01485000 L R14,PROCWTSV LOAD RETURN ADDR @V200899 01486000 BR R14 RETURN @V200899 01487000 PROCERR DS 0H @V200899 01488000 ST R15,SVREG15 SAVE RETURN CODE @V200899 01489000 L R14,PROCWTSV LOAD RETURN ADDR @V200899 01490000 B WTERROR(R14) PROC. WRITE ERROR RETURN @V200899 01491000 * 01492000 SPACE 1 01493000 PROCWTSV DC F'00' @V200899 01494000 * 01495000 CMDMOVE MVC PROCBUF(0),1(R2) MOVE PROC OUTPUT CMD TO OUTPUT @V200899 01496000 * 01497000 PROCBUF DC CL80' ' PROC WRITE OUTPUT AREA @V200899 01498000 EJECT 01499000 * 01500000 * CLOSE THE STG2 EXEC PROC 01501000 * 01502000 PROCEND DS 0H @V200899 01503000 ST R14,PROCNDSV SAVE RETURN ADDRESS @V200899 01504000 TM PROCSW1,PROCOPEN IS THE EXEC PROC OPEN @V200899 01505000 BCR 8,R14 BR IF NO - NOT OPEN WHY CLOSE IT @V200899 01506000 PROCNDXT DS 0H @V200899 01507000 NI PROCSW1,FF-PROCOPEN TURN OFF OPEN SW @V200899 01508000 FSCLOSE FSCB=PROC @V200899 01509000 L R14,PROCNDSV LOAD RETURN ADDRESS @V200899 01510000 BR R14 RETURN @V200899 01511000 * 01512000 SPACE 1 01513000 PROCNDSV DC F'0' @V200899 01514000 * 01515000 PROCSW1 DC X'00' SWITCHES PROC CONTROL @V200899 01516000 PROCOPEN EQU X'01' EXEC PROC OPEN/CLOSED @V200899 01517000 ASMFIRST EQU X'02' FIRST TIME THRU ASMSTAK @V200899 01518000 LKDFIRST EQU X'04' FIRST TIME THRU LKDSTAK @V200899 01519000 APOSTSW EQU X'08' SW. FOR APOSTROPHE IN LKED PARM= @V200899 01520000 LKD1 EQU X'10' FIRST 'LKED' PROCESSED @V200899 01521000 CKINCL EQU X'20' 2 NAMES REFERENCE SYS1.OBJ3705 @VM08696 01522000 NEWJCL EQU X'40' SINGLE LNKED STEP SWITCH @VA10299 01522500 * 01523000 FF EQU X'FF' MASK TO TURN SW'S OFF @V200899 01524000 EJECT 01525000 *********************************************************************** 01526000 * 01527000 * GENERATE ERROR MESSAGES 01528000 * 01529000 *********************************************************************** 01530000 SPACE 1 01531000 GENMSG DS 0H @V200899 01532000 ST R14,GENMSGSV SAVE RETURN ADDR @V200899 01533000 L R3,0(R2) LOAD VARIABLE ADDR @V200899 01534000 LH R4,4(R2) LOAD MSG NUMBER @V200899 01535000 LA R2,6(R2) ADDR OF MSG TEXT @V200899 01536000 DMSERR RENT=NO,TEXTA=(R2),SUB=(CHAR8A,(R3)),LET=E, @V200899X01537000 NUM=(R4) @V200899 01538000 L R14,GENMSGSV RETURN ADDR @V200899 01539000 BR R14 RETURN @V200899 01540000 * 01541000 SPACE 1 01542000 GENMSGSV DC F'0' @V200899 01543000 SPACE 2 01544000 * 01545000 * ERROR MESSAGES 01546000 DMSGRN54 DC A(0),AL2(54),AL1(GRN54L) @V200899 01547000 DC C'INCOMPLETE FILE ID SPECIFIED' @V200899 01548000 GRN54L EQU *-DMSGRN54-7 @V200899 01549000 SPACE 1 01550000 DMSGRN48 DC A(0),AL2(48),AL1(GRN48L) @V200899 01551000 DC C'INVALID MODE ''........''' @V200899 01552000 GRN48L EQU *-DMSGRN48-7 @V200899 01553000 SPACE 1 01554000 DMSGRN02 DC A(INPFSCB+8),AL2(02),AL1(GRN02L) @V200899 01555000 DC C'FILE ''..................'' NOT FOUND' @V200899 01556000 GRN02L EQU *-DMSGRN02-7 @V200899 01557000 SPACE 1 01558000 DMSGRN03 DC A(0),AL2(03),AL1(GRN03L) @V200899 01559000 DC C'INVALID OPTION ''........''' @V200899 01560000 GRN03L EQU *-DMSGRN03-7 @V200899 01561000 SPACE 1 01562000 DMSGRN07 DC A(INPFSCB+8),AL2(07),AL1(GRN07L) @V200899 01563000 DC C'FILE ''..................'' IS NOT FIXED,' @V200899 01564000 DC C'80 CHAR. RECORDS' @V200899 01565000 GRN07L EQU *-DMSGRN07-7 @V200899 01566000 SPACE 1 01567000 DMSGRN78 DC A(INPUT),AL2(78),AL1(GRN78L) @V200899 01568000 DC C'INVALID CARD IN INPUT FILE''',80C'.' @V200899 01569000 GRN78L EQU *-DMSGRN78-7 @V200899 01570000 EJECT 01571000 *********************************************************************** 01572000 * 01573000 * FSCB'S 01574000 * 01575000 *********************************************************************** 01576000 SPACE 1 01577000 INPFSCB FSCB ' ',BUFFER=INPUT,BSIZE=80 @V200899 01578000 SPACE 1 01579000 * 01580000 * ASSEMBLER OUTPUT FSCB 01581000 * 01582000 OUTFSCB FSCB 'DUMMY DUMMY A1',BUFFER=OUTPUT,BSIZE=80 @V200899 01583000 SPACE 1 01584000 * 01585000 * EXEC PROC FILE FSCB 01586000 * 01587000 PROC FSCB 'STG2 EXEC A1',BUFFER=PROCBUF,BSIZE=80 @V200899 01588000 SPACE 1 01589000 * 01590000 * SKELTON FSCB 01591000 * 01592000 DUMMYFCB FSCB 'DUMMY ASSEMBLE A1',BUFFER=OUTPUT,BSIZE=80 @V200899 01593000 EJECT 01594000 *********************************************************************** 01595000 * 01596000 * JCL, ASSEMBLE AND LINKAGE-EDITOR KEYWORDS AND CONTROLS 01597000 * 01598000 *********************************************************************** 01599000 SLASHS DS 0CL2 USED TO REF. 2 SLASHS @V200899 01600000 SLASH DC C'/' USED TO REF. 1 SLASH @V200899 01601000 SLASHAST DS 0CL2 USED TO REF. /* @V200899 01602000 DC C'/' SECOND/FIRST/ @V200899 01603000 DC C'*' @V200899 01604000 SYSPCH DC C'SYSPUNCH' SYSPUNCH KEYWORD @V200899 01605000 SYSIN DC C'SYSIN' SYSIN KEYWORD @V200899 01606000 DSNAME DC C'DSNAME=' DSNAME= KEYWORD @V200899 01607000 DSNEQU DC C'DSN=' DSN= KEYWORD @V200899 01608000 SYSPRINT DC C'SYSPRINT' SYSPRINT KEYWORD @V200899 01609000 SYSUT DC C'SYSUT' SYSUTX KEYWORD @V200899 01610000 SYSLIB DC C'SYSLIB' SYSLIB KEYWORD @V200899 01611000 SYSLIN DC C'SYSLIN' SYSLIN KEYWORD @V200899 01612000 SYSLMOD DC C'SYSLMOD' SYSLMOD KEYWORD @V200899 01613000 ASM3705 DC C'ASM3705 ' ASM3705 OUTPUT FILE TYPE @V200899 01614000 TEXT DC C'TEXT ' LKED TEXT OUTPUT FILE TYPE @V200899 01615000 ADD DC C'ADD' PARAMETER FOR TXTLIB CMD @V200899 01616000 BLANKS DC C' ' EIGHT BLANKS @V200899 01617000 FFS DC X'FFFFFFFFFFFFFFFF' FF'S @V200899 01618000 SPACE 2 01619000 *********************************************************************** 01620000 * 01621000 * COMMON EQUATES 01622000 * 01623000 *********************************************************************** 01624000 DATERR EQU X'04' DATA ERROR RETURN DISPLACEMENT @V200899 01625000 IOERRC EQU X'08' I/O ERROR RETURN DISPLACEMENT @V200899 01626000 SPACE 2 01627000 *********************************************************************** 01628000 * 01629000 * OPTION PARMATER LIST 01630000 * 01631000 *********************************************************************** 01632000 OPTLIST DS 0CL9 OPTION KEYWORD & LIST @V200899 01633000 RUN DC C'RUN ',X'00' @V200899 01634000 NORUN DC C'NORUN ',X'00' @V200899 01635000 SAVE DC C'SAVE ',X'00' @V200899 01636000 NOSAVE DC C'NOSAVE ',X'00' @V200899 01637000 DC C') ',X'00' @V200899 01638000 OPTLEND EQU * END OF OPTION LIST @V200899 01639000 EJECT 01640000 *********************************************************************** 01641000 * 01642000 * RUN EXEC LIST 01643000 * 01644000 *********************************************************************** 01645000 EXECRUN DS 0D @V200899 01646000 DC CL8'ATTN' @V200899 01647000 DC CL4'LIFO' @V200899 01648000 DC AL1(16) LENGTH @V200899 01649000 DC AL3(EXECMD) @V200899 01650000 DC 8X'FF' @V200899 01651000 EXECMD DC CL8'EXEC' @V200899 01652000 RUNLIST DC D'0' EXEC PROC MACRO NAME @V200899 01653000 * 01654000 *********************************************************************** 01655000 * 01656000 * KEYWORDS WITH EDIT CONTROL 01657000 * 01658000 *********************************************************************** 01659000 LNGR DC A(OBJNM1) @VM08696 01660000 SHRTR DC A(OBJNM2) @VM08696 01661000 COMMA DC H'71',H'01',C',' COMMA KEYWORD @V200899 01662000 SPACE 1 01663000 DSN DC H'60',H'03',C'DSN' DSN KEYWORD @V200899 01664000 SPACE 1 @VA10299 01664300 SYS1 DC H'60',H'05',C'SYS1.' SYS1 KEYWORD @VA10299 01664600 SPACE 1 01665000 EXEC DC H'60',H'06',C' EXEC ' EXEC KEYWORD @V200899 01666000 SPACE 1 01667000 PGMIEWL DC H'60',H'09',C' PGM=IEWL' IEWL KEYWORD @V200899 01668000 SPACE 1 01669000 PGMIFKAM DC H'60',H'11',C' PGM=IFKASM' IFKASM KEYWORD @V200899 01670000 SPACE 1 01671000 PGMCWAXF DC H'60',H'11',C' PGM=CWAX00' CWAX00 KEYWORD @VA04257 01672000 SPACE 1 01673000 ENTRY DC H'60',H'07',C' ENTRY ' ENTRY KEYWORD @V200899 01674000 SPACE 1 01675000 PARM DC H'70',H'05',C'PARM=' LKED PARM= KEYWORD @V200899 01676000 SPACE 1 01677000 OBJ3705 DC H'70',H'12',C'SYS1.OBJ3705' SPEC. DSN @V200899 01678000 SPACE 01679000 OBJNM1 DC H'70',H'0',CL9' ' @VM08696 01680000 SPACE 01681000 OBJNM2 DC H'70',H'0',CL9' ' @VM08696 01682000 SPACE 01683000 INCLUDE DC H'70',H'8',CL8'INCLUDE' @VM08696 01684000 EJECT 01685000 *********************************************************************** 01686000 * 01687000 * ASSEMBLE AND LINKAGE-EDITOR CONTROL LISTS 01688000 * 01689000 *********************************************************************** 01690000 ASMMEM DC C' ' SYSPUNCH MEMBER NAME @V200899 01691000 * 01692000 STG1NAME DC C' ' INPUT NCP NAME @V200899 01693000 * 01694000 SYSPCHSV DC X'00',CL20' ' SAVE SYSPUNCH DSN AND LENGTH @V200899 01695000 NAMELNG DC H'0000' LENGTH OF NAME - NOT TO EXCEED 6 @V200899 01696000 IFKCNT DC P'00' ASM3705 CNT @V200899 01697000 IEWLCNT DC P'0' LKED CNT @V200899 01698000 DECONE DC P'1' DEC 1 USED TO BUMP CNT'S @V200899 01699000 EJECT 01700000 *********************************************************************** 01701000 * 01702000 * INPUT/OUTPUT AREAS 01703000 * 01704000 *********************************************************************** 01705000 INPUT DS 0CL80 OUTPUT AND INPUT THE SAME FIELD @V200899 01706000 OUTPUT DC CL80' ' INPUT FROM NCP SYSGEN FILE @V200899 01707000 * 01708000 TERMIN DC CL130' ' TERMINAL INPUT FIELD @V200899 01709000 * 01710000 EJECT 01711000 LTORG @V200899 01712000 EJECT 01713000 *********************************************************************** 01714000 * 01715000 * DSECT FOR INPUT SAVE AREA 01716000 * 01717000 *********************************************************************** 01718000 SAVEAREA DSECT @V200899 01719000 SAVEREGS DS 0F SAVE INPUT REG'S @V200899 01720000 SVREG14 DS F REG 14 SAVE @V200899 01721000 SVREG15 DS F REG 15 SAVE @V200899 01722000 SVREG0 DS F REG 0 SAVE @V200899 01723000 SVREG1 DS F REG 1 SAVE @V200899 01724000 DS 20F 20 FULLWORDS OF SAVE AREA @V200899 01725000 SPACE 2 01726000 ASMFSCB DS 0CL44 FSCB FOR ASSEMBLER OUTPUT FILE @V200899 01727000 DFSCB @V200899 01728000 SPACE 2 01729000 *********************************************************************** 01730000 * 01731000 * DSECT FOR EDIT INPUT KEYWORD & EDIT CONTROL 01732000 * 01733000 *********************************************************************** 01734000 DEDIT DSECT @V200899 01735000 EDITMAX DS H MAX. NO. OF CHAR TO SCAN IN INPUT@V200899 01736000 EDITFLDL DS H LNTH OF KEYWORD FIELD @V200899 01737000 EDITFLD DS C KEYWORD @V200899 01738000 SPACE 2 01739000 *********************************************************************** 01740000 * 01741000 * DSECT FOR INPUT PARAMETER LIST 01742000 * 01743000 *********************************************************************** 01744000 PARMLIST DSECT @V200899 01745000 DS 0D ALIGNMENT @V200899 01746000 INFENTRY DS D ENTRY ADDR @V200899 01747000 INFNAME DS D FILE NAME @V200899 01748000 INFTYPE DS D FILE TYPE @V200899 01749000 INFMODE DS D FILE MODE @V200899 01750000 INOPT DS D INPUT OPTION @V200899 01751000 END DMSGRN 01752000