         MACRO                                                          00050002
&NAME    GTRACE &MF=,&ID=,&DATA=,&LNG=,&FID=00,&PAGEIN=NO               00100002
         GBLB  &IHLMGT                                                  00150002
         LCLC  &R                                                       00200002
.*A000000-999999                                                 Y01014 00250002
.*C074333,A073600-074166                                         Y02014 00260002
.*D060000                                                      @ZA06040 00280003
.* TEST TO SEE IF THE MAPPING IS ALREADY EXPANDED                       00300002
         AIF   (&IHLMGT).XPNDED                                         00350002
         IHLMGTRC                                                       00400002
.XPNDED  ANOP                                                           00450002
         CNOP  0,4                                                      00500002
         AIF     ('&NAME' EQ '').GO                                     00550002
&NAME    EQU   *                                                        00600002
.*                                                                      00650002
.* IS THIS THE STANDARD FORM                                            00700002
.*                                                                      00750002
.GO      AIF   ('&MF' EQ '').STAND                                      00800002
.*                                                                      00850002
.* IF NOT THEN IS IT THE LIST FORM                                      00900002
.*                                                                      00950002
         AIF   ('&MF' EQ 'L').LIST                                      01000002
.*                                                                      01050002
.* IF NOT THEN IS IT THE EXECUTE FORM                                   01100002
.*                                                                      01150002
         AIF   ('&MF(1)' EQ 'E').EXEC                                   01200002
.*                                                                      01250002
.* IF NOT THEN STOP EVERYTHING                                          01300002
.*                                                                      01350002
         MNOTE 8,'AHL040  NOT A LEGAL FORM OF THE MACRO. CHECK THE MF=' 01400002
.******* NO CODE GENERATED SO THAT PGM MAY EXECUTE.                     01450002
         MEXIT                                                          01500002
.*                                                                      01550002
.*                                                                      01600002
.* THE STANDARD FORM                                                    01650002
.*                                                                      01700002
.STAND   ANOP                                                           01750002
.*                                                                      01800002
.* FIRST SET UP THE PARMLIST & HAVE REG 1 POINT TO IT                   01850002
.*                                                                      01900002
         BAL   1,*+12      PUT ADD OF PARMLIST IN REG                   01950002
         AIF   ('&LNG' NE '').SLNN                                      02000002
         MNOTE 12,'AHL041  LNG= KEYWORD MISSING.'                       02050002
         MEXIT                                                          02100002
.SLNN    AIF   ('&LNG'(1,1) EQ '(').SREGL                               02150002
         DC    AL2(&LNG)   LENGTH                                       02200002
         AGO   .SNUML                                                   02250002
.SREGL   ANOP                                                           02300002
         DC    AL2(0)     LENGTH                                        02350002
.SNUML   AIF   ('&FID'(1,1) EQ '(').SREGF                               02400002
         DC    AL2(&FID)   FID CODE                                     02450002
         AGO   .SNUMF                                                   02500002
.SREGF   ANOP                                                           02550002
         DC    AL2(0)  FID                                              02600002
.SNUMF   AIF   ('&DATA' NE '').DATAOK                                   02650002
         MNOTE 12,'AHL044  DATA= KEYWORD MISSING.'                      02700002
         MEXIT                                                          02750002
.DATAOK  ANOP                                                           02800002
         DC    AL4(0)   DATA AREA ADDRESS                               02850002
.*                                                                      02900002
.* STORE INTO PARMLIST ANY PARAMETERS IN REGS                           02950002
.*                                                                      03000002
         AIF   ('&LNG'(1,1) NE '(').SLNR                                03050002
