home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
archives
/
ibm370.zip
/
ikxtrn.asm
< prev
next >
Wrap
Assembly Source File
|
1992-09-30
|
40KB
|
493 lines
*********************************************************************** 00001000
* * 00002000
* VSE KERMIT UPDATE CONVERTOR * 00003000
* * 00004000
* Author: Jeff Huestis, Washington University Libraries * 00005000
* * 00006000
* Purpose: Read sequential file of updates in GUPI format and * 00007000
* submit a job via POWER to update Kermit sources. * 00008000
* * 00009000
* Method: Read update file from SYSIPT and create LIBR control * 00010000
* sequences for individual library members based on a table * 00011000
* of starting sequence numbers for the Kermit source. Write * 00012000
* the output to SYSPCH along with LIBR directives for copying * 00013000
* the Kermit source library members to a work library. The * 00014000
* updates are then applied to the work library. Any errors * 00015000
* are noted on SYSLST for the conversion process. Bad syntax * 00016000
* in the input file will cause the program to abort. * 00017000
* * 00018000
* IKXTRN parameters are entered is the first lines in the input * 00019000
* file. Parameter lines are recognized by a keyword or all * 00020000
* numeric string in columns 1 through 8, and "=" in column 9. * 00021000
* * 00022000
* REQUIRED Parameters: * 00023000
* 1. BASELIBR= specify a 'library.sublibrary' string indicating where* 00024000
* unmodified KERMIT source is kept. * 00025000
* 2. WORKLIBR= specify a 'library.sublibrary' string for the library * 00026000
* where modified, working copies of KERMIT source are to be kept. * 00027000
* 3. LOCALLST= specify the text you want for the * $$ LST card for * 00028000
* the job which IKXTRN will punch to the POWER internal reader. * 00029000
* * 00030000
* OPTIONAL Parameters: * 00031000
* 4. LOCALSLI= parameter is optional. Use it to specify the name of * 00032000
* a library member containing label information not in the * 00033000
* standard label area. This member will be copied into the * 00034000
* generated job by a POWER SLI statement. The generated SLI will * 00035000
* use the "MEM=" format, so the member name qualifier should be * 00036000
* included. Example: LOCALSLI=KERMSLIS.P * 00037000
* 5. nnnnnnnn= Future releases of CICS Kermit (or local re-packaging)* 00038000
* may alter the sequence of module names included in the table * 00039000
* starting at label STARTNUM. For this reason, it is possible to * 00040000
* replace this table with a series of lines giving the starting * 00041000
* line number for each module in columns 1 through 8 and the name * 00042000
* of the module in the 12 columns from column 10 onwards. If this* 00043000
* option is used, the entire table must be replaced, and the * 00044000
* parameter cards must be in ascending order by line sequence #. * 00045000
* * 00046000
* Update history: * 00047000
* 1.0 - 1991 January - Implementation complete, except for the * 00048000
* resequence command "./ S". * 00049000
* 1.1 - 1991 January - Updated by Jeff Huestis and John Chandler. * 00050000
* Libraries specified via PARM * 00051000
* 1.2 - 1991 March - Updated by Jeff Huestis. * 00052000
* Libraries and other parameters specified * 00053000
* via SYSIPT. * 00054000
* 1.3 - 1991 July - Updated by John Chandler. * 00054300
* Input line number in error messages. * 00054600
* 1.4 - 1992 May - Updated by John Chandler. Ignore blank lines* 00054800
* * 00055000
*********************************************************************** 00056000
* 00057000
* REGISTER EQUATES 00058000
R0 EQU 0 00059000
R1 EQU 1 00060000
R2 EQU 2 00061000
R3 EQU 3 00062000
R4 EQU 4 00063000
R5 EQU 5 00064000
R6 EQU 6 00065000
R7 EQU 7 00066000
R8 EQU 8 00067000
R9 EQU 9 00068000
R10 EQU 10 00069000
R11 EQU 11 00070000
R12 EQU 12 00071000
R13 EQU 13 00072000
R14 EQU 14 00073000
R15 EQU 15 00074000
* 00075000
IKXTRN CSECT 00076000
BALR 12,0 STANDARD ENTRY LINKAGE 00077000
USING *,12 00078000
LA 13,REGSAVE 00079000
B A000 BRANCH AROUND PROGRAM ID & SAVE AREA 00080000
PGRMNAM DC CL8'IKXTRN' PROGRAM NAME 00081000
DC PL2'1,4' VERSION/LEVEL 00082000
REGSAVE DS 9D REGISTER SAVE AREA 00083000
* 00084000
*********************************************************************** 00085000
* PROCESS PARM DATA 00086000
*********************************************************************** 00087000
A000 EQU * 00088000
XC NRECBL,NRECBL Initialize blank count 00088200
XC NRECIN,NRECIN Initialize input count 00088500
OPEN LIST,INPFILE,OUTFILE OPEN FILES 00089000
MVC MESSLINE(35),=C'FILES OPENED; PARAMETER CARDS READ:' 00090000
PUT LIST,MESSAGE 00091000
L R4,=A(STARTNUM) POINT TO START OF MODULE TABLE 00092000
USING STARTNUM,R4 00093000
LA R5,MODCOUNT GET DEFAULT MODULE COUNT 00094000
STH R5,NUMMOD AND STORE WHERE IT COUNTS 00095000
LA R5,STARTEND GET POINTER TO LAST MODULE OF DEFAULT 00096000
ST R5,LSTMOD AND STORE IT FOR POSSIBLE CHANGE 00097000
XR R5,R5 INITIALIZE MODULE NAME COUNTER 00098000
NEXTPARM EQU * 00099000
LA 0,1 00099200
A 0,NRECIN 00099400
ST 0,NRECIN Count input records 00099600
GET INPFILE GET ANOTHER INPUT CARD 00100000
CLC =C'./ ',INRECORD ARE WE DONE WITH PARM CARDS? 00101000
BE JCLPROC YES, GO PROCESS JCL TABLE 00102000
MVC MESSLINE(80),INRECORD NO, ECHO INPUT TO SYSLST 00103000
PUT LIST,MESSAGE 00104000
CLC BLANKS(72),INRECORD Blank card? 00104100
BNE NEXTPAR1 No, assume it's a parm card 00104200
LA 0,1 Yes, skip it entirely 00104300
A 0,NRECBL 00104400
ST 0,NRECBL But count blank records 00104500
B NEXTPARM Go get another record 00104600
NEXTPAR1 DS 0H 00104700
CLI INRECORD+8,C'=' DO WE HAVE A VALID CARD? 00105000
BNE PARMEXIT No, assume we're done with parms 00106000
CLC =C'BASELIBR',INRECORD SEE IF THIS IS BASE LIBRARY 00107000
BNE NOTBASE NO, TRY SOMETHING ELSE 00108000
MVC CONNECT+18(16),INRECORD+9 YES, MOVE IT INTO JCL TABLE 00109000
OI LIBFLAG,X'01' INDICATE IT WAS FOUND 00110000
B NEXTPARM GO READ ANOTHER CARD 00111000
NOTBASE EQU * 00112000
CLC =C'WORKLIBR',INRECORD SEE IF THIS IS WORK LIBRARY 00113000
BNE NOTWORK NO, TRY SOMETHING ELSE 00114000
MVC CONNECT+35(16),INRECORD+9 YES, MOVE IT INTO JCL TABLE 00115000
MVC ACCESS+17(16),INRECORD+9 IN TWO PLACES 00116000
OI LIBFLAG,X'02' INDICATE IT WAS FOUND 00117000
B NEXTPARM GO READ ANOTHER CARD 00118000
NOTWORK EQU * 00119000
CLC =C'LOCALSLI',INRECORD IS THERE A POWER SLI CARD? 00120000
BNE NOTSLI NO, TRY SOMETHING ELSE 00121000
MVC SLI(13),=C'* $$ SLI MEM=' YES, CHANGE COMMENT TO SLI 00122000
MVC SLI+13(17),INRECORD+9 AND PUT IN MEMBER NAME 00123000
B NEXTPARM GO READ ANOTHER CARD 00124000
NOTSLI EQU * 00125000
CLC =C'LOCALLST',INRECORD IS THIS THE LOCAL LST CARD? 00126000
BNE NOTLST NO, GO LOOK FOR MODNAMES 00127000
MVC LSTCARD+9(JOBMX-9),INRECORD+9 YES, MOVE LST DATA 00128000
OI LIBFLAG,X'04' INDICATE LST FOUND 00129000
B NEXTPARM GO READ ANOTHER CARD 00130000
NOTLST EQU * 00131000
LA R3,INRECORD OTHER POSSIBILITIES EXHAUSTED, THIS 00132000
LR R2,R3 BETTER BE A MODULE CARD 00133000
BAL R14,DIGITVER SO CHECK FOR START NUMBER 00134000
SR R2,R3 00135000
CH R2,=H'8' LENGTH 8 => PROPER NUMERIC STRING 00136000
BNE NOPARM NOPE 00137000
MVC STARTNUM,INRECORD OKAY, MOVE START # TO TABLE 00138000
MVC MODNAME,INRECORD+9 MOVE NAME TO TABLE 00139000
LA R4,STTBLLEN(,R4) POINT TO NEXT TABLE ENTRY 00140000
ST R4,LSTMOD UPDATE LAST-MODULE POINTER 00141000
LA R5,1(,R5) INCREMENT MODULE COUNTER 00142000
B NEXTPARM 00143000
DROP R4 00144000
*********************************************************************** 00145000
* COPY JCL TABLE LINES TO SYSPCH 00146000
*********************************************************************** 00147000
PARMEXIT DS 0H 00147200
MVI MESSLINE,C' ' Clear message buffer 00147260
MVC MESSLINE+1(79),MESSLINE 00147320
MVC MESSLINE(49),=C'PRECEDING INVALID CARD TERMINATES PARM P$00147400
ROCESSING' 00147600
PUT LIST,MESSAGE 00147800
JCLPROC EQU * 00148000
TM LIBFLAG,X'07' DID WE GET THE REQUIRED PARAMETERS? 00149000
BNO NOPARM NO, GO ABORT 00150000
MVC OUTREC,BLANKS Clear output buffer 00151000
LA R3,JOBCARDS Start of JCL table 00152000
LTR R5,R5 DID WE HAVE ANY MODULE CARDS IN DECK? 00153000
BZ JCLLOOP NO; LEAVE DEFAULT 00154000
STH R5,NUMMOD YES; ADJUST COUNT 00155000
JCLLOOP EQU * 00156000
MVC OUTREC(JOBMX),0(R3) Copy a line to output 00157000
CLC COPIES,OUTREC Reached list of COPY directives? 00158000
BNE JCLWRITE No, just write the record 00159000
* Fill in names of modules in COPY directives 00160000
L R2,=A(STARTNUM) Start of module table 00161000
LH R5,NUMMOD Length of table (in entries) 00162000
JCLLP1 DS 0H 00163000
MVC OUTREC+8(12),8(R2) Copy module name 00164000
LA R4,OUTREC+8 Start of name 00165000
LA R4,1(,R4) 00166000
CLI 0(R4),C' ' Look for end of name 00167000
BNE *-8 00168000
MVC 1(20,R4),=CL20'REPLACE=YES' 00169000
PUT OUTFILE 00170000
LA R2,STTBLLEN(,R2) 00171000
BCT R5,JCLLP1 00172000
B JCLLP2 Finished COPY directives 00173000
JCLWRITE DS 0H 00174000
PUT OUTFILE PUNCH IT OUT 00175000
JCLLP2 DS 0H 00176000
LA R3,JOBMX(,R3) Point to next line 00177000
CLC =C'EOD',0(R3) CHECK FOR END OF TABLE 00178000
BNE JCLLOOP Not yet, keep copying 00179000
B PROCESS Go process first update card 00180000
* 00181000
*********************************************************************** 00182000
* PROCESS UPDATE LINES 00183000
*********************************************************************** 00184000
SKIPBLNK LA 0,1 00184200
A 0,NRECBL 00184400
ST 0,NRECBL Count blank records 00184600
* Main loop - read a control card 00185000
CTLP DS 0H 00186000
LA 0,1 00186200
A 0,NRECIN 00186400
ST 0,NRECIN Count input records 00186600
GET INPFILE READ NEXT LINE 00187000
CLC BLANKS(72),INRECORD Blank card? 00187300
BE SKIPBLNK Yes, skip it 00187600
CLC =C'./ ',INRECORD Control card? 00188000
BNE BADDECK No, too bad 00189000
* 00190000
* Process an editing card 00191000
PROCESS EQU * 00192000
LA R2,INRECORD+3 Start after control indicator 00193000
LA R8,SYNTAX Error handler for running off end 00194000
BAL R14,BLNKSKIP Find command code 00195000
MVC CMD,0(R2) Save code 00196000
CLI 1(R2),C' ' Should be 1 char 00197000
BNE SYNTAX No, bad syntax 00198000
CLI CMD,C'*' Comment? 00199000
BE CTLP Yes, ignore it 00200000
LA R2,2(,R2) Skip over command code 00201000
BAL R8,ARGLOAD Get a numeric argument 00202000
B SYNTAX Missing, too bad 00203000
UNPK FRSTLINE,ARGNO Get zoned copy 00204000
MVC LASTLINE,BLANKS Blank out last line as default 00205000
BAL R8,ARGLOAD Get 2nd numeric argument, if any 00206000
B PROCES2 Just one card 00207000
UNPK LASTLINE,ARGNO Get zoned copy of last line 00208000
BAL R8,ARGLOAD Should be followed by '$' (or end) 00209000
B PROCES2 Ok 00210000
B SYNTAX Oops, extra number there 00211000
PROCES2 DS 0H 00212000
CLI CMD,C'D' 00213000
BE NOSEQ Done if delete 00214000
LA R2,1(,R2) Skip over '$' 00215000
BAL R8,ARGLOAD Get output line number, if any 00216000
B SYNTAX Not given, too bad 00217000
MVC LINENUM,ARGNO FIRST NUMBER SHOULD BE START LINE # 00218000
BAL R8,ARGLOAD Get increment value, if any 00219000
B SYNTAX Not given, too bad 00220000
MVC INCRMENT,ARGNO Ok, use it 00221000
NOSEQ EQU * 00222000
BAL R8,MODSRCH GO FIND OUT NAME OF MODULE 00223000
MVC OUTREC,BLANKS Clear output buffer 00224000
CLI FRSTFLAG,X'FF' SEE IF THIS IS FIRST TIME THROUGH 00225000
BE FIRST YES 00226000
CLC MODOLD,MODULE Same module? 00227000
BNE SWITCH No, start new update 00228000
CLC LASTOLD,FRSTLINE Later in same module? 00229000
BL CONTINUE Yes, keep same update 00230000
SWITCH DS 0H 00231000
MVC OUTREC(4),=C')END' NO, TERMINATE PREVIOUS UPDATE 00232000
PUT OUTFILE 00233000
FIRST EQU * 00234000
XC FRSTFLAG,FRSTFLAG CLEAR LOOP TAG FOR FUTURE TESTS 00235000
MVC OUTREC(10),=C' UPDATE ' SET UP VSE LIBR DIRECTIVE 00236000
MVC OUTREC+10(12),MODULE SUPPLY MODULE NAME 00237000
MVC OUTREC+22(14),=C',SE=FS,C=73:80' LINE SEQUENCING INFO 00238000
PUT OUTFILE WRITE OUTPUT RECORD 00239000
MVC MODOLD,MODULE Save for comparison next time 00240000
CONTINUE DS 0H 00241000
MVC LASTOLD,FRSTLINE Ditto 00242000
MVC OUTREC,BLANKS Clear output buffer 00243000
MVC OUTREC+5(8),FRSTLINE PUT IN LOCATION WHERE IT STARTS 00244000
* NOW SEE WHAT TYPE OF UPDATE IT IS 00245000
ICHECK EQU * 00246000
CLI CMD,C'I' Insert? 00247000
BNE DCHECK NO, GO CHECK FOR DELETION 00248000
MVC OUTREC(4),=C')ADD' YES, SET UP VSE LIBR FORM 00249000
B PUTCMND GO WRITE IT OUT 00250000
DCHECK EQU * 00251000
* Now must be D or R, so copy end of range 00252000
MVI OUTREC+13,C',' Delimiter and 00253000
MVC OUTREC+14(8),LASTLINE Location of end of range 00254000
CLI CMD,C'D' Delete? 00255000
BNE RCHECK NO, GO CHECK FOR REPLACEMENT 00256000
MVC OUTREC(4),=C')DEL' YES, SET UP VSE LIBR FORM 00257000
B PUTCMND GO WRITE IT OUT 00258000
RCHECK EQU * 00259000
CLI CMD,C'R' Replace? 00260000
BNE SYNTAX NO, ERROR 00261000
MVC OUTREC(4),=C')REP' YES, SET UP VSE LIBR FORM 00262000
PUTCMND EQU * 00263000
PUT OUTFILE WRITE UPDATE DIRECTIVE OUT 00264000
* NOW GET THE UPDATE LINES THEMSELVES 00265000
LINELOOP EQU * 00266000
LA 0,1 00266200
A 0,NRECIN 00266400
ST 0,NRECIN Count input records 00266600
GET INPFILE GET ANOTHER INPUT LINE 00267000
CLC =C'./ ',INRECORD Control card? 00268000
BE PROCESS YES, PREVIOUS UPDATES ARE FINISHED 00269000
CLC BLANKS(72),INRECORD Blank card? 00269100
BNE LINELOO1 No, must be new data 00269200
LA 0,1 Yes, skip it entirely 00269300
A 0,NRECBL 00269400
ST 0,NRECBL But count blank records 00269500
B LINELOOP Go get another record 00269600
LINELOO1 DS 0H 00269700
UNPK ZONEHOLD,LINENUM NO, UNPACK CURRENT LINE NUMBER 00270000
OI ZONEHOLD+7,X'F0' GET RID OF ZONED DECIMAL SIGN 00271000
MVC OUTREC,INRECORD COPY RECORD 00272000
MVC OUTREC+72(8),ZONEHOLD AND OVERLAY LINE SEQUENCE NUMBER 00273000
PUT OUTFILE WRITE OUTPUT RECORD 00274000
MVC LASTOLD,ZONEHOLD Latest line put out 00275000
AP LINENUM,INCRMENT INCREMENT LINE NUMBER FOR NEXT PASS 00276000
B LINELOOP GO GET ANOTHER LINE 00277000
* END OF INPUT FILE REACHED 00278000
A100 EQU * 00279000
MVC OUTREC,BLANKS Clear output buffer 00280000
MVC OUTREC(4),=C')END' TERMINATE PREVIOUS UPDATE 00281000
PUT OUTFILE AND WRITE IT OUT 00282000
MVC OUTREC,BLANKS Clear output buffer 00283000
* WRITE TERMINATION SEQUENCE TO GENERATED JOB 00284000
MVC OUTREC(2),=C'/*' 00285000
PUT OUTFILE 00286000
MVC OUTREC(2),=C'/&&' 00287000
PUT OUTFILE 00288000
MVC OUTREC(8),=C'* $$ EOJ' 00289000
PUT OUTFILE 00290000
EOJ EQU * 00291000
BAL R8,PRNTSKIP Print number of skipped records, if any 00291500
CLOSE INPFILE,OUTFILE,LIST 00292000
EOJ 00293000
* 00294000
* Find name of module to be updated 00295000
MODSRCH EQU * 00296000
LH R7,NUMMOD Number of entries in table 00297000
L R2,LSTMOD End of table 00298000
MODLOOP EQU * 00299000
SH R2,=Y(STTBLLEN) Back up one entry 00300000
CLC 0(8,R2),FRSTLINE COMPARE START LINE TO CURRENT ENTRY 00301000
BNH FOUND ENTRY L.E. => THIS IS THE ONE 00302000
BCT R7,MODLOOP DECREMENT INDEX 00303000
NOTFOUND EQU * 00304000
XC MODULE,MODULE ZERO VALUE INDICATES ERROR 00305000
MVC MESSLINE,BLANKS Clear message buffer 00305500
MVC MESSLINE(21),=C'MODULE NAME NOT FOUND' 00306000
PUT LIST,MESSAGE 00307000
MVC MESSLINE(80),INRECORD 00308000
PUT LIST,MESSAGE 00309000
BR R8 RETURN TO CALLER 00310000
FOUND EQU * 00311000
MVC MODULE,8(R2) Copy module name from table 00312000
BR R8 RETURN TO CALLER 00313000
* Table of starting line numbers and module names 00314000
* 00315000
* Find next numeric field in card, skip if ok 00316000
* Clobbers R3, R14. Returns via R8. Advances R2 00317000
ARGLOAD DS 0H 00318000
BAL R14,BLNKSKIP 00319000
LR R3,R2 00320000
CLI 0(R3),C'0' Numeric? 00321000
BLR R8 No, return without skipping 00322000
BAL R14,DIGITVER 00323000
BCTR R2,0 Last char 00324000
SR R2,R3 Count - 1 00325000
EX R2,PCKA 00326000
OI ARGNO+4,15 Fix sign, just in case 00327000
LA R2,1(R2,R3) RESTORE POINTER TO END + 1 00328000
B 4(,R8) Return and skip 00329000
PCKA PACK ARGNO,0(,R3) Get packed decimal 00330000
* Scan R2 until it reaches a non-blank character 00331000
BLNKSKIP EQU * 00332000
CLI 0(R2),C' ' 00333000
BNER R14 00334000
LA R2,1(,R2) 00335000
C R2,=A(INRECORD+50) Off the end? 00336000
BNLR R8 Yes, go to error handler 00337000
B BLNKSKIP 00338000
* Scan R2 until it reaches a non-numeric character 00339000
DIGITVER EQU * 00340000
CLI 0(R2),C'0' 00341000
BLR R14 00342000
CLI 0(R2),C'9' 00343000
BHR R14 00344000
LA R2,1(,R2) 00345000
C R2,=A(INRECORD+50) Off the end? 00346000
BNLR R8 Yes, go to error handler 00347000
B DIGITVER 00348000
PRNTSKIP ICM 0,15,NRECBL Test count of blank records 00348100
BZR R8 00348200
MVC MESSLINE,BLANKS Clear message buffer 00348300
MVC MESSLINE(29),=C'BLANK INPUT RECORDS IGNORED: ' 00348400
CVD 0,TEMPDW 00348500
OI TEMPDW+7,15 00348600
UNPK MESSLINE+29(5),TEMPDW 00348700
PUT LIST,MESSAGE 00348800
BR R8 00348900
BADDECK EQU * 00349000
MVC MESSLINE,BLANKS Clear message buffer 00349500
MVC MESSLINE(34),=C'OUT-OF-SEQUENCE STATEMENT AT LINE ' 00350000
L 0,NRECIN Input record count 00350100
CVD 0,TEMPDW 00350200
OI TEMPDW+7,15 00350300
UNPK MESSLINE+34(5),TEMPDW 00350400
PUT LIST,MESSAGE 00351000
MVC MESSLINE(80),INRECORD 00352000
PUT LIST,MESSAGE 00353000
B EOJ 00354000
NOPARM EQU * 00355000
MVC MESSLINE,BLANKS 00355500
MVC MESSLINE(26),=C'MISSING OR INVALID PARM(S)' 00356000
PUT LIST,MESSAGE 00357000
B EOJ 00358000
SYNTAX DS 0H 00359000
MVC MESSLINE,BLANKS 00359500
MVC MESSLINE(33),=C'INVALID UPDATE STATEMENT AT LINE ' 00360000
L 0,NRECIN Input record count 00360100
CVD 0,TEMPDW 00360200
OI TEMPDW+7,15 00360300
UNPK MESSLINE+33(5),TEMPDW 00360400
MVI MESSLINE+38,C':' 00360500
PUT LIST,MESSAGE 00361000
MVC MESSLINE(80),INRECORD 00362000
PUT LIST,MESSAGE 00363000
B CTLP 00364000
INPERROR EQU * 00365000
MVC MESSLINE(19),=C'ERROR ON INPUT FILE' 00366000
PUT LIST,MESSAGE 00367000
BAL R8,PRNTSKIP Print number of skipped records, if any 00367500
ABORT SVC 50 00368000
* 00369000
TEMPDW DS D Work area 00369300
NRECBL DS F Counter for input blank records 00369400
NRECIN DS F Input record counter 00369600
LSTMOD DS F 00370000
NUMMOD DS H 00371000
LIBFLAG DC X'00' 00372000
MODULE DS CL12 NAME OF MODULE TO WHICH UPDATE LINES APPLY 00373000
ZONEHOLD DS CL8 PLACE TO HOLD ZONED DECIMAL NUMBERS 00374000
MODOLD DS CL12 Saved MODULE from previous control group 00375000
LASTOLD DS CL8 Saved output line number from ditto 00376000
ARGNO DS PL5 Number read from control card 00377000
CMD DS C Control command code 00378000
LINENUM DS PL5 STARTING LINE # FROM INPUT RECORD 00379000
INCRMENT DS PL5 INCREMENT VALUE FROM INPUT RECORD 00380000
FRSTLINE DS CL8 Line where changes start 00381000
LASTLINE DS CL8 Last line to delete or replace 00382000
INRECORD DS CL81 00383000
OUTCARD DS 0CL81 00384000
DC C'W' 00385000
OUTREC DS CL80 OUTPUT WORK AREA 00386000
FRSTFLAG DC X'FF' 00387000
MESSAGE DC C' ' 00388000
MESSLINE DC CL132' ' 00389000
BLANKS DC 132C' ' 00390000
LTORG 00391000
JOBMX EQU 60 Maximum length string below 00392000
JOBCARDS EQU * 00393000
LSTCARD DC CL(JOBMX)'* $$ LST ' 00394000
DC CL(JOBMX)'// JOB APPLY KERMIT UPDATES' 00395000
SLI DC CL(JOBMX)'*' 00396000
DC CL(JOBMX)'// EXEC LIBR' 00397000
CONNECT DC CL(JOBMX)' CONNECT SUBLIB= :' 00398000
COPIES DC CL(JOBMX)' COPY' This card is to be duplicated 00399000
DC CL(JOBMX)'/*' 00400000
DC CL(JOBMX)'// EXEC LIBR' 00401000
ACCESS DC CL(JOBMX)' ACCESS SUBLIB=' 00402000
DC C'EOD' 00403000
* INPUT AND OUTPUT FILES 00404000
INPFILE DTFDI DEVADDR=SYSIPT,IOAREA1=INRECORD,RECSIZE=81,EOFADDR=A100,X00405000
ERROPT=INPERROR 00406000
OUTFILE DTFDI DEVADDR=SYSPCH,IOAREA1=OUTCARD,RECSIZE=81 00407000
LIST DTFPR DEVADDR=SYSLST,CTLCHR=ASA,BLKSIZE=133,WORKA=YES, X00408000
IOAREA1=AREA 00409000
AREA DS CL133 00410000
IKXTMODS CSECT 00411000
STARTNUM DC CL8'00001000' 00412000
MODNAME DC CL12'IK0DOC.A' 00413000
STTBLLEN EQU *-STARTNUM Length of one entry 00414000
DC CL8'00300000',CL12'IK0MAC.A' 00415000
DC CL8'00800000',CL12'IKXMAC.A' 00416000
DC CL8'01400000',CL12'IK0DEF.A' 00417000
DC CL8'01500000',CL12'IK0MAI.A' 00418000
DC CL8'01800000',CL12'IK0COM.A' 00419000
DC CL8'03000000',CL12'IK0CMD.A' 00420000
DC CL8'05000000',CL12'IKXUTL.A' 00421000
DC CL8'07000000',CL12'IK0PRO.A' 00422000
STARTEND EQU * 00423000
MODCOUNT EQU (*-STARTNUM)/STTBLLEN 00424000
DS 100CL(STTBLLEN) 00425000
END 00426000