         TITLE 'IFCET001  -  LOAD MODULE NAME : IFCET001'      @Z40RSVS 00300002
*  DSGEN MACRO     DSGEN MACRO     DSGEN MACRO     DSGEN MACRO        * 00600002
         SPACE 2                                                        00900002
         MACRO                                                          01200002
&NAME    DSGEN &X1,&X2,&X3,&X4,&X5,&X6,&X7,&X8,&X9,&X10,&X11,&X12,&X13,X01500002
               &X14,&X15,&X16,&X17,&X18,&X19,&X20,&X21,&X22,&X23,&X24, X01800002
               &X25,&X26,&X27,&X28,&X29,&X30,&X31,&X32                  02100002
.*                            THIS MACRO GENERATES ONE DSECT WORD       02400002
.*                                 FORMATTED FOR THE SUBJECT LOG RECORD 02700002
.*                                 EACH OPERAND HAS TWO SUB LISTS. THE  03000002
.*                                 FIRST IS THE NAME OF THE LOG ITEM    03300002
.*                                 WHILE THE SECOND IS THE # OF BITS TO 03600002
.*                                 ALLOCATE FOR THIS ITEM. ITEMS MUST   03900002
.*                                 BE DEFINED CONTIGUOUSLY WITHOUT GAPS 04200002
.*                                 UNUSED BIT GROUPS MUST BE GIVEN      04500002
.*                                 DUMMY NAMES. THE NAMES PROVIDED FOR  04800002
.*                                 THE LOG ITEMS MAY THEN BE USED IN    05100002
.*                                 THE CONVERSION MACRO INSTRUCTIONS.   05400002
         GBLC &ITEM(1000)                                               05700002
         GBLA &ITEMNBR,&BITS(1000),&SHIFT(1000)                         06000002
         LCLC  &SYMBOL                                                  06300002
         LCLA  &OP,&COUNT,&BYTE                                         06600002
.LOOP    ANOP                                                           06900002
&OP      SETA  &OP+1                                                    07200002
&ITEMNBR SETA  &ITEMNBR+1                                               07500002
&SYMBOL  SETC  '&SYSLIST(&OP,1)'                                        07800002
         AIF   ('&SYSLIST(&OP,2)' NE '').OK1                            08100002
         MNOTE *,'NULL BIT COUNT FIELD'                                 08400002
         MEXIT                                                          08700002
.OK1     ANOP                                                           09000002
         AIF   ('&SYMBOL' NE '').OK                                     09300002
         MNOTE 'LOG ITEM SYMBOL NOT PROVIDED'                           09600002
         AGO   .CNT                                                     09900002