&R       SETC  '&LNG'(2,K'&LNG-2)                                       03100002
         STH   &R,0(1)   PUT THE LENGTH IN PARMLIST                     03150002
.SLNR    AIF   ('&FID'(1,1) NE '(').SFNR                                03200002
&R       SETC  '&FID'(2,K'&FID-2)                                       03250002
         STH   &R,2(1)   PUT THE FID IN PARMLIST                        03300002
.*                                                                      03350002
.* GO TO THE EXECUTE FORM FOR THE DATA & ID OPERANDS                    03400002
.*                                                                      03450002
.SFNR    AGO   .DATASET                                                 03500002
.*                                                                      03550002
.*                                                                      03600002
.* THE LIST FORM                                                        03650002
.*                                                                      03700002
.LIST    ANOP                                                           03750002
.FIDOKS  AIF   ('&LNG' EQ '').LLNGN                                     03800002
         DC    AL2(&LNG)   LENGTH                                       03850002
         AGO   .SKIP3                                                   03900002
.LLNGN   ANOP                                                           03950002
         DC    AL2(0)  LENGTH                                           04000002
.SKIP3   ANOP                                                           04050002
         DC    AL2(&FID)   FID CODE                                     04100002
         AIF   ('&DATA' EQ '').LDATAN                                   04150002
         DC    AL4(&DATA)   DATA ADDRESS                                04200002
         MEXIT                                                          04250002
.LDATAN  ANOP                                                           04300002
         DC    AL4(0)  DATA ADDRESS                                     04350002
         MEXIT                                                          04400002
.*                                                                      04450002
.*                                                                      04500002
.* THE EXECUTE FORM                                                     04550002
.*                                                                      04600002
.* DETERMINE HOW THE PARAMETER LIST IN THE MF= OPERAND IS INDICATED     04650002
.*                                                                      04700002
.EXEC    AIF   ('&MF(2)' EQ '(1)').EREGM                                04750002
         AIF   ('&MF(2)' NE '').EMFOK                                   04800002
         MNOTE 12,'AHL045  MF=(E, PARAMETER SPECIFICATION MISSING.'     04850002
         MEXIT                                                          04900002
.EMFOK   ANOP                                                           04950002
         AIF   ('&MF(2)'(1,1) EQ '(').EMFR                              05000002
         LA    1,&MF(2)   PUT PARMLIST ADDRESS IN REG(1)                05050002
         AGO   .EREGM                                                   05100002
.EMFR    ANOP                                                           05150002
         LA    1,0&MF(2)                                                05200002
.*                                                                      05250002
.* IS THE LNG SPECIFIED                                                 05300002
.*                                                                      05350002
.EREGM   AIF   ('&LNG' EQ '').ENULL                                     05400002
         AIF   ('&LNG'(1,1) EQ '(').EREGL                               05450002
         LA    15,&LNG                                                  05500002
         STH   15,0(1)   STORE THE LENGTH IN THE PARMLIST               05550002
         AGO   .ENULL                                                   05600002
.EREGL   ANOP                                                           05650002
&R       SETC  '&LNG'(2,K'&LNG-2)                                       05700002
         STH   &R,0(1)   STORE LNG INTO PARMLIST                        05750002
.*                                                                      05800002
.* HOW IS THE FID SPECIFIED                                             05850002
.*                                                                      05900002
.ENULL   AIF   ('&MF(1)'(1,2) NE 'E').ENULL1                            05921400
         AIF   ('&FID'(1,2) NE '00').ENULL2                             05942800
*                          FID IS DEFAULTED FROM REMOTE LIST.@ZA52286   05964200
         AGO   .SKIP6                                                   05985600
.ENULL2  ANOP                                                           06007000
.ENULL1  AIF   ('&FID'(1,1) EQ '(').EREGF                               06028400
         LA    15,&FID                                                  06050002
         STH   15,2(1)   STORE THE FID INTO THE PARMLIST                06100002
         AGO   .SKIP6                                                   06150002
.EREGF   ANOP                                                           06200002
&R       SETC  '&FID'(2,K'&FID-2)                                       06250002
         STH   &R,2(1)   STORE FID INTO PARMLIST                        06300002
.*                                                                      06350002
.* IS THE DATA ADDRESS SPECIFIED                                        06400002
.*                                                                      06450002
.SKIP6   AIF   ('&DATA' EQ '').ENULD                                    06500002
.DATASET AIF   ('&DATA'(1,1) EQ '(').EREGD                              06550002
         LA    15,&DATA                                                 06600002
         ST    15,4(1)   STORE DATA ADDRESS INTO PARMLIST               06650002
         AGO   .ENULD                                                   06700002
.EREGD   ANOP                                                           06750002
&R       SETC  '&DATA'(2,K'&DATA-2)                                     06800002
         ST    &R,4(1)   STORE DATA ADDRESS INTO PARMLIST               06850002
.ENULD   ANOP                                                           06900002
         AIF   ('&PAGEIN' EQ 'YES').CODE0   @ZA50668                    06925000
         LA    15,4   PUT GTF NOT ACTIVE CODE IN REG(15)                06950000
.CODE0   ANOP                                                           06975000
.*                                                                      07000002
.*  IS THE ID SPECIFIED                                                 07050002
.*                                                                      07100002
         AIF   ('&ID' EQ '').NOEID                                      07150002
.*                                                                      07200002
*                        SET UP HOOK                                    07250002
.*                                                                      07300002
         AIF   ('&PAGEIN' EQ 'YES').CODE1   @ZA50668                    07325000
         MC    &ID,X'0E'             MC INSTRUCTION                     07350002
.CODE1   ANOP                                                           07355000
.*                                                                      07360002
.*              PAGE FAULT HANDLING CODE                                07370002
.*                                                                      07380002
         AIF   ('&PAGEIN' EQ 'YES').CODE                                07390002
         AIF   ('&PAGEIN' EQ 'NO').EXIT                                 07392002
         MNOTE 12,'AHL042  PAGEIN=KEYWORD MISSPECIFIED.'                07394002
         MEXIT                                                          07394402
.CODE    ANOP                                                           07396002
         L    15,4(1)             LOCATE DATA                           07398802
         TM   0(15),X'FF'         REFERENCE FIRST BYTE                  07399202
         AH   15,0(1)             POINT TO END OF DATA                  07399602
         BCTR 15,0                POINT TO LAST BYTE                    07399702
         TM   0(15),X'FF'         REFERENCE LAST BYTE                   07399802
         B    *+6                 REISSUE MC           @ZA50668         07399900
         DC   H'32'               PAGE FAULT RETURN CODE                07416602
         LA   15,4                PUT GTF NOT ACTIVE   @ZA50668         07419900
         MC    &ID,X'0E'             MC INSTRUCTION    @ZA50668         07423200
         CH   15,*-10             PAGE FAULT OCCURRED  @ZA50668         07426500
         BC   8,*-36              YES RETRY            @ZA50668         07429800
.EXIT    MEXIT                                                          07433302
.NOEID   MNOTE 12,'AHL048  ID= KEYWORD MISSING'                         07450002
         MEND                                                           07500002
