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