MACRO 00050003 &NAME DLINT &LFR=,&LINBEG=,&IMAGE=,&NOSCAN=,&FREND=, X00100003 &FLD1=,&EDIT1=,&FLD2=,&EDIT2=,&FLD3=,&EDIT3=, X00150003 &FLD4=,&EDIT4=,&FLD5=,&EDIT5=,&FLD6=,&EDIT6=, X00200003 &FLD7=,&EDIT7=,&FLD8=,&EDIT8=,&FLD9=,&EDIT9=, X00250003 &FLD10=,&EDIT10=,&FLD11=,&EDIT11=,&FLD12=,&EDIT12=, X00300003 &FLD13=,&EDIT13=,&FLD14=,&EDIT14= 00350003 GBLA &IHBEND,&IHBI3,&IHBNSC(51),&IHBSIZ,&IHBFLN,&IHBFEA(14) 00400003 GBLB &IHBLFR(64),&IHBDFC,&IHBIMG,&IHBFLD,&IHBDEL,&IHBER1 00500003 GBLB &IHBFT(6),&IHBNAT 00550003 LCLA &I1,&I2,&I4,&HOLD,&LMARTN,&LMARDG,&I8,&FRNPO 00600003 LCLB &B1,&B2,&B3,&B4,&NFNT1,&NFNT2 00650003 ACTR 9999 00700003 AIF (&IHBDFC EQ 1).DL010 VALID DFR PRECEDE THIS MACRO 00750003 MNOTE 12,'*** IHB367 DFR MACRO INVALIDLY SPECIFIED. DLINT IGX00800003 NORED' 00850003 AGO .END EXIT MACRO 00900003 .* STATEMENTS .DL010 THRU .DL040 CHECK LFR KEYWORD 01000003 .DL010 AIF ('&LFR' NE '').DL030 LFR KEYWORD SPECIFIED,NO ERR 01050003 .DL020 MNOTE 8,'*** IHB368 LFR PARAMETER INVALIDLY SPECIFIED. DLINTX01100003 IGNORED' 01150003 AGO .END EXIT MACRO 01200003 .DL030 AIF (T'&LFR NE 'N').DL020 LFR EQ A NUMBER 01250003 AIF (&LFR GT 63).DL020 LFR VALID NUMBER 01300003 &FRNPO SETA &LFR+1 SET INDEX EQ LFR NUMBER + 1 01350003 AIF (&IHBLFR(&FRNPO) EQ 0).DL040 LFR NUM ON PREVIOUS DLINT 01400003 MNOTE 8,'*** IHB369 LFR=&LFR ON PREVIOUS DLINT. THIS DLINT IX01450003 GNORED' 01500003 AGO .END EXIT MACRO 01550003 .DL040 ANOP 01600003 &IHBLFR(&FRNPO) SETB 1 IND LFR NO USED 01650003 .* STATEMENTS .DL050 TO .DL070 CHECK LINBEG KEYWORD 01700003 AIF ('&LINBEG' NE '').DL060 LINBEG SPECIFIED,NO ERR 01750003 .DL050 MNOTE 8,'*** IHB370 LINBEG PARAMETER INVALID OR NOT SPECIFIEX01800003 D. DLINT IGNORED' 01850003 AGO .END EXIT MACRO 01900003 .DL060 AIF (T'&LINBEG NE 'N').DL050 LINBEG NUMERIC,YES VALID 01950003 AIF (&LINBEG LT 4 OR &LINBEG GT 85).DL050 VALID NUMERIC 02000003 &IHBEND SETA &LINBEG INIT FIELD END TO LINBEG 02050003 .* STATEMENTS .DL070 TO .DL150 CHECK NOSCAN KEYWORD AND BUILDS A GLOBAL 02100003 .* TABLE OF NOSCAN FIELD ENDS 02150003 &IHBI3 SETA 0 INIT NO OF NOSCAN FIELDS TO 0 02200003 AIF ('&NOSCAN' EQ '').DL150 NOSCAN KEYWORD SPECIFIED 02250003 .DL070 ANOP 02300003 &I2 SETA &I2+1 INCR INDEX OF NOSCAN OPERAND 02350003 AIF (T'&NOSCAN(&I2) EQ 'O').DL120 I2ND OPERAND OMITTED 02400003 AIF (T'&NOSCAN(&I2) EQ 'N').DL090 I2ND OPERAND NUMERIC 02450003 .DL080 MNOTE 8,'*** IHB371 NOSCAN OPERAND &I2 INVALID. OPERAND &I2 X02500003 IGNORED' 02550003 AGO .DL120 GOTO CHECK NEXT SUBOPERAND 02600003 .DL090 AIF (&NOSCAN(&I2) LE &IHBEND OR &NOSCAN(&I2) GT 88).DL080 02650003 &IHBI3 SETA &IHBI3+1 INCR OF VALID NOSCAN FIELDS 02700003 &I4 SETA 0 INIT INDEX TO NOSCAN TABLE 02750003 .DL100 ANOP 02800003 &I4 SETA &I4+1 INCR INDEX TO NOSCAN TABLE 02850003 AIF (&NOSCAN(&I2) NE &IHBNSC(&I4)).DL110 FIELD SPCFD PREVS 02900003 &IHBI3 SETA &IHBI3-1 YES,DECR CTR OF VALID FIELDS 02950003 AGO .DL080 GOTO ISSUE MESSAGE 03000003 .DL110 AIF (&I4 LT &IHBI3).DL100 TABLE ALL CHKED FOR DUPS 03050003 &IHBNSC(&IHBI3) SETA &NOSCAN(&I2) YES,PUT NOSCAN FIELD IN TABLE 03100003 .DL120 AIF (N'&NOSCAN GT &I2).DL070 ALL NOSCAN ENTRIES CHECKED 03150003 .* STATEMENTS .DL120 TO .DL150 REORDER TABLE ENTRIES 03200003 AIF (&IHBI3 LE 1).DL150 0 OR 1 VALID NOSCAN ONLY 03250003 &I4 SETA 1 INIT INDEX TO FIRST ENTRY 03300003 &I2 SETA 2 INIT INDEX TO 2ND ENTRY 03350003 .DL130 AIF (&IHBNSC(&I4) LT &IHBNSC(&I2)).DL140 ENTRY OUT OF SEQ 03400003 &HOLD SETA &IHBNSC(&I4) * 03450003 &IHBNSC(&I4) SETA &IHBNSC(&I2) * SWITCH TABLE ENTRIES 03500003 &IHBNSC(&I2) SETA &HOLD * 03550003 .DL140 ANOP 03600003 &I2 SETA &I2+1 INCR SECOND INDEX 03650003 AIF (&I2 LE &IHBI3).DL130 INNER LEVEL SORT COMPLETE 03700003 &I4 SETA &I4+1 INCR FIRST INDEX 03750003 &I2 SETA &I4+1 SETUP 2ND INDEX 03800003 AIF (&I4 LT &IHBI3).DL130 TABLE ALL SORTED,YES CONT PROC 03850003 .DL150 ANOP 03900003 .* STATEMENTS .DL150 TO .DL170 CHECK IMAGE KEYWORD 03950003 &IHBIMG SETB 0 INIT SWITCH TO IMAGE=NO 04000003 AIF ('&IMAGE' EQ '').DL170 IMAGE SPECIFIED 04050003 AIF ('&IMAGE' EQ 'NO').DL170 * VALID IMAGE EQUAL 04100003 AIF ('&IMAGE' NE 'YES').DL160 * 04150003 &IHBIMG SETB 1 SET SWITCH TO IMAGE=YES 04200003 AGO .DL170 CONTINUE PROCESSING 04250003 .DL160 MNOTE 4,'*** IHB372 IMAGE PARAMETER INVALID. NO ASSUMED' 04300003 .DL170 ANOP 04350003 .* STATEMENTS .DL170 TO .DL180 CHECK FOR FLD SPCFCTN,IF NONE ZERO NOSCN 04400003 &B1 SETB (('&FLD1' NE '') OR ('&FLD2' NE '') OR X04450003 ('&FLD3' NE '') OR ('&FLD4' NE '')) 04500003 &B2 SETB (('&FLD5' NE '') OR ('&FLD6' NE '') OR X04550003 ('&FLD7' NE '') OR ('&FLD8' NE '')) 04600003 &B3 SETB (('&FLD9' NE '') OR ('&FLD10' NE '') OR X04650003 ('&FLD11' NE '') OR ('&FLD12' NE '')) 04700003 &B4 SETB (('&FLD13' NE '') OR ('&FLD14' NE '')) 04750003 AIF (&B1 OR &B2 OR &B3 OR &B4).DL180 AT LEAST 1 FLD SPCFD 04800003 MNOTE 8,'*** IHB373 NO FLDX PARAMETER SPECIFIED. DLINT IGNORX04850003 ED' 04900003 &I4 SETA 0 INIT NOSCAN TAB INDEX 04950003 .DL175 AIF (&I4 EQ &IHBI3).DL250 ALL ENTRIES ZEROED,YES EXIT MAC 05000003 &I4 SETA &I4+1 INCR TABLE INDEX 05050003 &IHBNSC(&I4) SETA 0 ZERO TABLE ENTRY 05100003 AGO .DL175 GOTO CHECK TABLE ALL ZEROED 05150003 .DL180 ANOP 05200003 .* STATEMENTS .DL180 TO .DL187 GENERATE LINE INFORMATION RECORD 05250003 &IHBSIZ SETA &IHBSIZ+4 INCR SIZE OF FR RCD GENERATED 05300003 AIF (&IHBSIZ GT 212).DL183 MAX RECORD GEND ALREADY 05350003 &NAME DC AL1(&LFR) *** LINE INFORMATION RECORD *** 05400003 &HOLD SETA &IHBEND-4 * 05450003 &LMARTN SETA &HOLD/10 * SETUP LINE BEGIN 05500003 &LMARDG SETA &HOLD-(10*&LMARTN) * 05550003 DC AL1(&LMARTN*16+&LMARDG) LEFT MARGIN 05600003 DC AL1(&IHBIMG*128) IMAGE 05650003 AGO .DL187 GOTO CHECK FLD AND EDIT KEYWORDS 05700003 .DL183 ANOP 05750003 &IHBER1 SETB 1 INDICATE MAX FR SIZE GEND 05800003 .DL187 ANOP 05850003 &IHBDEL SETB 0 INIT FIELD DELIMETER SWITCH 05900003 &IHBFLD SETB 0 INIT VALID FIELD SWITCH 05950003 &IHBFLN SETA 0 INIT TOTAL OF FIELD LNGTHS EQ 0 06000003 .* THE DLINTIN MACRO CALLS CHECK THE FLD AND EDIT KEYWORDS 06050003 DLINTIN 0,&FLD1,&FLD2,&FLD3,&FLD4,&FLD5,&FLD6,&FLD7, X06100003 &FLD8,&FLD9,&FLD10,&FLD11,&FLD12,&FLD13,&FLD14 06150003 DLINTIN 1,&FLD1,&EDIT1 06200003 DLINTIN 2,&FLD2,&EDIT2 06250003 DLINTIN 3,&FLD3,&EDIT3 06300003 DLINTIN 4,&FLD4,&EDIT4 06350003 DLINTIN 5,&FLD5,&EDIT5 06400003 DLINTIN 6,&FLD6,&EDIT6 06450003 DLINTIN 7,&FLD7,&EDIT7 06500003 DLINTIN 8,&FLD8,&EDIT8 06550003 DLINTIN 9,&FLD9,&EDIT9 06600003 DLINTIN 10,&FLD10,&EDIT10 06650003 DLINTIN 11,&FLD11,&EDIT11 06700003 DLINTIN 12,&FLD12,&EDIT12 06750003 DLINTIN 13,&FLD13,&EDIT13 06800003 DLINTIN 14,&FLD14,&EDIT14 06850003 &I1 SETA 1 * 06900003 .DL189 ANOP * ZERO OUT FIELD END TABLE 06950003 &IHBFEA(&I1) SETA 0 * 07000003 &I1 SETA &I1+1 * 07050003 AIF (&I1 LT 15).DL189 * 07100003 AIF (&IHBFLD EQ 1).DL190 AT LEAST 1 VALID FIELD 07150003 MNOTE 12,'*** IHB374 NO VALID FIELDS FOUND FOR LINE. INVALIDX07200003 FORMAT RECORD GENERATED' 07250003 .DL190 AIF (&IHBDEL EQ 0).DL220 LAST FIELD CHAR DELIMITED, 07300003 MNOTE 12,'*** IHB375 LAST FIELD CHARACTER DELIMITED. INVALIDX07350003 FORMAT RECORD GENERATED' 07400003 .* STATEMENTS .DL220 TO .DL245 CHECK FOR INVALID NOSCAN AND GENERATE 07650003 .* NOSCANS AT END OF LINE 07700003 .DL220 AIF (&IHBI3 EQ 0).DL245 ANY VALID NOSCANS,NO CONT PROC 07750003 &I8 SETA 0 SET TABLE INDEX TO 0 07800003 .DL230 ANOP 07850003 &I8 SETA &I8+1 INCR TABLE INDEX 07900003 AIF (&IHBNSC(&I8) EQ 0).DL240 NOSCAN ALREADY GEND 07950003 AIF (&IHBNSC(&I8) GT &IHBEND).DL232 NOSCAN AT END OF LINE 08000003 MNOTE 4,'*** IHB377 NOSCAN FIELD END &IHBNSC(&I8) NOT NEEDEDX08050003 . IGNORED' 08100003 AGO .DL234 GOTO CHECK NEXT TABLE ENTRY 08150003 .DL232 ANOP 08200003 &IHBSIZ SETA &IHBSIZ+4 INCR FR SIZE 08250003 AIF (&IHBSIZ GT 212).DL233 MAX SIZE RECORD ALREADY GEND 08300003 &HOLD SETA &IHBNSC(&I8)-4 * 08350003 &LMARTN SETA &HOLD/10 * SETUP BCD FOR FIELD END 08400003 &LMARDG SETA &HOLD-(10*&LMARTN) * 08450003 DC AL1(&LMARTN*16+&LMARDG) *** NOSCAN FIELD *** 08500003 DC AL1(128) 08550003 DC AL1(0) 08600003 DC AL1(0) 08650003 AGO .DL234 GO SET TAB ENTRY TO ZERO 08700003 .DL233 ANOP 08750003 &IHBER1 SETB 1 IND MAX FR SIZE REACHED 08800003 .DL234 ANOP 08850003 &IHBNSC(&I8) SETA 0 SET TABLE ENTRY TO ZERO 08900003 .DL240 AIF (&I8 LT &IHBI3).DL230 MORE ENTRIES TO CHECK 08950003 .DL245 AIF (&IHBER1 EQ 0).DL248 MAX FR GEND,YES ISSUE MSG 09000003 MNOTE 12,'*** IHB376 MAXIMUM FORMAT RECORD REACHED. LINES ANX09050003 D FIELDS MAY BE IGNORED' 09100003 .DL248 ANOP 09150003 DC X'FF' *** END OF LINE *** 09200003 .* STATEMENTS .DL250 TO .END CHECK FREND AND GEN EQU FOR FONT 09250003 .DL250 AIF ('&FREND' EQ '').END FREND SPECIFIED 09300003 AIF ('&FREND' NE 'YES').DL260 FREND SPECIFIED EQ YES 09350003 AIF (&IHBFT(6) NE 1).DL255 FONT GRP 6 SPCFD PREVIOUS 09400003 AIF (&IHBFT(2) EQ 1).DL255 FONT GRP 2 SPCFD PREVIOUS 09450003 &IHBFT(1) SETB 1 IND FONT GRP 1 09500003 .DL255 ANOP 09550003 &NFNT1 SETB (&IHBFT(5) AND &IHBNAT) SET ON FOR NATNHP=YES 09600003 &NFNT2 SETB (&IHBFT(5) AND NOT(&IHBNAT)) SET ON FOR NATNHP=NO 09650003 IHBFONT EQU &IHBFT(1)*128+&IHBFT(2)*64+&IHBFT(3)*32+&IHBFT(4)*16+&NFX09700003 NT2*8+&NFNT1*4 09750003 DC X'FF' *** END OF FORMAT RECORD *** 09800003 IHBEND EQU * 09850003 AGO .END EXIT MACRO 09900003 .DL260 AIF ('&FREND' EQ 'NO').END FREND VALID,NO ISSUE MSG 09950003 MNOTE 8,'*** IHB378 FREND PARAMETER INVALIDLY SPECIFIED. NO X10000003 ASSUMED' 10050003 .END MEXIT 10100003 MEND 10150003