         MACRO                                                          00020000
         IHB01 &DSORG,&MACRF,&BFTEK,&BFALN,&EODAD,&RECFM,&EXLST,       *00040000
               &BUFCB,&BUFL,&IOBAD,&EOEA,&PCIA,&SIOA,&CENDA,&XENDA,    *00060000
               &AERR,&PGFX,&OPTCD,&BUFNO,&DEVD,&REPOS                   00070000
.*  THIS MACRO CHECKS DSORG, MACRF, RECFM, OPTCD, & DEVD FOR DCB MACRO  00090018
.*                                                                      00100000
.*                      SET SYMBOL DECLARATIONS                         00120000
.*                                                                      00140000
         GBLA  &A0                                                      00160000
         GBLB  &DSORG0,&DSORG1,&DSORG2,&DSORG3,&DSORG4,&DSORG5,&DSORG6  00180000
         GBLB  &DSORG7,&MACRF0,&MACRF1,&MACRF2,&MACRF3,&MACRF4,&MACRF5  00200000
         GBLB  &MACRF6,&MACRF7,&MACRF8,&MACRF9,&MACRFA,&MACRFB,&MACRFC  00220000
         GBLB  &MACRFD,&MACRFE,&MACRFF,&MAC5,&MAC6,&MAC7,&FXSW,&RECFM0  00240000
         GBLB  &RECFM1,&RECFM2,&RECFM3,&RECFM4,&RECFM5,&RECFM6,&RECFM7  00260000
         GBLB  &OPTCD0,&OPTCD1,&OPTCD2,&OPTCD3,&OPTCD4,&OPTCD6,&OPTCD7  00280000
         GBLB  &COMSW,&MAC4,&DSORG8,&OPTCD5                        RER1 00300017
         GBLB  &DSORG9,&DSORGA                                          00310020
         LCLA  &A1,&A3                                                  00320000
         LCLC  &C0,&C1,&C2                                              00340000
