home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
ibmtsonih
/
tsnpst.pli
< prev
next >
Wrap
Text File
|
2020-01-01
|
26KB
|
326 lines
/* ALP LISTING POST-PROCESSOR - VERSION 3.0 - 11/13/80 */ 00001000
00002000
POSTALP: PROC OPTIONS(MAIN) REORDER; 00003000
00009000
/* ALP LISTING FILE DEFINITION */ 00010000
00011000
DECLARE 00012000
ALPPRINT INTERNAL FILE RECORD INPUT ENV(FB,RECSIZE(133),TOTAL), 00013000
ALP_LINE CHAR(133) STATIC INIT('+'), 00014000
ALP_CC CHAR(1) POS(1) DEF(ALP_LINE), 00015000
ALP_TEXT CHAR(132) POS(2) DEF(ALP_LINE), 00016000
ALP_NUM CHAR(8) POS(8) DEF(ALP_LINE), 00017000
ALP_EOF BIT(1) STATIC ALIGNED INIT('0'B), 00018000
NOFLAGGED CHAR(132) STATIC INIT('NO ALP STATEMENTS FLAGGED.'); 00019000
00020000
/* ASSEMBLER LISTING FILE DEFINITION */ 00021000
00022000
DECLARE 00023000
ASMPRINT INTERNAL FILE RECORD INPUT ENV(FB,RECSIZE(121),TOTAL), 00024000
ASM_EOF BIT(1) INIT('0'B) STATIC ALIGNED, 00025000
ASM_LINE CHAR(121) STATIC INIT('1'), 00026000
ASM_CC CHAR(1) POS(1) DEF(ASM_LINE), 00027000
ASM_TEXT CHAR(120) POS(2) DEF(ASM_LINE), 00028000
ASM_LOC CHAR(6) POS(2) DEF(ASM_LINE), 00029000
ASM_PLUS CHAR(1) POS(41) DEF(ASM_LINE), 00031000
ASM_NUM CHAR(8) POS(114) DEF(ASM_LINE), 00033000
ASM_SUBHEAD CHAR(56) POS(4) DEF(ASM_LINE), 00034000
ASM_ERROR CHAR(13) POS(13) DEF(ASM_LINE), 00035000
ASM_LASTCC CHAR(1) STATIC INIT('1'), 00038000
SUBHEAD CHAR(56) STATIC 00039000
INIT('LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMENT'), 00040000
ERROR_FLAG CHAR(13) STATIC INIT('*** ERROR ***'), 00041000
MNOTE_FLAG CHAR(13) STATIC INIT('*** MNOTE ***'), 00042000
WARNING_FLAG CHAR(13) STATIC INIT('** WARNING **'), 00042100
FLAGGED CHAR(35) STATIC INIT(' FLAGGED IN THIS ASSEMBLY'); 00043000
1 00044000
/* COMPOSITE LISTING FILE DEFINITION */ 00045000
00046000
DECLARE 00047000
NEWPRINT INT FILE RECORD OUTPUT ENV(FB,RECSIZE(140),CTLASA,TOTAL), 00048000
NEW_PTR POINTER STATIC, 00049000
NEW_LINE CHAR(140) BASED(NEW_PTR), 00050000
NEW_LOC CHAR(6) STATIC INIT(' '), 00051000
NEW_NUM CHAR(8) STATIC INIT(' '); 00052000
00053000
/* ALTERNATE ASSEMBLY LISTING FILE DEFINITION */ 00054000
00055000
DECLARE 00056000
ALTPRINT INT FILE RECORD OUTPUT ENV(FB,RECSIZE(121),CTL360,TOTAL), 00057000
ALT_PTR POINTER STATIC INIT(NULL()), 00058000
ALT_LINE CHAR(121) BASED(ALT_PTR), 00059000
ALT_CC CHAR(1) BASED(ALT_PTR), 00060000
ALT_SW BIT(1) STATIC ALIGNED INIT('1'B), 00061000
CC CHAR(5) STATIC INIT(' 10-+'), 00062000
CCMC(5) BIT(8) INIT('00001001'B,'10001001'B,'00010001'B, 00063000
'00011001'B,'00000001'B) STATIC ALIGNED, 00064000
CCMCNP(5) BIT(8) INIT('00001011'B,'10001011'B,'00010011'B, 00065000
'00011011'B,'00000011'B) STATIC ALIGNED; 00066000
1 00078000
OPEN FILE(SYSPRINT) TITLE('POSTERR'); 00079000
00087000
OPEN FILE(ALPPRINT) TITLE('SYSPRINT'); 00088000
ON ENDFILE(ALPPRINT) BEGIN; 00089000
ALP_EOF='1'B; 00090000
GO TO NO_ALP; 00091000
END; 00092000
00093000
OPEN FILE(ASMPRINT); 00094000
ON ENDFILE(ASMPRINT) BEGIN; 00095000
ASM_EOF='1'B; 00096000
NEW_LOC=''; 00097000
GO TO FINISH_ALP; 00098000
END; 00099000
00100000
OPEN FILE(NEWPRINT); 00101000
00112000
ON UNDEFINEDFILE(ALTPRINT) ALT_SW='0'B; 00113000
OPEN FILE(ALTPRINT); 00114000
1 00115000
/* GET INITIAL POSITION IN ALP LISTING */ 00116000
00117000
READ FILE(ALPPRINT) INTO(ALP_LINE); 00118000
IF (ALP_CC='1') THEN DO; 00119000
LOCATE NEW_LINE FILE(NEWPRINT); 00120000
NEW_LINE = ALP_LINE; 00121000
READ FILE(ALPPRINT) INTO(ALP_LINE); 00122000
END; 00123000
LOCATE NEW_LINE FILE(NEWPRINT); 00124000
NEW_LINE = ALP_LINE; 00125000
00126000
NO_ALP: 00127000
1 00128000
/* GET INITIAL POSITION IN ASSEMBLY LISTING */ 00129000
00130000
DO WHILE(ASM_CC='1' | UNSPEC(ASM_CC)='10001001'B 00131000
| UNSPEC(ASM_CC)='10001011'B); 00132000
DO WHILE(ASM_SUBHEAD^=SUBHEAD | UNSPEC(ASM_CC)='10001001'B 00133000
| UNSPEC(ASM_CC)='10001011'B); 00134000
ASM_LASTCC=ASM_CC; 00135000
READ FILE(ASMPRINT) INTO(ASM_LINE); 00136000
IF ALT_SW THEN DO; 00137000
IF INDEX(CC,ASM_CC)>0 THEN DO; 00138000
IF ALT_PTR=NULL() THEN DO; 00139000
LOCATE ALT_LINE FILE(ALTPRINT); 00140000
ALT_LINE=''; 00141000
UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00142000
END; 00143000
ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00144000
END; 00145000
LOCATE ALT_LINE FILE(ALTPRINT); 00146000
ALT_LINE = ASM_LINE; 00147000
END; 00148000
END; 00152000
ASM_LASTCC=ASM_CC; 00153000
READ FILE(ASMPRINT) INTO(ASM_LINE); 00154000
IF ALT_SW THEN DO; 00155000
IF INDEX(CC,ASM_CC)>0 THEN DO; 00156000
IF ALT_PTR=NULL() THEN DO; 00157000
LOCATE ALT_LINE FILE(ALTPRINT); 00158000
ALT_LINE=''; 00159000
UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00160000
END; 00161000
ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00162000
END; 00163000
LOCATE ALT_LINE FILE(ALTPRINT); 00164000
ALT_LINE = ASM_LINE; 00165000
END; 00166000
END; 00170000
00204000
ON ENDFILE(ALPPRINT) BEGIN; 00205000
ALP_EOF='1'B; 00206000
GO TO EOF_ALP; 00207000
END; 00208000
00209000
IF ALP_EOF THEN GO TO EOF_ALP; 00210000
1 00211000
DO WHILE('1'B); 00212000
00213000
/* READ A LINE FROM THE ALP LISTING */ 00214000
00215000
NEXT_ALP: 00216000
READ FILE(ALPPRINT) INTO(ALP_LINE); 00217000
00218000
/* SKIP BLANK LINES, ETC. */ 00219000
00220000
IF (ALP_TEXT='') THEN DO; 00221000
LOCATE NEW_LINE FILE(NEWPRINT); 00222000
NEW_LINE = ALP_LINE; 00223000
GO TO NEXT_ALP; 00224000
END; 00225000
00226000
/* TEST FOR END OF ALP STATEMENTS */ 00227000
00228000
IF (ALP_TEXT=NOFLAGGED) THEN DO; 00229000
GO TO FINAL_ALP; 00230000
END; 00231000
00232000
/* SKIP TITLES */ 00233000
00234000
IF (ALP_CC='1') THEN DO; 00235000
LOCATE NEW_LINE FILE(NEWPRINT); 00236000
NEW_LINE=ALP_LINE; 00237000
READ FILE(ALPPRINT) INTO(ALP_LINE); /* SUBTITLE */ 00238000
LOCATE NEW_LINE FILE(NEWPRINT); 00239000
NEW_LINE=ALP_LINE; 00240000
GO TO NEXT_ALP; 00241000
END; 00242000
1 00243000
/* FIND SAME LINE NUMBER IN ASSEMBLER LISTING */ 00244000
00245000
IF (ALP_NUM>NEW_NUM) THEN NEW_LOC=''; 00246000
DO WHILE(ALP_NUM>NEW_NUM | NEW_NUM='' | NEW_LOC=''); 00247000
00248000
/* READ ANOTHER LINE FROM THE ASSEMBLY LISTING */ 00249000
00250000
READ FILE(ASMPRINT) INTO(ASM_LINE); 00251000
IF ALT_SW THEN DO; 00252000
IF INDEX(CC,ASM_CC)>0 THEN DO; 00253000
IF ALT_PTR=NULL() THEN DO; 00254000
LOCATE ALT_LINE FILE(ALTPRINT); 00255000
ALT_LINE=''; 00256000
UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00257000
END; 00258000
ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00259000
END; 00260000
LOCATE ALT_LINE FILE(ALTPRINT); 00261000
ALT_LINE = ASM_LINE; 00262000
END; 00263000
1 00264000
/* SKIP HEADINGS IN LISTING WITH ASA CARRIAGE CONTROL */ 00265000
00266000
DO WHILE(ASM_CC='1'); 00267000
DO WHILE(ASM_SUBHEAD^=SUBHEAD); 00268000
READ FILE(ASMPRINT) INTO(ASM_LINE); 00273000
IF ALT_SW THEN DO; 00274000
IF INDEX(CC,ASM_CC)>0 THEN DO; 00275000
IF ALT_PTR=NULL() THEN DO; 00276000
LOCATE ALT_LINE FILE(ALTPRINT); 00277000
ALT_LINE=''; 00278000
UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00279000
END; 00280000
ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00281000
END; 00282000
LOCATE ALT_LINE FILE(ALTPRINT); 00283000
ALT_LINE = ASM_LINE; 00284000
END; 00285000
END; 00286000
READ FILE(ASMPRINT) INTO(ASM_LINE); 00291000
IF ALT_SW THEN DO; 00292000
IF INDEX(CC,ASM_CC)>0 THEN DO; 00293000
IF ALT_PTR=NULL() THEN DO; 00294000
LOCATE ALT_LINE FILE(ALTPRINT); 00295000
ALT_LINE=''; 00296000
UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00297000
END; 00298000
ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00299000
END; 00300000
LOCATE ALT_LINE FILE(ALTPRINT); 00301000
ALT_LINE = ASM_LINE; 00302000
END; 00303000
END; 00304000
1 00338000
/* CHECK IF VALID LOCATION COUNTER VALUE IS PRESENT */ 00339000
00340000
IF (ASM_PLUS^='+') & (ASM_NUM^='') & (ASM_NUM^='00000000') 00341000
& (ASM_ERROR^=ERROR_FLAG) & (ASM_ERROR^=MNOTE_FLAG) 00342000
& (ASM_ERROR^=WARNING_FLAG) THEN NEW_NUM=ASM_NUM; 00343000
IF ASM_LOC^='' & (ALP_NUM<=NEW_NUM | NEW_NUM='') 00344000
& (ASM_ERROR^=ERROR_FLAG) & (ASM_ERROR^=MNOTE_FLAG) 00345000
& (ASM_ERROR^=WARNING_FLAG) THEN NEW_LOC=ASM_LOC; 00346000
00347000
/* SKIP HEADINGS IN LISTING WITH MACHINE CARRIAGE CONTROL */ 00348000
00349000
DO WHILE(UNSPEC(ASM_CC)='10001001'B|UNSPEC(ASM_CC)='10001011'B); 00350000
DO WHILE(ASM_SUBHEAD^=SUBHEAD | UNSPEC(ASM_CC)='10001001'B 00351000
| UNSPEC(ASM_CC)='10001011'B); 00352000
READ FILE(ASMPRINT) INTO(ASM_LINE); 00357000
IF ALT_SW THEN DO; 00358000
IF INDEX(CC,ASM_CC)>0 THEN DO; 00359000
IF ALT_PTR=NULL() THEN DO; 00360000
LOCATE ALT_LINE FILE(ALTPRINT); 00361000
ALT_LINE=''; 00362000
UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00363000
END; 00364000
ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00365000
END; 00366000
LOCATE ALT_LINE FILE(ALTPRINT); 00367000
ALT_LINE = ASM_LINE; 00368000
END; 00369000
END; 00370000
END; 00371000
00372000
/* IF WE HAVE A GOOD LOCATION COUNTER VALUE, PRINT ALP LINE */ 00373000
00374000
IF (ALP_NUM<=NEW_NUM & NEW_NUM^='' & NEW_LOC^='') 00375000
THEN GO TO OUTPUT; 00376000
END; 00377000
00378000
/* WRITE NEW LISTING LINE */ 00379000
00380000
OUTPUT: 00381000
LOCATE NEW_LINE FILE(NEWPRINT); 00382000
NEW_LINE = ALP_CC||NEW_LOC||' '||ALP_TEXT; 00383000
END; 00384000
1 00385000
/* PROCESS REMAINDER OF ALP LISTING */ 00386000
00387000
FINISH_ALP: 00388000
00389000
IF ALP_EOF THEN GO TO EOF_ALP; 00390000
00391000
IF ALP_LINE='+' THEN READ FILE(ALPPRINT) INTO(ALP_LINE); 00392000
DO WHILE(ALP_TEXT^=NOFLAGGED); 00393000
LOCATE NEW_LINE FILE(NEWPRINT); 00394000
NEW_LINE = ALP_CC||NEW_LOC||' '||ALP_TEXT; 00395000
READ FILE(ALPPRINT) INTO(ALP_LINE); 00396000
END; 00397000
00398000
FINAL_ALP: 00399000
00400000
IF ALP_EOF THEN GO TO EOF_ALP; 00401000
00402000
DO WHILE('1'B); 00403000
LOCATE NEW_LINE FILE(NEWPRINT); 00404000
NEW_LINE = ALP_LINE; 00405000
READ FILE(ALPPRINT) INTO(ALP_LINE); 00406000
END; 00407000
00408000
EOF_ALP: 00409000
1 00410000
/* PROCESS REMAINDER OF ASSEMBLY LISTING */ 00411000
00412000
IF ALT_SW & ^ASM_EOF THEN DO; 00413000
ON ENDFILE(ASMPRINT) GO TO EOF_ASM; 00414000
DO WHILE('1'B); 00415000
READ FILE(ASMPRINT) INTO(ASM_LINE); 00416000
IF ALT_SW THEN DO; 00417000
IF INDEX(CC,ASM_CC)>0 THEN DO; 00418000
IF ALT_PTR=NULL() THEN DO; 00419000
LOCATE ALT_LINE FILE(ALTPRINT); 00420000
ALT_LINE=''; 00421000
UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00422000
END; 00423000
ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00424000
END; 00425000
LOCATE ALT_LINE FILE(ALTPRINT); 00426000
ALT_LINE = ASM_LINE; 00427000
END; 00428000
END; 00532000
END; 00533000
1 00534000
EOF_ASM: 00535000
00536000
/* RETURN TO CALLER */ 00537000
00538000
CLOSE FILE(ALPPRINT),FILE(ASMPRINT),FILE(NEWPRINT); 00539000
IF ALT_SW THEN DO; 00541000
IF ALT_PTR^=NULL() THEN IF INDEX(CC,ALT_CC)>0 THEN DO; 00542000
UNSPEC(ALT_CC)='00000001'B; 00543000
END; 00544000
CLOSE FILE(ALTPRINT); 00545000
END; 00546000
00547000
CALL PLIRETC(0); 00548000
END POSTALP; 00549000