.OK      ANOP                                                           10200002
         AIF   ('&SYMBOL'(1,1) EQ '''').CNT                *TEMP*       10500002
&SYMBOL  EQU   *+&BYTE                                                  10800002
&ITEM(&ITEMNBR)  SETC '&SYSLIST(&OP,1)'                                 11100002
&BITS(&ITEMNBR) SETA &SYSLIST(&OP,2)                                    11400002
&SHIFT(&ITEMNBR) SETA &COUNT-&BYTE*8                                    11700002
.CNT     ANOP                                                           12000002
&COUNT   SETA  &COUNT+&SYSLIST(&OP,2)                                   12300002
&BYTE    SETA  &COUNT/8                                                 12600002
         AIF (&OP LT N'&SYSLIST).LOOP                                   12900002
         AIF   (&COUNT NE 32).NOT32                                     13200002
&NAME    DS    4C                                                       13500002
         MEXIT                                                          13800002
.NOT32   AIF   (&COUNT NE 64).ERR                                       14100002
&NAME    DS    8C                                                       14400002
         MEXIT                                                          14700002
.ERR     MNOTE '**BIT COUNT FIELDS DO NOT TOTAL 32 OR 64**'             15000002
         MEND                                                           15300002
         EJECT                                                          15600002
*  LINE MACRO     LINE MACRO     LINE MACRO     LINE MACRO            * 15900002
         SPACE 2                                                        16200002
         MACRO                                                          16500002
&NAME    LINE  &DATA,&LABEL,&SKIP=                                      16800002
.*                            THIS MACRO ESTABLISHES THE MARGINS OR     17100002
.*                                 COLUMN SETTINGS FOR EACH LINE. IT    17400002
.*                                 GENERATES NECESSARY CARRIAGE CONTROL 17700002
.*                                 ENTRIES. LASTLY IT DETERMINES THE    18000002
.*                                 NUMBER OF ENTRIES ASSOCIATED WITH    18300002
.*                                 THE PREVIOUS LINE AND STORES THAT #  18600002
.*                                 INTO THE APPROPRIATE BYTE.           18900002
.*                            &DATA(1) - CHARACTER POSITION TO BEGIN    19200002
.*                                 DATA.                                19500002
.*                            &DATA(2) - # OF SPACES BETWEEN SUCCESSIVE 19800002
.*                                 DATA COLUMN STARTING CHARACTERS.     20100002
.*                            &LABEL(1) - CHAR. POS. TO BEGIN LABELS.   20400002
.*                            &LABEL(2) - # SPACES BETWEEN LINE'S LABEL 20700002
.*                                 STARTING CHARACTERS.                 21000002
.*                            &SKIP= - # OF LINES TO ADVANCE CARRIAGE   21300002
.*                                 TO BEGIN NEXT PRINTED LINE.          21600002
.*                            NEW ENTRIES ARE GENERATED ONLY WHEN       21900002
.*                                 NECESSARY. OMISSION OF ITEMS MEANS   22200002
.*                                 THEY HAVE NOT CHANGED SINCE PREVIOUS 22500002
.*                                 SETTINGS. A LINE MACRO IS REQUIRED   22800002
.*                                 FOR EACH PRINTED LINE. IF NO SETTING 23100002
.*                                 CHANGES ARE REQUIRED ALL OPERANDS    23400002
.*                                 ARE OMITTED IN WHICH CASE ONLY THE   23700002
.*                                 # OF ENTRIES FOR THE PREVIOUS LINE   24000002
.*                                 IS COMPUTED. THIS MACRO MUST BE THE  24300002
.*                                 FIRST MACRO INSTRUCTION ISSUED FOR   24600002
.*                                 THE SUBJECT LINE                     24900002
         GBLA  &DB,&DT,&LB,&LT,&NRENTS                                  25200002
         GBLA  &LASTCC,&INITIAL                                         25500002
         GBLC  &NRENTSX                                                 25800002
         GBLC  &CARRCON                                                 26100002
         GBLB  &TEST                                                    26400002
         LCLA  &S                                                       26700002
&NAME    DS    0C                                                       27000002
         AIF   (&INITIAL EQ 0).FIRSTLN                                  27300002
         LINEND                                                         27600002
         AGO   .NTFIRST                                                 27900002
.FIRSTLN ANOP                                                           28200002
&NRENTSX SETC  'N&SYSNDX'                                               28500002
&INITIAL SETA  1                                                        28800002
N&SYSNDX EQU   *                                                        29100002
.NTFIRST ANOP                                                           29400002
         DC    AL1(0)                                                   29700002
         AIF   ('&DATA(1)' EQ '').CKDTABS                               30000002
         AIF   (&DATA(1) EQ &DB).CKDTABS                                30300002
&DB      SETA  &DATA(1)                                                 30600002
         AGO   .AA                                                      30900002
.CKDTABS AIF   ('&DATA(2)' EQ '').NCDATA                                31200002
         AIF   (&DATA(2) EQ &DT).NCDATA                                 31500002
         AGO   .CC                                                      31800002
.AA      AIF   ('&DATA(2)' EQ '').BB                                    32100002
         AIF   (&DATA(2) EQ &DT).BB                                     32400002
.CC      ANOP                                                           32700002
&DT      SETA  &DATA(2)                                                 33000002
.BB      DC    XL2'FFFE'                                                33300002
         DC    FL1'&DB'                                                 33600002
         DC    FL1'&DT'                                                 33900002
&NRENTS  SETA  &NRENTS+1                                                34200002
.NCDATA  ANOP                                                           34500002
         AIF   ('&LABEL(1)' EQ '').CKLTABS                              34800002
         AIF   (&LABEL(1) EQ &LB).CKLTABS                               35100002
&LB      SETA  &LABEL(1)                                                35400002
         AGO   .AAA                                                     35700002
.CKLTABS AIF   ('&LABEL(2)' EQ '').NCLABEL                              36000002
         AIF   (&LABEL(2) EQ &LT).NCLABEL                               36300002
         AGO   .CCC                                                     36600002
.AAA     AIF   ('&LABEL(2)' EQ '').BBB                                  36900002
         AIF   (&LABEL(2) EQ &LT).BBB                                   37200002
.CCC     ANOP                                                           37500002
&LT      SETA  &LABEL(2)                                                37800002
.BBB     DC    XL2'FFFF'                                                38100002
         DC    FL1'&LB'                                                 38400002
         DC    FL1'&LT'                                                 38700002
&NRENTS  SETA  &NRENTS+1                                                39000002
.NCLABEL ANOP                                                           39300002
         AIF   ('&SKIP' NE '').CONT                                     39600002
         AIF   (&TEST EQ 0).NOCHANG                                     39900002
&S       SETA  &LASTCC                                                  40200002
         AGO   .DEFAULT                                                 40500002
.CONT    ANOP                                                           40800002
         AIF   (&TEST EQ 0).AB                                          41100002
&S       SETA  &SKIP                                                    41400002
.DEFAULT ANOP                                                           41700002
         ORG   &CARRCON+3                                               42000002
         DC    AL.3(0),AL.2(&S),AL.3(1)                                 42300002
         ORG                                                            42600002
&LASTCC  SETA  &S                                                       42900002
&TEST    SETB  0                                                        43200002
         AGO   .DD                                                      43500002
.AB      AIF   (&SKIP EQ &LASTCC).NOCHANG                               43800002
A&SYSNDX DC    XL2'FFFB'                                                44100002
         DC    AL.3(0),AL.2(&SKIP),AL.3(1)                              44400002
         DC    FL1'9'                                                   44700002
&LASTCC  SETA  &SKIP                                                    45000002
&TEST    SETB  1                                                        45300002
&CARRCON SETC  'A&SYSNDX'                                               45600002
&NRENTS  SETA  &NRENTS+1                                                45900002
.DD      ANOP                                                           46200002
.NOCHANG ANOP                                                           46500002
         MEND                                                           46800002
         EJECT                                                          47100002
*  ROUTINE MACRO     ROUTINE MACRO     ROUTINE MACRO     ROUTINE MACRO* 47400002
         SPACE 2                                                        47700002
         MACRO                                                          48000002
&NAME    ROUTINE &LOGITEM,&RNAME                                        48300002
         GBLC  &DSECT,&CSECT                                            48600002
         GBLC  &ITEM(1000)                                              48900002
         GBLA  &SHIFT(1000),&ITEMNBR                                    49200002
         GBLA  &NRENTS                                                  49500002
         LCLA  &ISHIFT,&NDX                                             49800002
.LOOP    ANOP                                                           50100002
&NDX     SETA  &NDX+1                                                   50400002
         AIF   ('&ITEM(&NDX)' EQ '&LOGITEM').FOUND                      50700002
         AIF   (&NDX LT &ITEMNBR).LOOP                                  51000002
         MNOTE *,'LOG ITEM NOT DEFINED'                                 51300002
         MEXIT                                                          51600002
.FOUND   ANOP                                                           51900002
&ISHIFT  SETA  &SHIFT(&NDX)                                             52200002
&NAME    DC    AL.12(&LOGITEM-&DSECT),XL.4'D'                           52500002
         DC    AL.4(&ISHIFT),AL.12(&RNAME-&CSECT)                       52800002
&NRENTS  SETA  &NRENTS+1                                                53100002
         MEND                                                           53400002
         EJECT                                                          53700002
*  LABEL MACRO     LABEL MACRO     LABEL MACRO     LABEL MACRO        * 54000002
         SPACE 2                                                        54300002
         MACRO                                                          54600002
         LABEL &LABEL1,&LABEL2,&LABEL3,&LABEL4,&LABEL5,&LABEL6,        C54900002
               &LABEL7,&LABEL8                                          55200002
.*                            THIS MACRO ALLOWS UP TO ACHT LABELS TO    55500002
.*                                 BE SPECIFIED FOR A GIVEN LINE. THE   55800002
.*                                 LABELS SHOULD BE ENCLOSED IN QUOTA-  56100002
.*                                 TION MARKS. THE COLUMN AND LINE END  56400002
.*                                 CONTROLS WILL BE INSERTED BY THE     56700002
.*                                 MACRO. OMITTED OPERANDS MEAN NO      57000002
.*                                 LABEL REQUIRED FOR RESPECTIVE        57300002
.*                                 COLUMN. THIS MACRO WILL ALSO ALERT   57600002
.*                                 THE PROGRAMMER TO EXACTLY WHERE THE  57900002
.*                                 TABLE MUST BE BROKEN IF NECESSARY    58200002
.*                                 TO AVOID EXCEEDING THE MAXIMUM LIMIT 58500002
         GBLC &LABELS(1000)                                             58800002
         GBLA  &LABELNR                                                 59100002
         GBLA  &NRENTS                                                  59400002
         LCLC  &MARGIN,&TACK                                            59700002
         LCLC  &TEXT                                                    60000002
         LCLA  &OP,&K,&START,&NRCHAR,&REMAIN                            60300002
&MARGIN  SETC  '*'                                                      60600002
.LOOPOUT ANOP                                                           60900002
&OP      SETA  &OP+1                                                    61200002
&K       SETA  K'&SYSLIST(&OP)                                          61500002
         AIF (&K GE 2).NORM                                             61800002
&K       SETA  2                                                        62100002
.NORM    ANOP                                                           62400002
&START   SETA  2                                                        62700002
         AIF (&OP LT N'&SYSLIST).NOTLAST                                63000002
&MARGIN  SETC  '$'                                                      63300002
.NOTLAST ANOP                                                           63600002
&NRCHAR  SETA  8                                                        63900002
&TACK    SETC  ''                                                       64200002
.LOOPIN  ANOP                                                           64500002
&REMAIN  SETA  &K-&START                                                64800002
         AIF (&REMAIN GE 8).MORE                                        65100002
&TACK    SETC  '&MARGIN'                                                65400002
&NRCHAR  SETA  &REMAIN                                                  65700002
.MORE    ANOP                                                           66000002
&TEXT    SETC  ''                                                       66300002
         AIF (&REMAIN EQ 0).ENDTEXT                                     66600002
&TEXT    SETC  '&SYSLIST(&OP)'(&START,&NRCHAR)                          66900002
.ENDTEXT ANOP                                                           67200002
&LABELNR SETA  &LABELNR+1                                               67500002
&LABELS(&LABELNR) SETC '&TEXT'.'&TACK'                                  67800002
&START   SETA  &START+8                                                 68100002
         AIF ('&TACK' EQ '').LOOPIN                                     68400002
         AIF ('&TACK' EQ '*').LOOPOUT                                   68700002
         MEND                                                           69000002
         EJECT                                                          69300002
         MACRO                                                          69600002
         LSTART                                                         69900002
.*                            THIS MACRO IS ISSUED WHEN THE LABEL AREA  70200002
.*                                 OF THE TABLE IS TO BEGIN.            70500002
         GBLC &LABELS(1000)                                             70800002
         GBLA  &LABELNR                                                 71100002
         LCLA  &NDX                                                     71400002
         LINEND                                                         71700002
.LOOP    ANOP                                                           72000002
&NDX     SETA  &NDX+1                                                   72300002
         DC    C'&LABELS(&NDX)'                                         72600002
         AIF   (&NDX LT &LABELNR).LOOP                                  72900002
         MEND                                                           73200002
         EJECT                                                          73500002
         MACRO                                                          73800002
         LINEND                                                         74100002
.*                            THIS MACRO IS USED ONLY BY THE LINE       74400002
.*                                 MACRO TO SET THE NUMBER OF ENTRIES   74700002
.*                                 ASSOCIATED WITH EACH LINE.           75000002
         GBLA  &NRENTS                                                  75300002
         GBLC &NRENTSX                                                  75600002
         ORG   &NRENTSX                                                 75900002
         DC    FL1'&NRENTS'                                             76200002
         ORG                                                            76500002
&NRENTS  SETA  0                                                        76800002
B&SYSNDX EQU   *                                                        77100002
&NRENTSX SETC  'B&SYSNDX'                                               77400002
         MEND                                                           77700002
         EJECT                                                 @Z40RSVS 78000002
         GBLC  &DSECT,&CSECT                                   @Z40RSVS 78300002
         SPACE 2                                               @Z40RSVS 78600002
IFCET001 CSECT                                                 @Z40RSVS 78900002
&CSECT   SETC  'IFCET001'                                      @Z40RSVS 79200002
&DSECT   SETC  'MT001'                                         @Z40RSVS 79500002
*                                                              @Z40RSVS 79800002
MT001    DSECT                                                 @Z40RSVS 80100002
         DSGEN (CLASRC,8),(DUMMY,24)                           @Z40RSVS 80400002
IFCET001 CSECT                                                 @Z40RSVS 80700002
         USING *,R9                                            @Z40RSVS 81000002
R4       EQU   4                                               @Z40RSVS 81300002
R9       EQU   9                                               @Z40RSVS 81600002
R14      EQU   14                                              @Z40RSVS 81900002
R15      EQU   15                                              @Z40RSVS 82200002
L0       EQU   0                                               @Z40RSVS 82500002
H30      EQU   X'30'                                           @Z40RSVS 82800002
*                                                              @Z40RSVS 83100002
         DC    A(ENTRIES)                                      @Z40RSVS 83400002
         DC    CL8'IFCET001'                                   @Z40RSVS 83700002
XR9PTR   DC    F'0'                                            @Z40RSVS 84000002
XLABELP  DC    F'0'                                            @Z40RSVS 84300002
**                                                             @Z40RSVS 84600002
**       THIS ROUTINE CHECKS FOR TPR RECORDS AND EXITS         @Z40RSVS 84900002
**                                                             @Z40RSVS 85200002
TESTMOD  TM    L0(R4),H30          IS THIS AN OBR OR TPER      @Z40RSVS 85500002
         BNO   TYPTPR              BRANCH IF TPER              @ZA01049 85800002
         MVC   XR9PTR,OBR3330                                  @ZA01049 86000002
TYPTPR   SR    R15,R15                                         @ZA01049 86200002
         BR    R14                 EXIT                        @Z40RSVS 86400002
OBR3330  DC    A(OBRRTN-4)                                     @ZA01049 86470002
OBRRTN   DC    X'FE'                                           @ZA01049 86540002
         DC    C'IFCE2009'                                     @XA17529 86610060
*                                                              @Z40RSVS 86700002
ENTRIES  DS    0F                                              @Z40RSVS 87000002
         DC    XL4'00010001'       FORMAT 1                    @Z40RSVS 87300002
         DC    XL4'00010001'       FORMAT 2                    @Z40RSVS 87600002
         DC    A(LABELS)           LABEL POINTER               @Z40RSVS 87900002
         DC    H'0'                DISP                        @Z40RSVS 88200002
         LINE                                                           88500002
         ROUTINE CLASRC,TESTMOD    TEST FOR TPER OR OBR        @Z40RSVS 88800002
         LABEL ' '                                             @Z40RSVS 89100002
         DC    XL1'FF'                                         @Z40RSVS 89400002
         DC    XL2'0000'                                       @Z40RSVS 89700002
         DC    XL2'0000'                                       @Z40RSVS 90000002
         DC    XL2'0000'                                       @Z40RSVS 90300002
LABELS   DS    0F                                              @Z40RSVS 90600002
         DC    C'$'                                            @Z40RSVS 90900002
         LSTART                                                         91200002
         END                                                            91500002