.*                                                                      00346020
.* ******************************************************************** 00356037
.*                                                                      00356137
.*         OS/VS2  RELEASE 3.8 MAINTAINANCE                             00356237
.*                                                                      00356337
.*C(035510),A(035515),C(035520),A(035525),C(035870)            @ZA44457 00356437
.*A(035875),C(035880),A(035895),C(035940)                      @ZA44457 00356537
.*C(059100)                                                    @ZA53118 00356600
.*                                                                      00356737
.*                                                                      00356800
.* ******************************************************************** 00356900
.*                                                                      00357000
.*         OS/VS2  POST RELEASE 3.0 MAINTAINANCE                        00357100
.*         OS/VS2       RELEASE 3.7 MAINTAINANCE                        00357200
.*                                                                      00357537
.*0000003520-003640,012800-013000,016800-017000,026500-026600, @ZA02213 00358037
.*0000049060,058300-058400,059400,060400,066200                @ZA02213 00360037
.*0000065660,065720                                            @ZA07595 00362037
.*0000                                                         @ZA21103 00362537
.*C(035500),A(035510-035990),C(036000),A(036010-036040)        @ZA40451 00364037
.*C(035510),A(035515),C(035520),A(035525),C(035870)            @ZA44457 00368937
.*A(035875),C(035880),A(035895),C(035940)                      @ZA44457 00373837
.*                                                                      00379037
.* ******************************************************************** 00381537
.*                                                                      00384037
.*         OS/VS2  RELEASE 2.0 MAINTAINANCE                             00386537
.*                                                               S20038 00389037
.*                                                               S20002 00391537
.*                                                                      00394037
.* ******************************************************************** 00396537
&MACRF0  SETB  0                       ZERO SWITCHES                    00400000
&MACRF1  SETB  0                                                        00420000
&MACRF2  SETB  0                                                        00440000
&MACRF3  SETB  0                                                        00460000
&MACRF4  SETB  0                                                        00480000
&MACRF5  SETB  0                                                        00500000
&MACRF6  SETB  0                                                        00520000
&MACRF7  SETB  0                                                        00540000
&MACRF8  SETB  0                                                        00560000
&MACRF9  SETB  0                                                        00580000
&MACRFA  SETB  0                                                        00600000
&MACRFB  SETB  0                                                        00620000
&MACRFC  SETB  0                                                        00640000
&MACRFD  SETB  0                                                        00660000
&MACRFE  SETB  0                                                        00680000
&MACRFF  SETB  0                                                        00700000
&MAC4    SETB  0                                                        00720000
&MAC5    SETB  0                                                        00740000
&MAC6    SETB  0                                                        00760000
&MAC7    SETB  0                                                        00780000
&FXSW    SETB  0                                                        00800000
&COMSW   SETB  0                                                        00820000
.*                                                                      00840000
.*                      ANALYZE DSORG OPERAND                           00860000
.*                                                                      00880000
&DSORG0  SETB  0                       ZERO SWITCHES                    00900000
&DSORG1  SETB  0                                                        00920000
&DSORG2  SETB  0                                                        00940000
&DSORG3  SETB  0                                                        00960000
&DSORG4  SETB  0                                                        00980000
&DSORG5  SETB  0                                                        01000000
&DSORG6  SETB  0                                                        01020000
&DSORG7  SETB  0                                                        01040000
&DSORG8  SETB  0                                                        01060000
&DSORG9  SETB  0                        TEST TCAM                       01066020
&DSORGA  SETB  0                        TEST TCAM                       01072020
         AIF   (T'&DSORG NE 'O').DSORGB  IF DSORG CODED                 01080000
         AIF   (T'&MACRF EQ 'O').DSORGA  IF MACRF NOT CODED             01100000
         AIF   ('&MACRF(1)' EQ 'E').DSORGX  IF EXCP ACCESS              01120000
.DSORGA  IHBERMAC 158                  DSORG OMITTED                    01140018
         MEXIT                                                          01160000
.*                                                                      01180000
.*                 TEST VALIDITY OF DSORG                               01200000
.DSORGB  AIF   (K'&DSORG LT 2).DSORGD  ALL VALID CODES ARE 2 OR 3       01220000
&C0      SETC  '&DSORG'(1,2)           ISOLATE 1ST TWO CHAR OF CODE     01240000
         AIF   ('&C0' EQ 'IS' OR '&C0' EQ 'PS' OR '&C0' EQ 'DA' OR '&C0*01260000
               ' EQ 'CX' OR '&C0' EQ 'PO' OR '&C0' EQ 'GS').DSORGE      01270037
.*                                                             @ZA02213 01280037
         AIF   ('&C0' EQ 'TX' OR '&C0' EQ 'TQ').DSORGE    IF TCAM       01310020
.DSORGD  IHBERMAC 159,,&C0             INVALID CODE FOR DSORG           01320018
         MEXIT                                                          01340000
.DSORGE  ANOP                                                           01360000
&FXSW    SETB  1                                                        01380000
&COMSW   SETB  1                                                        01400000
         AIF   (K'&DSORG LT 3).DSORGG  IF NO QUALIFIER                  01420000
&C1      SETC  '&DSORG'(3,1)           ISOLATE QUALIFIER                01440000
         AIF   ('&C1' NE 'U').DSORGF   IF INVALID QUALIFIER             01460000
&DSORG7  SETB  1                       SET QUALIFIER SWITCH             01480000
         AGO   .DSORGG                 TO ANALYZE PRIMARY CODE          01500000
.*                                                                      01520000
.DSORGF  IHBERMAC 160,,&C1             INVALID DSORG QUALIFIER-IGNORED  01540018
.*                                                                      01560000
.DSORGG  ANOP                                                           01580000
&DSORG0  SETB  ('&C0' EQ 'IS')         TEST INDEXED SEQUENTIAL          01600000
&DSORG1  SETB  ('&C0' EQ 'PS')         TEST PHYSICAL SEQENTIAL          01620000
&DSORG2  SETB  ('&C0' EQ 'DA')         TEST DIRECT ACCESS               01640000
&DSORG3  SETB  ('&C0' EQ 'CX')         TEST COMM. LINE GROUP            01660000
&DSORG6  SETB  ('&C0' EQ 'PO')         TEST PARTITIONED                 01720000
&DSORG8  SETB  ('&C0' EQ 'GS')          TEST FOR GRAPHICS               01740000
&DSORG9  SETB  ('&C0' EQ 'TX')                                          01746020
&DSORGA  SETB  ('&C0' EQ 'TQ')                                          01752020
.DSORGX  ANOP                                                           01760000
.*--------------------------------------------------------------------- 01770018
.*                                                                      01780000
.*                      ANALYZE MACRF OPERAND                           01800000
.*                                                                      01820000
         AIF   (T'&MACRF NE 'O').MACRFA IF MACRF SPECIFIED              01840000
         IHBERMAC 161                  MACRF NOT SPECIFIED-EXCP ASSUMED 01860018
         AGO   .MACRFC                 TO EXCP ANALYSIS                 01880000
.MACRFA  ANOP                                                           01900000
&A3      SETA  0                       RESET SUBLIST ITEM INDEX         01910018
.*                                                                      01920018
.MACRFB  ANOP                          START OF LOOP ON ITEM INDEX      01930018
&A3      SETA  &A3+1                   STEP ITEM INDEX                  01940018
         AIF   (&A3 GT N'&MACRF).MACRFX  IF ALL ITEMS ANALYZED          01950018
         AIF   (K'&MACRF(&A3) EQ 0).MACRFB IF SUBLIST ITEM NULL         01960018
&C0      SETC  '&MACRF(&A3)'           ISOLATE SUBLIST ITEM             01970018
&A1      SETA  1                       INITIALIZE QUALIFIER POINTER     01980018
&C1      SETC  '&C0'(1,1)              ISOLATE MAJOR MACRO TYPE CODE    02020000
         AIF   ('&C1' NE 'E').MACRFD   TEST EXCP                        02040000
         AIF   (N'&MACRF EQ 1).MACRFC  EXCP MUST STAND ALONE            02060000
         IHBERMAC 170,,&MACRF          MACRF INVALID-EXCP ASSUMED       02080018
.MACRFC  ANOP                                                           02100000
&MACRF0  SETB  1                       SET EXCP SWITCH                  02120000
&MACRF1  SETB  (T'&BFTEK NE 'O' OR T'&BFALN NE 'O' OR '&EODAD' NE '1' O*02140000
               R T'&RECFM NE 'O' OR '&EXLST' NE '0' OR '&BUFNO' NE '0' *02160000
               OR '&BUFCB' NE '1' OR '&BUFL' NE '0' OR '&IOBAD' NE '1') 02180000
&MACRF1  SETB  (&MACRF1 OR T'&DEVD NE 'O' OR &FXSW OR &COMSW)           02200000
&MACRF1  SETB  (&MACRF1 OR T'&OPTCD NE 'O')                        RER1 02210017
&FXSW    SETB  (&MACRF1)               EXTENSION REQUIRED               02220000
&MACRF2  SETB  ('&EOEA' NE '0' OR '&PCIA' NE '0' OR '&SIOA' NE '0' OR '*02240000
               &CENDA' NE '0' OR '&XENDA' NE '0' OR '&AERR' NE '0')     02260000
&MACRF2  SETB  (&MACRF2 OR T'&OPTCD NE 'O')                        RER1 02270017
.*                                                                      02280000
&MACRF3  SETB  ('&BUFNO' NE '0' OR '&BUFCB' NE '1' OR '&BUFL' NE '0' OR*02300000
                '&IOBAD' NE '1' OR &FXSW OR &COMSW)                     02320000
&COMSW   SETB  (&MACRF3)                                                02340000
&MACRF4  SETB  0                                                        02360000
         AIF   ('&REPOS' NE 'Y').MACRFC6                                02370019
&MACRF5  SETB  1                                                        02380019
.MACRFC6 ANOP                                                           02390019
&MACRF6  SETB  0                                                        02400000
         AIF   ('&PGFX' EQ 'NO').MACRFC7                                02404000
         AIF   ('&PGFX' EQ 'YES' AND '&SIOA' EQ '0').MACRFC7            02408000
&MACRF6  SETB  1                        INDICATE USER PAGE FIX ROUTINE  02412000
.MACRFC7 ANOP                                                           02416000
&MACRF7  SETB  0                                                        02420000
&MACRF8  SETB  0                                                        02440000
&MACRF9  SETB  0                                                        02460000
&MACRFA  SETB  0                                                        02480000
&MACRFB  SETB  0                                                        02500000
&MACRFC  SETB  0                                                        02520000
&MACRFD  SETB  0                                                        02540000
&MACRFE  SETB  0                                                        02560000
&MACRFF  SETB  0                                                        02580000
         AGO   .MACRFX                 SKIP TO RECFM ANALYSIS           02620000
.*                                                                      02630018
.MACRFD  AIF   (('&C1' EQ 'G' OR '&C1' EQ 'P') AND (&DSORG0 OR &DSORG1 *02640000
               OR &DSORG3 OR &DSORG9 OR &DSORGA)).MACRGA  IF VALID G/P  02650037
.*                                                             @ZA02213 02660037
         AIF   (('&C1' EQ 'R' OR '&C1' EQ 'W') AND (&DSORG0 OR &DSORG1 *02680000
               OR &DSORG2 OR &DSORG3 OR &DSORG6 OR &DSORG8 OR &DSORG9 O*02690020
               R &DSORGA)).MACRFE IF VALID R/W                          02700020
         AIF   ('&C1' EQ 'S' AND &DSORG0).MACRSA  IF VALID S            02710018
         IHBERMAC 162,,&C0,&DSORG      MACRF INVALID WITH DSORG         02720018
         AGO   .MACRFB                 TO ADVANCE TO NEXT ELEMENT       02730018
.*                                                                      02740018
.*  MACRF=R/W ANALYSIS FOR BDAM, BPAM, BSAM, BISAM, BTAM, AND GRAPHICS  02750018
.*                                                                      02780000
.MACRFE  ANOP                          SET BIT FOR MAJOR MACRO TYPE     02800000
&MACRF2  SETB  ('&C1' EQ 'R' OR &MACRF2) READ                           02840000
&MACRFA  SETB  ('&C1' EQ 'W' OR &MACRFA) WRITE                          02900000
.*                                                                      02920000
         AIF   (K'&MACRF(&A3) GT 1).MACRFT  TO START R/W QUALIFIER LOOP 02930018
         AIF   ((&DSORG0 AND '&C1' EQ 'R') OR &DSORG1 OR &DSORG3 OR    *02940018
               &DSORG6 OR &DSORG8 OR &DSORG9).MACRFB                    02950020
&C2      SETC  ''                      SET NULL FOR ERROR MESSAGE       02960018
.*                                                                      02970018
.MACRFS  IHBERMAC 163,,&C2,&C1,&DSORG  INVALID QUALIFIER FOR R/W MACRF  02980018
.*                                                                      02990018
.MACRFT  ANOP                          LOOP ON MACRF ITEM QUALIFIERS    03000018
&A1      SETA  &A1+1                   STEP QUALIFIER INDEX             03010018
         AIF   (K'&MACRF(&A3) LT &A1).MACRFB  IF NO MORE QUALIFIERS     03020018
&C2      SETC  '&C0'(&A1,1)            ISOLATE QUALIFIER                03120000
.*                                                                      03280000
         AIF   ('&C2' NE 'K').MACRFI   IF NOT KEY REFERENCE             03300018
         AIF   (NOT &DSORG2).MACRFS    VALID FOR DA                     03320018
&MACRF3  SETB  (&MACRF3 OR '&C1' EQ 'R')  IF K QUALIFIES READ           03340018
&MACRFB  SETB  (&MACRFB OR '&C1' EQ 'W')  IF K QUALIFIES WRITE          03360018
         AGO   .MACRFT                 TO  BEGIN NEW LOOP               03440000
.*                                                                      03460000
.MACRFI  AIF   ('&C2' NE 'L').MACRFJ   IF NOT BSAM LOAD BDAM MODE       03490018
         AIF   (NOT(&DSORG1 AND '&C1' EQ 'W')).MACRFS  VALID PS WRITE   03520018
         AIF   ('&DSORG' EQ 'PS').MACRFIB YES-BDAM CREATE      @ZA40451 03550037
         AIF   ('&DSORG' EQ 'PSU').MACRFIB YES-BDAM CREATE     @ZA44457 03551037
         AGO   .MACRFIY                DSORG NOT EQUAL TO      @ZA44457 03551537
.*                                     PS OR TO PSU, NOT VALID @ZA44457 03552037
.*                                     WITH MACRF=WL.          @ZA44457 03552537
.* **********************                                      @ZA40451 03553037
.MACRFIB ANOP                                                  @ZA40451 03554037
         AIF   ('&A3' NE '1' AND '&C2' EQ 'L').MACRFIW         @ZA40451 03555037
.*                                     ONLY ONE 'L' ALLOWED.   @ZA40451 03556037
.*                                                             @ZA40451 03557037
&MACRFC  SETB  1                       L QUALIFIES WRITE                03558037
.*                                                             @ZA40451 03559037
.MACRFIC ANOP                                                  @ZA40451 03560037
.*                                                             @ZA40451 03561037
&A1      SETA  &A1+1                   STEP QUALIFIER INDEX    @ZA40451 03562037
         AIF   (K'&MACRF(&A3) LT &A1).MACRFIX EXIT-IF NO MORE  @ZA40451 03563037
.*                                            QUALIFIERS.      @ZA40451 03564037
&C2      SETC  '&C0'(&A1,1)            ISOLATE QUALIFIER.      @ZA40451 03565037
         IHBERMAC 163,,&C2,&MACRF,&DSORG ANY OTHER QUALIFIERS  @ZA40451 03566037
.*                                     NOT VALID WITH MACRF=WL @ZA40451 03567037
.*                                     IGNORE THEM.            @ZA40451 03568037
         AGO   .MACRFIB                CHECK FOR MORE          @ZA40451 03569037
.*                                     QUALIFIERS.             @ZA40451 03570037
.* ***********************                                     @ZA40451 03571037
.MACRFIX ANOP                          CHECK, MORE OPERANDS.   @ZA40451 03572037
&A3      SETA  &A3+1                   STEP ITEM INDEX.        @ZA40451 03573037
         AIF   (&A3 GT N'&MACRF).MACRFX EXIT IF ALL ITEMS      @ZA40451 03574037
.*                                      ANALYZED.              @ZA40451 03575037
         AIF   (K'&MACRF(&A3) EQ 0).MACRFX EXIT IF SUBLIST     @ZA40451 03576037
.*                                         IS NULL.            @ZA40451 03577037
.* *********************                                       @ZA40451 03578037
.*                                     IF SUBLIST IS NOT NULL  @ZA40451 03579037
.*                                     IGNORE MSG WILL BE      @ZA40451 03580037
.*                                     ISSUED.                 @ZA40451 03581037
&C0      SETC  '&MACRF(&A3)'           GET SUBLIST ITEM.       @ZA40451 03582037
&A1      SETA  0                       INITIALIZE QUALIFIER    @ZA40451 03583037
.*                                     POINTER.                @ZA40451 03584037
&C1      SETC  '&C0'(1,1)              GET MAJOR OPERAND       @ZA40451 03585037
.*                                     TYPE CODE.              @ZA40451 03586037
         AIF   ('&C1' EQ 'L' AND '&A3' EQ '2').MACRFIX         @ZA44457 03587037
.*                                     AVOID UNECESSARY MSG.   @ZA44457 03587537
.*                                     &A3 IS POINTING AT THE  @ZA44457 03588037
.*                                     L OF WL IN MACRF.       @ZA44457 03588537
         IHBERMAC 171                  MSG-INCONSISTENT        @ZA40451 03589037
.*                                     OPERAND-FOR SECOND      @ZA40451 03589537
.*                                     OPERAND.                @ZA40451 03590037
         AGO   .MACRFIC                CHECK FOR QUALIFIERS.   @ZA44457 03590537
.* *********************                                       @ZA40451 03591037
.MACRFIY ANOP                                                  @ZA40451 03592037
         IHBERMAC 162,,&C2,&DSORG     'L' OF MACRF INVALID     @ZA40451 03593037
.*                                     IF DSORG NOT PS OR PSU. @ZA44457 03594037
         MEXIT                                                 @ZA40451 03595037
.* *********************                                       @ZA40451 03596037
.MACRFIW ANOP                                                  @ZA40451 03597037
         IHBERMAC 171                 MSG=INCONSISTENT         @ZA40451 03598037
.*                                        OPERAND.             @ZA40451 03599037
         IHBERMAC 162,,&C2,&DSORG     'L' OF MACRF INVALID     @ZA40451 03600037
.*                                    IF NOT FIRST 'L'.        @ZA40451 03601037
         AGO   .MACRFIC                                        @ZA40451 03602037
.* *********************                                       @ZA40451 03603037
.*                                                             @ZA40451 03604037
.*                                                                      03620000
.MACRFJ  AIF   ('&C2' NE 'I').MACRFK   IF NOT ID REFERENCE              03640000
         AIF   (NOT &DSORG2).MACRFS    VALID FOR DA                     03680018
&MACRF4  SETB  (&MACRF4 OR '&C1' EQ 'R') I QUALIFIES READ               03720000
&MACRFC  SETB  (&MACRFC OR '&C1' EQ 'W') I QUALIFIES WRITE              03740000
         AGO   .MACRFT                 TO BEGIN NEW LOOP                03780000
.*                                                                      03800000
.MACRFK  AIF   ('&C2' NE 'P').MACRFM   IF NOT NOTE/POINT                03820018
         AIF   (NOT &DSORG1).MACRFS    VALID FOR PS                     03840018
&MACRF5  SETB  (&MACRF5 OR '&C1' EQ 'R') IF P QUALIFIES READ            03880000
&MACRFD  SETB  (&MACRFD OR '&C1' EQ 'W') IF P QUALIFIES WRITE           03900000
         AGO   .MACRFT                 TO BEGIN NEW LOOP                03920000
.*                                                                      04080000
.MACRFM  AIF   ('&C2' NE 'S').MACRFN   IF NOT DYNAMIC BUFFERING         04110018
         AIF   (NOT (&DSORG0 OR &DSORG2)).MACRFS  VALID FOR IS,DA       04140018
         AIF   ('&C1' NE 'R').MACRFS   VALID FOR READ ONLY              04170018
&MACRF5  SETB  1                       S QUALIFIES READ                 04200018
         AGO   .MACRFT                 TO BEGIN NEW LOOP                04260000
.*                                                                      04280000
.MACRFN  AIF   ('&C2' NE 'C').MACRFO   IF NOT CNTRL OR CHECK            04290018
         AIF   (&DSORG0 OR &DSORG2).MACRF6  IF IS,DA CHECK              04300018
         AIF   (NOT(&DSORG1 OR &DSORG8)).MACRFS  VALID FOR PS, GS       04310018
&MACRF6  SETB  (&MACRF6 OR '&C1' EQ 'R')  IF C QUALIFIES READ  CNTRL    04320018
&MACRFE  SETB  (&MACRFE OR '&C1' EQ 'W')  IF C QUALIFIES WRITE CNTRL    04330018
         AGO   .MACRFT                 TO BEGIN NEW LOOP                04340018
.MACRF6  ANOP                          VALID IS,DA CHECK                04350018
&MACRF6  SETB  (&MACRF6 OR &DSORG0)    IF C QUALIFIES IS R/W CHECK      04360018
&MACRF7  SETB  (&MACRF7 OR &DSORG2)    IF C QUALIFIES DA R/W CHECK      04370018
         AGO   .MACRFT                 TO BEGIN NEW LOOP                04380018
.*                                                                      04460000
.MACRFO  AIF   ('&C2' NE 'X').MACRFP   IF NOT EXCLUSIVE LOGIC           04480000
         AIF   (NOT(&DSORG2 AND '&C1' EQ 'R')).MACRFS VALID FOR DA READ 04510018
&MACRF6  SETB  1                       X QUALIFIES READ EXCLUSIVE       04540018
         AGO   .MACRFT                 TO BEGIN NEW LOOP                04570018
.*                                                                      04620000
.MACRFP  AIF   ('&C2' NE 'U').MACRFQ   IF NOT UPDATE MODE               04640000
         AIF   (NOT &DSORG0).MACRFS    VALID IF IS                      04670018
&MAC4    SETB  (&MAC4 OR '&C1' EQ 'R') IF U QUALIFIES READ              04700018
&MAC5    SETB  (&MAC5 OR '&C1' EQ 'W') IF U QUALIFIES WRITE             04740000
         AGO   .MACRFT                 TO BEGIN NEW LOOP                04760000
.*                                                                      04780000
.MACRFQ  AIF   ('&C2' NE 'A').MACRFS   IF NOT ADD MODE                  04800018
         AIF   (NOT (&DSORG0 OR &DSORG2) OR '&C1' NE 'W').MACRFS  IS-DA 04820018
&MACRFE  SETB  (&MACRFE OR &DSORG2)    IF DA WRITE                      04840000
&MAC6    SETB  (&MAC6 OR &DSORG0)      IF IS WRITE                      04860000
         AGO   .MACRFT                 TO BEGIN NEW LOOP                04880000
.*                                                                      04883018
.*  MACRF=G/P ANALYSIS FOR QSAM, QISAM, AND QTAM                        04886018
.*                                                                      04889018
.MACRGA  ANOP                          SET BIT FOR MAJOR MACRO TYPE     04892018
&MACRF1  SETB  ('&C1' EQ 'G' OR &MACRF1) GET                            04895018
&MACRF9  SETB  ('&C1' EQ 'P' OR &MACRF9) PUT                            04898018
.*                                                                      04901018
         AIF   (K'&MACRF(&A3) GT 1).MACRGE  TO START G/P QUALIFIER LOOP 04904018
         AIF   (&DSORG3 OR &DSORGA).MACRFB                     @ZA02213 04906037
         AIF   (&DSORG9).MACRFB                                         04908020
&C2      SETC  ''                      SET NULL FOR ERROR MESSAGE       04910018
.*                                                                      04913018
.MACRGB  IHBERMAC 163,,&C2,&C1,&DSORG  INVALID QUALIFIER FOR G/P MACRF  04916018
.*                                                                      04919018
.MACRGE  ANOP                          LOOP ON MACRF ITEM QUALIFIERS    04922018
&A1      SETA  &A1+1                   STEP QUALIFIER INDEX             04925018
         AIF   (K'&MACRF(&A3) LT &A1).MACRFB  IF NO MORE QUALIFIERS     04928018
&C2      SETC  '&C0'(&A1,1)            ISOLATE QUALIFIER                04931018
.*                                                                      04934018
         AIF   ('&C2' NE 'C').MACRGD   IF NOT CNTRL                     04937018
         AIF   (NOT &DSORG1).MACRGB    VALID FOR PS                     04940018
&MACRF6  SETB  (&MACRF6 OR '&C1' EQ 'G')  IF C QUALIFIES GET            04943018
&MACRFE  SETB  (&MACRFE OR '&C1' EQ 'P')  IF C QUALIFIES PUT            04946018
         AGO   .MACRGE                 TO BEGIN NEW LOOP                04949018
.*                                                                      04952018
.MACRGD  AIF   ('&C2' NE 'D').MACRGL   IF NOT MOVE DATA MODE            04955018
         AIF   (NOT &DSORG1).MACRGB    VALID FOR PS                     04958018
&MACRF3  SETB  (&MACRF3 OR '&C1' EQ 'G')  IF D IMPLIES M FOR GET        04961018
&MACRF7  SETB  (&MACRF7 OR '&C1' EQ 'G')  IF D QUALIFIES GET            04964018
&MACRFB  SETB  (&MACRFB OR '&C1' EQ 'P')  IF D IMPLIES M FOR PUT        04967018
&MACRFF  SETB  (&MACRFF OR '&C1' EQ 'P')  IF D QUALIFIES PUT            04970018
         AGO   .MACRGE                 TO BEGIN NEW LOOP                04973018
.*                                                                      04976018
.MACRGL  AIF   ('&C2' NE 'L').MACRGM   IF NOT LOCATE MODE               04979018
         AIF   (NOT(&DSORG0 OR &DSORG1)).MACRGB  VALID FOR IS-PS        04982018
&MACRF4  SETB  (&MACRF4 OR '&C1' EQ 'G')  IF L QUALIFIES GET            04985018
&MACRFC  SETB  (&MACRFC OR '&C1' EQ 'P')  IF L QUALIFIES PUT            04988018
         AGO   .MACRGE                 TO BEGIN NEW LOOP                04991018
.*                                                                      04994018
.MACRGM  AIF   ('&C2' NE 'M').MACRGT   IF NOT MOVE MODE                 04997018
         AIF   (NOT(&DSORG0 OR &DSORG1)).MACRGB  VALID FOR IS-PS        05000018
&MACRF3  SETB  (&MACRF3 OR '&C1' EQ 'G')  IF M QUALIFIES GET            05003018
&MACRFB  SETB  (&MACRFB OR '&C1' EQ 'P')  IF M QUALIFIES PUT            05006018
         AGO   .MACRGE                 TO BEGIN NEW LOOP                05009018
.*                                                                      05012018
.MACRGT  AIF   ('&C2' NE 'T').MACRGU   IF NOT SUBSTITUTE MODE           05015018
         AIF   (NOT &DSORG1).MACRGB    VALID FOR PS                     05018018
&MACRF5  SETB  (&MACRF5 OR '&C1' EQ 'G')  IF T QUALIFIES GET            05021018
&MACRFD  SETB  (&MACRFD OR '&C1' EQ 'P')  IF T QUALIFIES PUT            05024018
         AGO   .MACRGE                 TO BEGIN NEW LOOP                05027018
.*                                                                      05030018
.MACRGU  AIF   ('&C2' NE 'U').MACRGB   IF NOT UPDATE MODE               05033018
         AIF   (NOT(&DSORG0 AND '&C1' EQ 'P')).MACRGB  VALID FOR IS PUT 05036018
&MACRFD  SETB  1                       U QUALIFIES PUT                  05039018
         AGO   .MACRGE                 TO BEGIN NEW LOOP                05042018
.*                                                                      05045018
.*  MACRF=S ANYALYSIS FOR QISAM                                         05048018
.*                                                                      05051018
.MACRSA  ANOP                          SET BIT FOR MAJOR MACRO TYPE     05054018
&MACRF8  SETB  1                       SETL                             05057018
         AIF   (K'&MACRF(&A3) EQ 1).MACRFB  IF NO QUALIFIER             05060018
&C2      SETC  '&C0'(2,1)              ISOLATE QUALIFIER                05063018
         AIF   (NOT('&C2' EQ 'I' OR '&C2' EQ 'K')).MACRSB  VALID IF I K 05066018
&MACRFE  SETB  (&MACRFE OR '&C2' EQ 'K')  IF K QUALIFIES SETL           05069018
&MACRFF  SETB  (&MACRFF OR '&C2' EQ 'I')  IF I QUALIFIES SETL           05072018
         AIF   (K'&MACRF(&A3) EQ 2).MACRFB  RETURN IF 1 QUALIFIER       05075018
&C2      SETC  '&C0'(3,8)              ISOLATE EXTRA QUALIFIERS         05078018
.MACRSB  IHBERMAC 163,,&C2,S,&DSORG    INVALID QUALIFIER FOR S MACRF    05081018
         AGO   .MACRFB                 RETURN TO BEGIN NEW LOOP         05084018
.*                                                                      05087018
.MACRFX  AIF   (NOT &DSORG6).MACRFY    IF NOT PO                        05090018
&MACRF5  SETB  (&MACRF5 OR &MACRF2)    IF PO, READ  IMPLIES NOTE/POINT  05093018
&MACRFD  SETB  (&MACRFD OR &MACRFA)    IF PO, WRITE IMPLIES NOTE/POINT  05096018
.MACRFY  AIF   (&DSORG8).OPTCDX        IF GRAPHICS, SKIP RECFM + OPTCD  05099018
.*--------------------------------------------------------------------- 05102018
.*                                                                      05140000
.*                      ANALYZE RECFM                                   05160000
.*                                                                      05180000
&RECFM0  SETB  0                                                        05200000
&RECFM1  SETB  0                       ZERO SWITCHES                    05220000
&RECFM2  SETB  0                                                        05240000
&RECFM3  SETB  0                                                        05260000
&RECFM4  SETB  0                                                        05280000
&RECFM5  SETB  0                                                        05300000
&RECFM6  SETB  0                                                        05320000
&RECFM7  SETB  0                                                        05340000
.*                                                                      05360000
&A1      SETA  K'&RECFM                SET NUMBER OF ELEMENTS           05380000
.RECFMA  AIF   (&A1 EQ 0).RECFMX       LOOP RETURN-IF 0, ALL DONE       05400000
&C0      SETC  '&RECFM'(&A1,1)         ISOLATE ELEMENT                  05420000
         AIF   ('&C0' NE 'F').RECFMB   IF NOT FIXED LENGTH              05440000
         AIF   (NOT (&DSORG0 OR &DSORG1 OR &DSORG2 OR &DSORG6 OR &MACRF*05460000
               0)).RECFML              IF VALID CONTEXT                 05480000
&RECFM0  SETB  1                                                        05500000
         AGO   .RECFMK                 TO START NEW LOOP                05520000
.RECFMB  AIF   ('&C0' NE 'V').RECFMC   IF NOT VARIABLE LENGTH           05540000
         AIF   (NOT (&DSORG0 OR &DSORG1 OR &DSORG2 OR &DSORG6 OR &MACRF*05560000
               0)).RECFML              IF VALID CONTEXT                 05580000
&RECFM1  SETB  1                                                        05600000
         AGO   .RECFMK                 TO START NEW LOOP                05620000
.RECFMC  AIF   ('&C0' NE 'U').RECFMD   IF NOT UNKNOWN FORMAT            05640000
         AIF   (NOT (&DSORG1 OR &DSORG2 OR &DSORG6 OR &MACRF0)).RECFML  05660000
&RECFM0  SETB  1                                                        05680000
&RECFM1  SETB  1                                                        05700000
         AGO   .RECFMK                 TO START NEW LOOP                05720000
.RECFMD  AIF   ('&C0' NE 'D').RECFMD1   IF NOT D-FORMAT          S20038 05725020
         AIF   (NOT &DSORG1).RECFML                              S20038 05730020
&RECFM2  SETB  1                        D-FORMAT                 S20038 05735020
         AGO   .RECFMK       TO START NEW LOOP                   S20038 05740020
.RECFMD1 AIF   ('&C0' NE 'B').RECFME    IF NOT BLOCKED RECORDS   S20038 05745020
         AIF   (NOT (&DSORG0 OR &DSORG1 OR &DSORG2 OR &DSORG6 OR &MACRFX05750019
               0)).RECFML          GOTO MNOTE                           05760019
&RECFM3  SETB  1                                                        05780000
         AGO   .RECFMK                 TO START NEW LOOP                05800000
.RECFME  AIF   ('&C0' NE 'S').RECFMF   IF NOT STANDARD RECORDS          05820000
         AIF   (NOT (&DSORG1 OR &DSORG2 OR &DSORG6 OR &MACRF0)).RECFML  05830037
.*                                                             @ZA02213 05840037
&RECFM4  SETB  1                                                        05860000
         AGO   .RECFMK                 TO START NEW LOOP                05880000
.RECFMF  AIF   ('&C0' NE 'A' AND '&C0' NE 'G').RECFMG                   05900000
         AIF   ('&C0' EQ 'A' AND NOT (&DSORG1 OR &DSORG6 OR &MACRF0)).R*05910000
               ECFML                                           @ZA53118 05920000
         AIF   ('&C0' EQ 'G' AND NOT (&MACRF0)).RECFML         @ZA02213 05930037
&RECFM5  SETB  1                                                        05960000
         AGO   .RECFMK                 TO START NEW LOOP                05980000
.RECFMG  AIF   ('&C0' NE 'M' AND '&C0' NE 'R').RECFMI                   06000000
         AIF   ('&C0' EQ 'M' AND NOT (&DSORG1 OR &MACRF0)).RECFML       06020000
         AIF   ('&C0' EQ 'R' AND NOT (&MACRF0)).RECFML         @ZA02213 06030037
&RECFM6  SETB  1                                                        06060000
         AGO   .RECFMK                                                  06080000
.RECFMI  AIF   ('&C0' NE 'T').RECFMJ   IF NOT TRACK OVERFLOW            06100000
         AIF   (NOT (&DSORG0 OR &DSORG1 OR &DSORG2 OR &DSORG6 OR &MACRF*06120000
               0)).RECFML                                               06140000
&RECFM2  SETB  1                                                        06160000
         AGO   .RECFMK                 TO  START NEW LOOP               06180000
.RECFML  IHBERMAC 164,,&C0,&DSORG      RECFM INVALID WITH DSORG         06200018
         AGO   .RECFMK                 TO START NEW LOOP                06220000
.RECFMJ  IHBERMAC 148,RECFM,&C0        INVALID CODE FOR RECFM IGNORED   06240018
.RECFMK  ANOP                                                           06260000
&A1      SETA  &A1-1                   STEP ELEMENT INDEX               06280000
         AGO   .RECFMA                 TO REPEAT LOOP                   06300000
.RECFMX  ANOP                                                           06320000
.*--------------------------------------------------------------------- 06330018
.*                                                                      06340000
.*                      ANALYZE OPTCD                                   06360000
.*                                                                      06380000
&OPTCD0  SETB  0                       ZERO SWITCHES                    06400000
&OPTCD1  SETB  0                                                        06420000
&OPTCD2  SETB  0                                                        06440000
&OPTCD3  SETB  0                                                        06460000
&OPTCD4  SETB  0                                                        06480000
&OPTCD5  SETB  0                                                   RER1 06490017
&OPTCD6  SETB  0                                                        06500000
&OPTCD7  SETB  0                                                        06520000
.*                                                                      06540000
&A1      SETA  K'&OPTCD                SET ELEMENT INDEX                06560000
         AIF  (T'&OPTCD EQ 'O' AND (&DSORG9 OR &DSORGA)).OPTCDX ZA07595 06566037
.OPTCDB  AIF   (&A1 LE 0).OPTCDX       LOOP RETURN-IF 0, ALL DONE       06580000
&C0      SETC  '&OPTCD'(&A1,1)         ISOLATE ELEMENT                  06600000
         AIF   (&DSORG3).OPTCDJ                                @ZA02213 06610037
         AIF   ('&C0' NE 'W').OPTCDA   IF NOT WRITE CHECK               06640000
         AIF   (NOT (&DSORG0 OR &DSORG1 OR &DSORG2 OR &DSORG6)).OPTCDJ  06660000
&OPTCD0  SETB  1                                                        06680000
         AGO   .OPTCDI                 TO START NEW LOOP                06700000
.OPTCDA  AIF   ('&C0' NE 'U').OPTCDC                                    06720000
         AIF   (NOT (&DSORG0 OR &DSORG1)).OPTCDJ                        06740019
&OPTCD1  SETB  1                                                        06760000
         AGO   .OPTCDI                 TO START NEW LOOP                06780000
.OPTCDC  AIF   ('&C0' NE 'C' AND '&C0' NE 'M' AND '&C0' NE 'E').OPTCDD  06800000
         AIF   ('&C0' EQ 'M' AND NOT &DSORG0).OPTCDJ                    06820000
         AIF   ('&C0' EQ 'E' AND NOT &DSORG2).OPTCDJ                    06840000
         AIF   ('&C0' EQ 'C' AND NOT (&DSORG1 OR &DSORG6 OR &DSORGA)).O*06850020
               PTCDJ                                                    06860020
&OPTCD2  SETB  1                                                        06880000
         AGO   .OPTCDI                 TO START NEW LOOP                06900000
.OPTCDD  AIF   ('&C0' NE 'I' AND '&C0' NE 'F' AND '&C0' NE 'O' AND '&C0X06910019
               ' NE 'H').OPTCDE                                         06920019
         AIF   ('&C0' EQ 'I' AND NOT (&DSORG0 OR                       *06940000
               &DSORGA)).OPTCDJ                                  ICB447 06950000
         AIF   ('&C0' EQ 'F' AND NOT &DSORG2).OPTCDJ                    06960000
         AIF   (('&C0' EQ 'O' OR '&C0' EQ 'H') AND NOT &DSORG1).OPTCDJ  06965019
         AIF   ('&C0' EQ 'O' AND NOT &MACRF1).OPTCDL                    06970019
         AIF   ('&C0' EQ 'H' AND NOT &MACRF2).OPTCDL                    06975019
&OPTCD3  SETB  1                                                        06980000
         AGO   .OPTCDI                 TO START NEW LOOP                07000000
.OPTCDE  AIF   ('&C0' NE 'Y' AND '&C0' NE 'A' AND '&C0' NE 'Q').OPTCDF  07020020
         AIF   ('&C0' EQ 'Y' AND NOT &DSORG0).OPTCDJ                    07040000
         AIF   ('&C0' EQ 'A' AND NOT &DSORG2).OPTCDJ                    07060000
         AIF   ('&C0' EQ 'Q' AND (NOT &DSORG1)).OPTCDJ                  07070020
&OPTCD4  SETB  1                                                        07080000
         AGO   .OPTCDI                 TO START NEW LOOP                07100000
.OPTCDF  AIF   ('&C0' NE 'R').OPTCDG                                    07120000
         AIF   (NOT (&DSORG0 OR &DSORG2 OR &DSORGA)).OPTCDJ             07140020
&OPTCD7  SETB  1                                                        07160000
         AGO   .OPTCDI                 TO START NEW LOOP                07180000
.OPTCDG  AIF   ('&C0' NE 'J').OPTCDM    BR IF NOT OPTCD J      @Z40MSKC 07190037
         AIF   (NOT &DSORG1).OPTCDJ     BR IF NOT PHYSICAL SEQ @Z40MSKC 07192037
&OPTCD7  SETB  1                        SET BIT FOR OPTCD=J    @Z40MSKC 07194037
         AGO   .OPTCDI                                         @Z40MSKC 07196037
.OPTCDM  AIF   ('&C0' NE 'L' AND '&C0' NE 'T').OPTCDK                   07200037
         AIF   (NOT (&DSORG0 OR &DSORG1 OR &DSORGA)).OPTCDJ             07220020
&OPTCD6  SETB  1                                                        07240000
         AGO   .OPTCDI                 TO START NEW LOOP                07260000
.OPTCDK  AIF   ('&C0' NE 'Z').OPTCDH                               RER1 07264017
         AIF   (NOT (&DSORG1 OR &MACRF0)).OPTCDJ                   RER1 07268017
&OPTCD5  SETB  1                                                   RER1 07272017
         AGO   .OPTCDI    TO START NEW LOOP.                       RER1 07276017
.OPTCDJ  IHBERMAC 165,,&C0,&DSORG      OPTCD INVALID WITH DSORG         07286018
         AGO   .OPTCDI                 TO START NEW LOOP                07300000
.OPTCDL  IHBERMAC 171                                                   07306019
         AGO   .OPTCDI                                                  07312019
.OPTCDLH ANOP                                                           07314020
&C0      SETC  '&OPTCD'                                                 07316020
.OPTCDH  IHBERMAC 149,OPTCD,&C0        INVALID CODE FOR OPTCD IGNORED   07320018
.*                                                                      07340000
.OPTCDI  ANOP                                                           07360000
&A1      SETA  &A1-1                   STEP ELEMENT INDEX               07380000
         AGO   .OPTCDB                 TO REPEAT LOOP                   07400000
.OPTCDX  ANOP                                                           07420000
.*--------------------------------------------------------------------- 07430018
.*                                                                      07440000
.*                      ANALYZE NEGATIVE ORIGIN OFFSET                  07460000
.*                                                                      07480000
&A0      SETA  0                       ZERO ACCUMULATOR                 07500000
         AIF   ('&DSORG8' EQ '1').ORG3X                                 07520000
         AIF   (NOT (&MACRF0 AND NOT (&MACRF1 OR &MACRF3))).ORG1        07540000
&A0      SETA  40                      SET NEGATIVE OFFSET              07560000
         MEXIT                         RETURN TO OUTER MACRO            07580000
.*                                                                      07600000
.*                 DEVICE DEPENDENT INTERFACE                           07620000
.*                                                                      07640000
.ORG1    AIF   (T'&DEVD EQ 'O').ORG10                                   07650017
         AIF   ('&DEVD' EQ 'LD').ORG10                         @ZA21103 07652037
         AIF   ('&DEVD' EQ 'BS').ORG1A                                  07660017
         AGO   .ORG1B         IF DEVD CODED                             07670017
.ORG10   AIF   (&DSORG1 OR &DSORG6).ORG3W  IF PS OR PO                  07680000
         AIF   (NOT &MACRF0).ORG1A     IF NOT EXCP                      07700000
&A0      SETA  4                       SET NEGATIVE OFFSET FOR DA       07720000
         AGO   .ORG3W                  SKIP TO FINISH                   07740000
.ORG1A   ANOP                                                           07760000
&A0      SETA  16                      SET NEGATIVE OFFSET FOR IS/DA    07780000
         AIF   (&DSORG0 OR &DSORG2).ORG3W IF IS OR DA SKIP TO FINISH    07800000
&A0      SETA  20                      OTHERWISE NO DEVD INTERFACE      07820000
         AGO   .ORG3W                  SKIP TO FINISH                   07840000
.*                                                                      07860000
.ORG1B   AIF   (K'&DEVD NE 2).ORG1G     IF INVALID LENGTH               07870019
         AIF   ('&DEVD' EQ 'WT').ORG1H                                  07890017
         AIF   (NOT (&DSORG1 OR &DSORG6 OR &MACRF0)).ORG1G INVALID CODE 07900019
         AIF   ('&DEVD' NE 'DA').ORG1C IF NOT DA INTERFACE              07920000
         AIF   (&DSORG1 OR &DSORG6).ORG3W  IF PS OR PO                  07940000
&A0      SETA  4                       SET NEGATIVE OFFSET              07960000
         AGO   .ORG3W                  SKIP TO FINISH                   07980000
.*                                                                      08000000
.ORG1C   AIF   (NOT (&DSORG1 OR &MACRF0)).ORG1G  INVALID CODE           08020019
         AIF   ('&DEVD' NE 'TA').ORG1D IF NOT MAGNETIC TAPE INTERFACE   08040000
         AIF   (&DSORG1).ORG3W         IF PS                            08060000
&A0      SETA  4                       SET NEGATIVE OFFSET              08080000
         AGO   .ORG3W                  SKIP TO FINISH                   08100000
.*                                                                      08120000
.ORG1D   AIF   ('&DEVD' NE 'PT').ORG1E IF NOT PAPER TAPE INTERFACE      08140000
&A0      SETA  8                       SET NEGATIVE OFFSET              08160000
         AGO   .ORG3W                  SKIP TO FINISH                   08180000
.*                                                                      08200000
.ORG1E   AIF   ('&DEVD' NE 'RD' AND '&DEVD' NE 'PC' AND '&DEVD' NE 'PR'*08220000
               ).ORG1F                 IF NOT UNIT RECORD INTERFACE     08240000
&A0      SETA  16                      SET NEGATIVE OFFSET              08260000
         AGO   .ORG3W                  SKIP TO FINISH                   08280000
.ORG1F   AIF   ('&DEVD' EQ 'OR' AND &DSORG1).ORG3W                      08290019
.*                                                                      08300000
         AIF   ('&DEVD' EQ 'MR' AND &DSORG1).ORG3W                      08310019
.ORG1G   IHBERMAC 166,,&DEVD,&DSORG                                     08320019
         AGO   .ORG3W                                                   08345017
.ORG1H   ANOP                                                           08350017
&A0      SETA  16                                                       08355017
.ORG3W   AIF   (NOT &MACRF0).ORG3X                                      08360000
&MACRFC  SETB  (&A0 EQ 0)                                               08380000
&MACRFD  SETB  (&A0 EQ 4)                                               08400000
&MACRFE  SETB  (&A0 EQ 8)                                               08420000
&MACRFF  SETB  (&A0 EQ 16)                                              08440000
.ORG3X   MEND                                                           08460000
         END                                                            08510000
