ibm:vm370-lib:cms:dmsgrn.assemble_src
Table of Contents
DMSGRN Source
References
- Fixes Applied : 3
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [R13288DS]
Source Listing
- DMSGRN.ASSEMBLE.txt
- 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
ibm/vm370-lib/cms/dmsgrn.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator